From b24e5ce8094334fbd8bd6c8176845d59bad2fe64 Mon Sep 17 00:00:00 2001 From: John Preston Date: Tue, 9 Mar 2021 19:12:37 +0400 Subject: [PATCH] Update API scheme with voice chat links. --- Telegram/Resources/tl/api.tl | 7 +++++-- Telegram/SourceFiles/calls/calls_group_call.cpp | 10 ++++++++-- Telegram/SourceFiles/calls/calls_group_call.h | 1 + 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/Telegram/Resources/tl/api.tl b/Telegram/Resources/tl/api.tl index b7db7bb181..eb7a11d947 100644 --- a/Telegram/Resources/tl/api.tl +++ b/Telegram/Resources/tl/api.tl @@ -1242,6 +1242,8 @@ messages.checkedHistoryImportPeer#a24de717 confirm_text:string = messages.Checke phone.joinAsPeers#afe5623f peers:Vector chats:Vector users:Vector = phone.JoinAsPeers; +phone.exportedGroupCallInvite#204bd158 link:string = phone.ExportedGroupCallInvite; + ---functions--- invokeAfterMsg#cb9f372d {X:Type} msg_id:long query:!X = X; @@ -1614,11 +1616,11 @@ phone.setCallRating#59ead627 flags:# user_initiative:flags.0?true peer:InputPhon phone.saveCallDebug#277add7e peer:InputPhoneCall debug:DataJSON = Bool; phone.sendSignalingData#ff7a9383 peer:InputPhoneCall data:bytes = Bool; phone.createGroupCall#bd3dabe0 peer:InputPeer random_id:int = Updates; -phone.joinGroupCall#3633a5b0 flags:# muted:flags.0?true call:InputGroupCall join_as:InputPeer params:DataJSON = Updates; +phone.joinGroupCall#b132ff7b flags:# muted:flags.0?true call:InputGroupCall join_as:InputPeer invite_hash:flags.1?string params:DataJSON = Updates; phone.leaveGroupCall#500377f9 call:InputGroupCall source:int = Updates; phone.inviteToGroupCall#7b393160 call:InputGroupCall users:Vector = Updates; phone.discardGroupCall#7a777135 call:InputGroupCall = Updates; -phone.toggleGroupCallSettings#74bbb43d flags:# call:InputGroupCall join_muted:flags.0?Bool = Updates; +phone.toggleGroupCallSettings#74bbb43d flags:# reset_invite_hash:flags.1?true call:InputGroupCall join_muted:flags.0?Bool = Updates; phone.getGroupCall#c7cb017 call:InputGroupCall = phone.GroupCall; phone.getGroupParticipants#c558d8ab call:InputGroupCall ids:Vector sources:Vector offset:string limit:int = phone.GroupParticipants; phone.checkGroupCall#b74a7bea call:InputGroupCall source:int = Bool; @@ -1626,6 +1628,7 @@ phone.toggleGroupCallRecord#c02a66d7 flags:# start:flags.0?true call:InputGroupC phone.editGroupCallParticipant#d975eb80 flags:# muted:flags.0?true call:InputGroupCall participant:InputPeer volume:flags.1?int raise_hand:flags.2?Bool = Updates; phone.editGroupCallTitle#1ca6ac0a call:InputGroupCall title:string = Updates; phone.getGroupCallJoinAs#ef7c213a peer:InputPeer = phone.JoinAsPeers; +phone.exportGroupCallInvite#e6aa647f flags:# can_self_unmute:flags.0?true call:InputGroupCall = phone.ExportedGroupCallInvite; langpack.getLangPack#f2f2330a lang_pack:string lang_code:string = LangPackDifference; langpack.getStrings#efea3803 lang_pack:string lang_code:string keys:Vector = Vector; diff --git a/Telegram/SourceFiles/calls/calls_group_call.cpp b/Telegram/SourceFiles/calls/calls_group_call.cpp index 8e589f32d8..05c6a3e489 100644 --- a/Telegram/SourceFiles/calls/calls_group_call.cpp +++ b/Telegram/SourceFiles/calls/calls_group_call.cpp @@ -381,6 +381,10 @@ void GroupCall::join(const MTPInputGroupCall &inputCall) { } void GroupCall::rejoin() { + rejoin(_joinAs); +} + +void GroupCall::rejoin(not_null as) { if (state() != State::Joining && state() != State::Joined && state() != State::Connecting) { @@ -395,6 +399,8 @@ void GroupCall::rejoin() { applyMeInCallLocally(); LOG(("Call Info: Requesting join payload.")); + _joinAs = as; + const auto weak = base::make_weak(this); _instance->emitJoinPayload([=](tgcalls::GroupJoinPayload payload) { crl::on_main(weak, [=, payload = std::move(payload)]{ @@ -429,6 +435,7 @@ void GroupCall::rejoin() { : Flag(0)), inputCall(), _joinAs->input, + MTPstring(), // #TODO calls invite_hash MTP_dataJSON(MTP_bytes(json)) )).done([=](const MTPUpdates &updates) { _mySsrc = ssrc; @@ -581,9 +588,8 @@ void GroupCall::rejoinAs(Group::JoinInfo info) { .wasJoinAs = _joinAs, .nowJoinAs = info.joinAs, }; - _joinAs = info.joinAs; setState(State::Joining); - rejoin(); + rejoin(info.joinAs); _rejoinEvents.fire_copy(event); } diff --git a/Telegram/SourceFiles/calls/calls_group_call.h b/Telegram/SourceFiles/calls/calls_group_call.h index 3f887d5bee..8e30dfb1c1 100644 --- a/Telegram/SourceFiles/calls/calls_group_call.h +++ b/Telegram/SourceFiles/calls/calls_group_call.h @@ -221,6 +221,7 @@ private: void updateInstanceVolumes(); void applyMeInCallLocally(); void rejoin(); + void rejoin(not_null as); void audioLevelsUpdated(const tgcalls::GroupLevelsUpdate &data); void setInstanceConnected(tgcalls::GroupNetworkState networkState);