| 217 | } |
| 218 | |
| 219 | void Instance::startOrJoinGroupCall( |
| 220 | std::shared_ptr<Ui::Show> show, |
| 221 | not_null<PeerData*> peer, |
| 222 | StartGroupCallArgs args) { |
| 223 | confirmLeaveCurrent(show, peer, args, [=](StartGroupCallArgs args) { |
| 224 | using JoinConfirm = Calls::StartGroupCallArgs::JoinConfirm; |
| 225 | const auto context = (args.confirm == JoinConfirm::Always) |
| 226 | ? Group::ChooseJoinAsProcess::Context::JoinWithConfirm |
| 227 | : peer->groupCall() |
| 228 | ? Group::ChooseJoinAsProcess::Context::Join |
| 229 | : args.scheduleNeeded |
| 230 | ? Group::ChooseJoinAsProcess::Context::CreateScheduled |
| 231 | : Group::ChooseJoinAsProcess::Context::Create; |
| 232 | _chooseJoinAs->start(peer, context, show, [=](Group::JoinInfo info) { |
| 233 | const auto call = info.peer->groupCall(); |
| 234 | info.joinHash = args.joinHash; |
| 235 | if (call) { |
| 236 | info.rtmp = call->rtmp(); |
| 237 | } |
| 238 | createGroupCall( |
| 239 | std::move(info), |
| 240 | call ? call->input() : MTP_inputGroupCall({}, {})); |
| 241 | }); |
| 242 | }); |
| 243 | } |
| 244 | |
| 245 | void Instance::startOrJoinConferenceCall(StartConferenceInfo args) { |
| 246 | Expects(args.call || args.show); |
no test coverage detected