2
0
mirror of https://github.com/telegramdesktop/tdesktop synced 2025-08-31 22:46:10 +00:00

PoC conference call creation.

This commit is contained in:
John Preston
2025-03-25 22:38:13 +05:00
parent 5e6c81a98e
commit c80c23e8e8
14 changed files with 363 additions and 38 deletions

View File

@@ -235,16 +235,18 @@ void Instance::startOrJoinConferenceCall(
StartConferenceCallArgs args) {
destroyCurrentCall();
const auto session = &args.call->peer()->session();
auto call = std::make_unique<GroupCall>(
_delegate.get(),
Calls::Group::ConferenceInfo{
.call = args.call,
.call = std::move(args.call),
.e2e = std::move(args.e2e),
.linkSlug = args.linkSlug,
.joinMessageId = args.joinMessageId,
});
const auto raw = call.get();
args.call->peer()->session().account().sessionChanges(
session->account().sessionChanges(
) | rpl::start_with_next([=] {
destroyGroupCall(raw);
}, raw->lifetime());
@@ -547,6 +549,8 @@ void Instance::handleUpdate(
handleGroupCallUpdate(session, update);
}, [&](const MTPDupdateGroupCallParticipants &data) {
handleGroupCallUpdate(session, update);
}, [&](const MTPDupdateGroupCallChainBlocks &data) {
handleGroupCallUpdate(session, update);
}, [](const auto &) {
Unexpected("Update type in Calls::Instance::handleUpdate.");
});
@@ -677,6 +681,12 @@ void Instance::handleGroupCallUpdate(
}, [](const MTPDinputGroupCallSlug &) -> CallId {
Unexpected("slug in Instance::handleGroupCallUpdate");
});
}, [](const MTPDupdateGroupCallChainBlocks &data) {
return data.vcall().match([&](const MTPDinputGroupCall &data) {
return data.vid().v;
}, [](const MTPDinputGroupCallSlug &) -> CallId {
Unexpected("slug in Instance::handleGroupCallUpdate");
});
}, [](const auto &) -> CallId {
Unexpected("Type in Instance::handleGroupCallUpdate.");
});