Added confirm box for stream key revoking from settings of group call.

This commit is contained in:
23rd 2022-02-28 21:16:55 +03:00
parent d49649b3a3
commit 13f1ab7965
3 changed files with 40 additions and 34 deletions

View file

@ -1036,6 +1036,14 @@ QString GroupCall::rtmpKey() const {
return _rtmpKey;
}
void GroupCall::setRtmpUrl(const QString &value) {
_rtmpUrl = value;
}
void GroupCall::setRtmpKey(const QString &value) {
_rtmpKey = value;
}
Data::GroupCall *GroupCall::lookupReal() const {
const auto real = _peer->groupCall();
return (real && real->id() == _id) ? real : nullptr;

View file

@ -239,6 +239,9 @@ public:
[[nodiscard]] QString rtmpUrl() const;
[[nodiscard]] QString rtmpKey() const;
void setRtmpUrl(const QString &value);
void setRtmpKey(const QString &value);
[[nodiscard]] Data::GroupCall *lookupReal() const;
[[nodiscard]] rpl::producer<not_null<Data::GroupCall*>> real() const;

View file

@ -17,7 +17,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "ui/widgets/buttons.h"
#include "ui/widgets/checkbox.h"
#include "ui/widgets/input_fields.h"
#include "ui/widgets/dropdown_menu.h"
#include "ui/widgets/popup_menu.h"
#include "ui/wrap/slide_wrap.h"
#include "ui/text/text_utilities.h"
#include "ui/toasts/common_toasts.h"
@ -630,16 +630,13 @@ void SettingsBox(
}
if (rtmp) {
struct State {
base::unique_qptr<Ui::DropdownMenu> menu;
base::unique_qptr<Ui::PopupMenu> menu;
mtpRequestId requestId;
rpl::event_stream<StartRtmpProcess::Data> data;
};
const auto top = box->addTopButton(st::groupCallMenuToggle);
const auto state = top->lifetime().make_state<State>();
const auto revoke = [=] {
if (state->requestId) {
return;
}
const auto revokeSure = [=] {
const auto session = &peer->session();
state->requestId = session->api().request(
MTPphone_GetGroupCallStreamRtmpUrl(
@ -653,48 +650,46 @@ void SettingsBox(
.key = qs(data.vkey()),
};
});
if (const auto call = weakCall.get()) {
call->setRtmpUrl(data.url);
call->setRtmpKey(data.key);
}
if (!top) {
return;
}
state->requestId = 0;
state->data.fire(std::move(data));
}).fail([=] {
state->requestId = 0;
}).send();
};
const auto revoke = [=] {
if (state->requestId || !top) {
return;
}
box->getDelegate()->show(Ui::MakeConfirmBox({
.text = tr::lng_group_call_rtmp_revoke_sure(),
.confirmed = [=](Fn<void()> &&close) {
revokeSure();
close();
},
.confirmText = tr::lng_group_invite_context_revoke(),
.labelStyle = &st::groupCallBoxLabel,
}));
};
top->setClickedCallback([=] {
state->menu = base::make_unique_q<Ui::DropdownMenu>(
state->menu = base::make_unique_q<Ui::PopupMenu>(
box,
st::groupCallDropdownMenu);
st::groupCallPopupMenu);
state->menu->addAction(
tr::lng_group_call_rtmp_revoke(tr::now),
revoke);
state->menu->moveToRight(
st::groupCallRtmpTopBarMenuPosition.x(),
st::groupCallRtmpTopBarMenuPosition.y());
state->menu->showAnimated(
state->menu->setForcedOrigin(
Ui::PanelAnimation::Origin::TopRight);
const auto raw = state->menu.get();
raw->setHiddenCallback([=] {
raw->deleteLater();
if (state->menu == raw) {
state->menu = nullptr;
if (top) {
top->setForceRippled(false);
}
}
});
raw->setShowStartCallback([=] {
if (state->menu == raw) {
if (top) {
top->setForceRippled(true);
}
}
});
raw->setHideStartCallback([=] {
if (state->menu == raw) {
if (top) {
top->setForceRippled(false);
}
}
});
top->installEventFilter(state->menu);
state->menu->popup(QCursor::pos());
return true;
});