mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-07 07:33:52 +02:00
Allow revoking confcall link.
This commit is contained in:
parent
c507382d19
commit
c972485555
5 changed files with 99 additions and 3 deletions
|
@ -4930,6 +4930,9 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
"lng_confcall_join_button" = "Join Group Call";
|
"lng_confcall_join_button" = "Join Group Call";
|
||||||
"lng_confcall_create_link" = "Create Call Link";
|
"lng_confcall_create_link" = "Create Call Link";
|
||||||
"lng_confcall_create_link_description" = "You can create a link that will allow your friends on Telegram to join the call.";
|
"lng_confcall_create_link_description" = "You can create a link that will allow your friends on Telegram to join the call.";
|
||||||
|
"lng_confcall_link_revoke" = "Revoke link";
|
||||||
|
"lng_confcall_link_revoked_title" = "Link Revoked";
|
||||||
|
"lng_confcall_link_revoked_text" = "A new link has been generated.";
|
||||||
"lng_confcall_link_title" = "Call Link";
|
"lng_confcall_link_title" = "Call Link";
|
||||||
"lng_confcall_link_about" = "Anyone on Telegram can join your call by following the link below.";
|
"lng_confcall_link_about" = "Anyone on Telegram can join your call by following the link below.";
|
||||||
"lng_confcall_link_or" = "or";
|
"lng_confcall_link_or" = "or";
|
||||||
|
|
|
@ -578,6 +578,13 @@ groupCallPopupMenu: PopupMenu(defaultPopupMenu) {
|
||||||
menu: groupCallMenu;
|
menu: groupCallMenu;
|
||||||
animation: groupCallPanelAnimation;
|
animation: groupCallPanelAnimation;
|
||||||
}
|
}
|
||||||
|
groupCallPopupMenuWithIcons: PopupMenu(popupMenuWithIcons) {
|
||||||
|
shadow: groupCallMenuShadow;
|
||||||
|
menu: Menu(groupCallMenu, menuWithIcons) {
|
||||||
|
arrow: icon {{ "menu/submenu_arrow", groupCallMemberNotJoinedStatus }};
|
||||||
|
}
|
||||||
|
animation: groupCallPanelAnimation;
|
||||||
|
}
|
||||||
groupCallPopupMenuWithVolume: PopupMenu(groupCallPopupMenu) {
|
groupCallPopupMenuWithVolume: PopupMenu(groupCallPopupMenu) {
|
||||||
scrollPadding: margins(0px, 3px, 0px, 8px);
|
scrollPadding: margins(0px, 3px, 0px, 8px);
|
||||||
menu: Menu(groupCallMenu) {
|
menu: Menu(groupCallMenu) {
|
||||||
|
@ -1617,3 +1624,15 @@ groupCallInviteLink: SettingsButton(defaultSettingsButton) {
|
||||||
}
|
}
|
||||||
groupCallInviteLinkIcon: icon {{ "info/edit/group_manage_links", mediaviewTextLinkFg }};
|
groupCallInviteLinkIcon: icon {{ "info/edit/group_manage_links", mediaviewTextLinkFg }};
|
||||||
groupCallInviteLinkIconPosition: point(23px, 2px);
|
groupCallInviteLinkIconPosition: point(23px, 2px);
|
||||||
|
|
||||||
|
confcallLinkMenu: IconButton(boxTitleClose) {
|
||||||
|
icon: icon {{ "title_menu_dots", boxTitleCloseFg }};
|
||||||
|
iconOver: icon {{ "title_menu_dots", boxTitleCloseFgOver }};
|
||||||
|
}
|
||||||
|
groupCallLinkMenu: IconButton(confcallLinkMenu) {
|
||||||
|
icon: icon {{ "title_menu_dots", groupCallMemberInactiveIcon }};
|
||||||
|
iconOver: icon {{ "title_menu_dots", groupCallMemberInactiveIcon }};
|
||||||
|
ripple: RippleAnimation(defaultRippleAnimation) {
|
||||||
|
color: groupCallMembersBgOver;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -21,15 +21,19 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
#include "ui/boxes/boost_box.h"
|
#include "ui/boxes/boost_box.h"
|
||||||
#include "ui/widgets/buttons.h"
|
#include "ui/widgets/buttons.h"
|
||||||
#include "ui/widgets/labels.h"
|
#include "ui/widgets/labels.h"
|
||||||
|
#include "ui/widgets/popup_menu.h"
|
||||||
#include "ui/layers/generic_box.h"
|
#include "ui/layers/generic_box.h"
|
||||||
#include "ui/text/text_utilities.h"
|
#include "ui/text/text_utilities.h"
|
||||||
|
#include "ui/toast/toast.h"
|
||||||
#include "ui/painter.h"
|
#include "ui/painter.h"
|
||||||
#include "ui/vertical_list.h"
|
#include "ui/vertical_list.h"
|
||||||
#include "lang/lang_keys.h"
|
#include "lang/lang_keys.h"
|
||||||
#include "main/main_session.h"
|
#include "main/main_session.h"
|
||||||
#include "window/window_session_controller.h"
|
#include "window/window_session_controller.h"
|
||||||
|
#include "styles/style_info.h"
|
||||||
#include "styles/style_layers.h"
|
#include "styles/style_layers.h"
|
||||||
#include "styles/style_media_view.h"
|
#include "styles/style_media_view.h"
|
||||||
|
#include "styles/style_menu_icons.h"
|
||||||
#include "styles/style_calls.h"
|
#include "styles/style_calls.h"
|
||||||
#include "styles/style_chat.h"
|
#include "styles/style_chat.h"
|
||||||
|
|
||||||
|
@ -235,9 +239,12 @@ void ConferenceCallJoinConfirm(
|
||||||
ConferenceCallLinkStyleOverrides DarkConferenceCallLinkStyle() {
|
ConferenceCallLinkStyleOverrides DarkConferenceCallLinkStyle() {
|
||||||
return {
|
return {
|
||||||
.box = &st::groupCallLinkBox,
|
.box = &st::groupCallLinkBox,
|
||||||
|
.menuToggle = &st::groupCallLinkMenu,
|
||||||
|
.menu = &st::groupCallPopupMenuWithIcons,
|
||||||
.close = &st::storiesStealthBoxClose,
|
.close = &st::storiesStealthBoxClose,
|
||||||
.centerLabel = &st::groupCallLinkCenteredText,
|
.centerLabel = &st::groupCallLinkCenteredText,
|
||||||
.linkPreview = &st::groupCallLinkPreview,
|
.linkPreview = &st::groupCallLinkPreview,
|
||||||
|
.contextRevoke = &st::mediaMenuIconRemove,
|
||||||
.shareBox = std::make_shared<ShareBoxStyleOverrides>(
|
.shareBox = std::make_shared<ShareBoxStyleOverrides>(
|
||||||
DarkShareBoxStyle()),
|
DarkShareBoxStyle()),
|
||||||
};
|
};
|
||||||
|
@ -251,6 +258,12 @@ void ShowConferenceCallLinkBox(
|
||||||
const auto st = args.st;
|
const auto st = args.st;
|
||||||
const auto initial = args.initial;
|
const auto initial = args.initial;
|
||||||
show->showBox(Box([=](not_null<Ui::GenericBox*> box) {
|
show->showBox(Box([=](not_null<Ui::GenericBox*> box) {
|
||||||
|
struct State {
|
||||||
|
base::unique_qptr<Ui::PopupMenu> menu;
|
||||||
|
bool resetting = false;
|
||||||
|
};
|
||||||
|
const auto state = box->lifetime().make_state<State>();
|
||||||
|
|
||||||
box->setStyle(st.box
|
box->setStyle(st.box
|
||||||
? *st.box
|
? *st.box
|
||||||
: initial
|
: initial
|
||||||
|
@ -258,9 +271,65 @@ void ShowConferenceCallLinkBox(
|
||||||
: st::confcallLinkBox);
|
: st::confcallLinkBox);
|
||||||
box->setWidth(st::boxWideWidth);
|
box->setWidth(st::boxWideWidth);
|
||||||
box->setNoContentMargin(true);
|
box->setNoContentMargin(true);
|
||||||
box->addTopButton(st.close ? *st.close : st::boxTitleClose, [=] {
|
const auto close = box->addTopButton(
|
||||||
box->closeBox();
|
st.close ? *st.close : st::boxTitleClose,
|
||||||
|
[=] { box->closeBox(); });
|
||||||
|
|
||||||
|
if (!args.initial && call->canManage()) {
|
||||||
|
const auto toggle = Ui::CreateChild<Ui::IconButton>(
|
||||||
|
close->parentWidget(),
|
||||||
|
st.menuToggle ? *st.menuToggle : st::confcallLinkMenu);
|
||||||
|
const auto handler = [=] {
|
||||||
|
if (state->resetting) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
state->resetting = true;
|
||||||
|
using Flag = MTPphone_ToggleGroupCallSettings::Flag;
|
||||||
|
call->session().api().request(
|
||||||
|
MTPphone_ToggleGroupCallSettings(
|
||||||
|
MTP_flags(Flag::f_reset_invite_hash),
|
||||||
|
call->input(),
|
||||||
|
MTPbool()) // join_muted
|
||||||
|
).done([=] {
|
||||||
|
auto copy = args;
|
||||||
|
const auto weak = Ui::MakeWeak(box);
|
||||||
|
copy.finished = [=](QString link) {
|
||||||
|
if (const auto strong = weak.data()) {
|
||||||
|
strong->closeBox();
|
||||||
|
}
|
||||||
|
show->showToast({
|
||||||
|
.title = tr::lng_confcall_link_revoked_title(
|
||||||
|
tr::now),
|
||||||
|
.text = tr::lng_confcall_link_revoked_text(
|
||||||
|
tr::now),
|
||||||
});
|
});
|
||||||
|
};
|
||||||
|
ExportConferenceCallLink(
|
||||||
|
show,
|
||||||
|
call,
|
||||||
|
std::move(copy));
|
||||||
|
}).send();
|
||||||
|
};
|
||||||
|
toggle->setClickedCallback([=] {
|
||||||
|
state->menu = base::make_unique_q<Ui::PopupMenu>(
|
||||||
|
toggle,
|
||||||
|
st.menu ? *st.menu : st::popupMenuWithIcons);
|
||||||
|
state->menu->addAction(
|
||||||
|
tr::lng_confcall_link_revoke(tr::now),
|
||||||
|
handler,
|
||||||
|
(st.contextRevoke
|
||||||
|
? st.contextRevoke
|
||||||
|
: &st::menuIconRemove));
|
||||||
|
state->menu->popup(QCursor::pos());
|
||||||
|
});
|
||||||
|
|
||||||
|
close->geometryValue(
|
||||||
|
) | rpl::start_with_next([=](QRect geometry) {
|
||||||
|
toggle->moveToLeft(
|
||||||
|
geometry.x() - toggle->width(),
|
||||||
|
geometry.y());
|
||||||
|
}, close->lifetime());
|
||||||
|
}
|
||||||
|
|
||||||
box->addRow(
|
box->addRow(
|
||||||
Info::BotStarRef::CreateLinkHeaderIcon(box, &call->session()),
|
Info::BotStarRef::CreateLinkHeaderIcon(box, &call->session()),
|
||||||
|
|
|
@ -18,6 +18,7 @@ struct Box;
|
||||||
struct FlatLabel;
|
struct FlatLabel;
|
||||||
struct IconButton;
|
struct IconButton;
|
||||||
struct InputField;
|
struct InputField;
|
||||||
|
struct PopupMenu;
|
||||||
} // namespace style
|
} // namespace style
|
||||||
|
|
||||||
namespace Data {
|
namespace Data {
|
||||||
|
@ -164,9 +165,12 @@ void ConferenceCallJoinConfirm(
|
||||||
|
|
||||||
struct ConferenceCallLinkStyleOverrides {
|
struct ConferenceCallLinkStyleOverrides {
|
||||||
const style::Box *box = nullptr;
|
const style::Box *box = nullptr;
|
||||||
|
const style::IconButton *menuToggle = nullptr;
|
||||||
|
const style::PopupMenu *menu = nullptr;
|
||||||
const style::IconButton *close = nullptr;
|
const style::IconButton *close = nullptr;
|
||||||
const style::FlatLabel *centerLabel = nullptr;
|
const style::FlatLabel *centerLabel = nullptr;
|
||||||
const style::InputField *linkPreview = nullptr;
|
const style::InputField *linkPreview = nullptr;
|
||||||
|
const style::icon *contextRevoke = nullptr;
|
||||||
std::shared_ptr<ShareBoxStyleOverrides> shareBox;
|
std::shared_ptr<ShareBoxStyleOverrides> shareBox;
|
||||||
};
|
};
|
||||||
[[nodiscard]] ConferenceCallLinkStyleOverrides DarkConferenceCallLinkStyle();
|
[[nodiscard]] ConferenceCallLinkStyleOverrides DarkConferenceCallLinkStyle();
|
||||||
|
|
|
@ -212,6 +212,7 @@ mediaMenuIconArchiveStory: icon {{ "menu/stories_archive", mediaviewMenuFg }};
|
||||||
mediaMenuIconStealthLocked: icon {{ "menu/stealth_locked", mediaviewMenuFg }};
|
mediaMenuIconStealthLocked: icon {{ "menu/stealth_locked", mediaviewMenuFg }};
|
||||||
mediaMenuIconStealth: icon {{ "menu/stealth", mediaviewMenuFg }};
|
mediaMenuIconStealth: icon {{ "menu/stealth", mediaviewMenuFg }};
|
||||||
mediaMenuIconStats: icon {{ "menu/stats", mediaviewMenuFg }};
|
mediaMenuIconStats: icon {{ "menu/stats", mediaviewMenuFg }};
|
||||||
|
mediaMenuIconRemove: icon {{ "menu/remove", mediaviewMenuFg }};
|
||||||
|
|
||||||
mediaMenuIconInfo: icon {{ "menu/info", mediaviewMenuFg }};
|
mediaMenuIconInfo: icon {{ "menu/info", mediaviewMenuFg }};
|
||||||
mediaMenuIconBlock: icon {{ "menu/block", mediaviewMenuFg }};
|
mediaMenuIconBlock: icon {{ "menu/block", mediaviewMenuFg }};
|
||||||
|
|
Loading…
Add table
Reference in a new issue