mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-04-14 05:07:10 +02:00
Update API scheme, disable scheduled paid.
This commit is contained in:
parent
7b7e18e752
commit
ee9d0cfd99
14 changed files with 78 additions and 16 deletions
|
@ -513,9 +513,19 @@ void ShareBox::keyPressEvent(QKeyEvent *e) {
|
|||
|
||||
SendMenu::Details ShareBox::sendMenuDetails() const {
|
||||
const auto selected = _inner->selected();
|
||||
const auto type = ranges::all_of(
|
||||
selected | ranges::views::transform(&Data::Thread::peer),
|
||||
HistoryView::CanScheduleUntilOnline)
|
||||
const auto hasPaid = [&] {
|
||||
for (const auto &thread : selected) {
|
||||
if (thread->peer()->starsPerMessageChecked()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}();
|
||||
const auto type = hasPaid
|
||||
? SendMenu::Type::SilentOnly
|
||||
: ranges::all_of(
|
||||
selected | ranges::views::transform(&Data::Thread::peer),
|
||||
HistoryView::CanScheduleUntilOnline)
|
||||
? SendMenu::Type::ScheduledToUser
|
||||
: (selected.size() == 1 && selected.front()->peer()->isSelf())
|
||||
? SendMenu::Type::Reminder
|
||||
|
|
|
@ -17,6 +17,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
#include "data/data_session.h"
|
||||
#include "iv/iv_instance.h"
|
||||
#include "ui/text/text_custom_emoji.h"
|
||||
#include "ui/text/text_utilities.h"
|
||||
#include "ui/basic_click_handlers.h"
|
||||
#include "ui/emoji_config.h"
|
||||
#include "lang/lang_keys.h"
|
||||
|
@ -275,6 +276,9 @@ bool UiIntegration::copyPreOnClick(const QVariant &context) {
|
|||
std::unique_ptr<Ui::Text::CustomEmoji> UiIntegration::createCustomEmoji(
|
||||
QStringView data,
|
||||
const std::any &context) {
|
||||
if (auto simple = Ui::Text::TryMakeSimpleEmoji(data)) {
|
||||
return simple;
|
||||
}
|
||||
const auto my = std::any_cast<MarkedTextContext>(&context);
|
||||
if (!my || !my->session) {
|
||||
return nullptr;
|
||||
|
|
|
@ -547,6 +547,7 @@ HistoryWidget::HistoryWidget(
|
|||
session().attachWebView().attachBotsUpdates(),
|
||||
session().changes().peerUpdates(
|
||||
Data::PeerUpdate::Flag::Rights
|
||||
| Data::PeerUpdate::Flag::StarsPerMessage
|
||||
) | rpl::filter([=](const Data::PeerUpdate &update) {
|
||||
return update.peer == _peer;
|
||||
}) | rpl::to_empty
|
||||
|
@ -4470,6 +4471,8 @@ void HistoryWidget::sendScheduled(Api::SendOptions initialOptions) {
|
|||
SendMenu::Details HistoryWidget::sendMenuDetails() const {
|
||||
const auto type = !_peer
|
||||
? SendMenu::Type::Disabled
|
||||
: _peer->starsPerMessageChecked()
|
||||
? SendMenu::Type::SilentOnly
|
||||
: _peer->isSelf()
|
||||
? SendMenu::Type::Reminder
|
||||
: HistoryView::CanScheduleUntilOnline(_peer)
|
||||
|
|
|
@ -17,6 +17,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
#include "history/history_item_components.h"
|
||||
#include "history/history_item.h"
|
||||
#include "history/history.h"
|
||||
#include "history/view/media/history_view_media.h"
|
||||
#include "history/view/history_view_message.h"
|
||||
#include "history/view/history_view_cursor_state.h"
|
||||
#include "chat_helpers/emoji_interactions.h"
|
||||
|
@ -28,6 +29,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
#include "data/data_message_reactions.h"
|
||||
#include "window/window_session_controller.h"
|
||||
#include "styles/style_chat.h"
|
||||
#include "styles/style_credits.h"
|
||||
#include "styles/style_dialogs.h"
|
||||
|
||||
namespace HistoryView {
|
||||
|
@ -431,9 +433,14 @@ void BottomInfo::layoutDateText() {
|
|||
: name.isEmpty()
|
||||
? date
|
||||
: (name + afterAuthor);
|
||||
_authorEditedDate.setText(
|
||||
auto marked = TextWithEntities{ full };
|
||||
if (const auto count = _data.stars) {
|
||||
marked.append(Ui::Text::IconEmoji(&st::starIconEmoji));
|
||||
marked.append(QString::number(count));
|
||||
}
|
||||
_authorEditedDate.setMarkedText(
|
||||
st::msgDateTextStyle,
|
||||
full,
|
||||
marked,
|
||||
Ui::NameTextOptions());
|
||||
}
|
||||
|
||||
|
@ -599,6 +606,17 @@ BottomInfo::Data BottomInfoDataFromMessage(not_null<Message*> message) {
|
|||
if (item->isSending() || item->hasFailed()) {
|
||||
result.flags |= Flag::Sending;
|
||||
}
|
||||
if (item->out() && !item->history()->peer->isUser()) {
|
||||
const auto media = message->media();
|
||||
const auto mine = PaidInformation{
|
||||
.messages = 1,
|
||||
.stars = item->starsPaid(),
|
||||
};
|
||||
auto info = media ? media->paidInformation().value_or(mine) : mine;
|
||||
if (const auto total = info.stars) {
|
||||
result.stars = total;
|
||||
}
|
||||
}
|
||||
const auto forwarded = item->Get<HistoryMessageForwarded>();
|
||||
if (forwarded && forwarded->imported) {
|
||||
result.flags |= Flag::Imported;
|
||||
|
|
|
@ -50,6 +50,7 @@ public:
|
|||
QDateTime date;
|
||||
QString author;
|
||||
EffectId effectId = 0;
|
||||
int stars = 0;
|
||||
std::optional<int> views;
|
||||
std::optional<int> replies;
|
||||
std::optional<int> forwardsCount;
|
||||
|
|
|
@ -581,6 +581,8 @@ bool AddRescheduleAction(
|
|||
const auto peer = firstItem->history()->peer;
|
||||
const auto sendMenuType = !peer
|
||||
? SendMenu::Type::Disabled
|
||||
: peer->starsPerMessageChecked()
|
||||
? SendMenu::Type::SilentOnly
|
||||
: peer->isSelf()
|
||||
? SendMenu::Type::Reminder
|
||||
: HistoryView::CanScheduleUntilOnline(peer)
|
||||
|
|
|
@ -444,6 +444,9 @@ Message::~Message() {
|
|||
|
||||
void Message::initPaidInformation() {
|
||||
const auto item = data();
|
||||
if (!item->history()->peer->isUser()) {
|
||||
return;
|
||||
}
|
||||
const auto media = this->media();
|
||||
const auto mine = PaidInformation{
|
||||
.messages = 1,
|
||||
|
|
|
@ -1507,7 +1507,9 @@ void RepliesWidget::sendInlineResult(
|
|||
|
||||
SendMenu::Details RepliesWidget::sendMenuDetails() const {
|
||||
using Type = SendMenu::Type;
|
||||
const auto type = _topic ? Type::Scheduled : Type::SilentOnly;
|
||||
const auto type = (_topic && !_history->peer->starsPerMessageChecked())
|
||||
? Type::Scheduled
|
||||
: Type::SilentOnly;
|
||||
return SendMenu::Details{ .type = type };
|
||||
}
|
||||
|
||||
|
|
|
@ -62,7 +62,8 @@ bool CanScheduleUntilOnline(not_null<PeerData*> peer) {
|
|||
if (const auto user = peer->asUser()) {
|
||||
return !user->isSelf()
|
||||
&& !user->isBot()
|
||||
&& !user->lastseen().isHidden();
|
||||
&& !user->lastseen().isHidden()
|
||||
&& !user->starsPerMessageChecked();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -2573,7 +2573,8 @@ std::unique_ptr<Ui::DropdownMenu> MakeAttachBotsMenu(
|
|||
const auto source = action.options.scheduled
|
||||
? Api::SendType::Scheduled
|
||||
: Api::SendType::Normal;
|
||||
const auto sendMenuType = action.replyTo.topicRootId
|
||||
const auto sendMenuType = (action.replyTo.topicRootId
|
||||
|| action.history->peer->starsPerMessageChecked())
|
||||
? SendMenu::Type::SilentOnly
|
||||
: SendMenu::Type::Scheduled;
|
||||
const auto flag = PollData::Flags();
|
||||
|
@ -2597,7 +2598,8 @@ std::unique_ptr<Ui::DropdownMenu> MakeAttachBotsMenu(
|
|||
ChooseAndSendLocation(controller, config, actionFactory());
|
||||
}, &st::menuIconAddress);
|
||||
}
|
||||
const auto addBots = Data::CanSend(peer, ChatRestriction::SendInline);
|
||||
const auto addBots = Data::CanSend(peer, ChatRestriction::SendInline)
|
||||
&& !peer->starsPerMessageChecked();
|
||||
for (const auto &bot : bots->attachBots()) {
|
||||
if (!addBots
|
||||
|| !bot.inAttachMenu
|
||||
|
|
|
@ -103,7 +103,7 @@ channel#7482147e flags:# creator:flags.0?true left:flags.2?true broadcast:flags.
|
|||
channelForbidden#17d493d5 flags:# broadcast:flags.5?true megagroup:flags.8?true id:long access_hash:long title:string until_date:flags.16?int = Chat;
|
||||
|
||||
chatFull#2633421b flags:# can_set_username:flags.7?true has_scheduled:flags.8?true translations_disabled:flags.19?true id:long about:string participants:ChatParticipants chat_photo:flags.2?Photo notify_settings:PeerNotifySettings exported_invite:flags.13?ExportedChatInvite bot_info:flags.3?Vector<BotInfo> pinned_msg_id:flags.6?int folder_id:flags.11?int call:flags.12?InputGroupCall ttl_period:flags.14?int groupcall_default_join_as:flags.15?Peer theme_emoticon:flags.16?string requests_pending:flags.17?int recent_requesters:flags.17?Vector<long> available_reactions:flags.18?ChatReactions reactions_limit:flags.20?int = ChatFull;
|
||||
channelFull#52d6806b flags:# can_view_participants:flags.3?true can_set_username:flags.6?true can_set_stickers:flags.7?true hidden_prehistory:flags.10?true can_set_location:flags.16?true has_scheduled:flags.19?true can_view_stats:flags.20?true blocked:flags.22?true flags2:# can_delete_channel:flags2.0?true antispam:flags2.1?true participants_hidden:flags2.2?true translations_disabled:flags2.3?true stories_pinned_available:flags2.5?true view_forum_as_messages:flags2.6?true restricted_sponsored:flags2.11?true can_view_revenue:flags2.12?true paid_media_allowed:flags2.14?true can_view_stars_revenue:flags2.15?true paid_reactions_available:flags2.16?true stargifts_available:flags2.19?true id:long about:string participants_count:flags.0?int admins_count:flags.1?int kicked_count:flags.2?int banned_count:flags.2?int online_count:flags.13?int read_inbox_max_id:int read_outbox_max_id:int unread_count:int chat_photo:Photo notify_settings:PeerNotifySettings exported_invite:flags.23?ExportedChatInvite bot_info:Vector<BotInfo> migrated_from_chat_id:flags.4?long migrated_from_max_id:flags.4?int pinned_msg_id:flags.5?int stickerset:flags.8?StickerSet available_min_id:flags.9?int folder_id:flags.11?int linked_chat_id:flags.14?long location:flags.15?ChannelLocation slowmode_seconds:flags.17?int slowmode_next_send_date:flags.18?int stats_dc:flags.12?int pts:int call:flags.21?InputGroupCall ttl_period:flags.24?int pending_suggestions:flags.25?Vector<string> groupcall_default_join_as:flags.26?Peer theme_emoticon:flags.27?string requests_pending:flags.28?int recent_requesters:flags.28?Vector<long> default_send_as:flags.29?Peer available_reactions:flags.30?ChatReactions reactions_limit:flags2.13?int stories:flags2.4?PeerStories wallpaper:flags2.7?WallPaper boosts_applied:flags2.8?int boosts_unrestrict:flags2.9?int emojiset:flags2.10?StickerSet bot_verification:flags2.17?BotVerification stargifts_count:flags2.18?int = ChatFull;
|
||||
channelFull#52d6806b flags:# can_view_participants:flags.3?true can_set_username:flags.6?true can_set_stickers:flags.7?true hidden_prehistory:flags.10?true can_set_location:flags.16?true has_scheduled:flags.19?true can_view_stats:flags.20?true blocked:flags.22?true flags2:# can_delete_channel:flags2.0?true antispam:flags2.1?true participants_hidden:flags2.2?true translations_disabled:flags2.3?true stories_pinned_available:flags2.5?true view_forum_as_messages:flags2.6?true restricted_sponsored:flags2.11?true can_view_revenue:flags2.12?true paid_media_allowed:flags2.14?true can_view_stars_revenue:flags2.15?true paid_reactions_available:flags2.16?true stargifts_available:flags2.19?true paid_messages_available:flags2.20?true id:long about:string participants_count:flags.0?int admins_count:flags.1?int kicked_count:flags.2?int banned_count:flags.2?int online_count:flags.13?int read_inbox_max_id:int read_outbox_max_id:int unread_count:int chat_photo:Photo notify_settings:PeerNotifySettings exported_invite:flags.23?ExportedChatInvite bot_info:Vector<BotInfo> migrated_from_chat_id:flags.4?long migrated_from_max_id:flags.4?int pinned_msg_id:flags.5?int stickerset:flags.8?StickerSet available_min_id:flags.9?int folder_id:flags.11?int linked_chat_id:flags.14?long location:flags.15?ChannelLocation slowmode_seconds:flags.17?int slowmode_next_send_date:flags.18?int stats_dc:flags.12?int pts:int call:flags.21?InputGroupCall ttl_period:flags.24?int pending_suggestions:flags.25?Vector<string> groupcall_default_join_as:flags.26?Peer theme_emoticon:flags.27?string requests_pending:flags.28?int recent_requesters:flags.28?Vector<long> default_send_as:flags.29?Peer available_reactions:flags.30?ChatReactions reactions_limit:flags2.13?int stories:flags2.4?PeerStories wallpaper:flags2.7?WallPaper boosts_applied:flags2.8?int boosts_unrestrict:flags2.9?int emojiset:flags2.10?StickerSet bot_verification:flags2.17?BotVerification stargifts_count:flags2.18?int = ChatFull;
|
||||
|
||||
chatParticipant#c02d4007 user_id:long inviter_id:long date:int = ChatParticipant;
|
||||
chatParticipantCreator#e46bcee4 user_id:long = ChatParticipant;
|
||||
|
@ -220,7 +220,7 @@ inputPeerNotifySettings#cacb6ae2 flags:# show_previews:flags.0?Bool silent:flags
|
|||
|
||||
peerNotifySettings#99622c0c flags:# show_previews:flags.0?Bool silent:flags.1?Bool mute_until:flags.2?int ios_sound:flags.3?NotificationSound android_sound:flags.4?NotificationSound other_sound:flags.5?NotificationSound stories_muted:flags.6?Bool stories_hide_sender:flags.7?Bool stories_ios_sound:flags.8?NotificationSound stories_android_sound:flags.9?NotificationSound stories_other_sound:flags.10?NotificationSound = PeerNotifySettings;
|
||||
|
||||
peerSettings#d8c39ec flags:# report_spam:flags.0?true add_contact:flags.1?true block_contact:flags.2?true share_contact:flags.3?true need_contacts_exception:flags.4?true report_geo:flags.5?true autoarchived:flags.7?true invite_members:flags.8?true request_chat_broadcast:flags.10?true business_bot_paused:flags.11?true business_bot_can_reply:flags.12?true geo_distance:flags.6?int request_chat_title:flags.9?string request_chat_date:flags.9?int business_bot_id:flags.13?long business_bot_manage_url:flags.13?string charge_paid_message_stars:flags.14?long registration_month:flags.15?string phone_country:flags.16?string location_country:flags.17?string = PeerSettings;
|
||||
peerSettings#f47741f7 flags:# report_spam:flags.0?true add_contact:flags.1?true block_contact:flags.2?true share_contact:flags.3?true need_contacts_exception:flags.4?true report_geo:flags.5?true autoarchived:flags.7?true invite_members:flags.8?true request_chat_broadcast:flags.10?true business_bot_paused:flags.11?true business_bot_can_reply:flags.12?true geo_distance:flags.6?int request_chat_title:flags.9?string request_chat_date:flags.9?int business_bot_id:flags.13?long business_bot_manage_url:flags.13?string charge_paid_message_stars:flags.14?long registration_month:flags.15?string phone_country:flags.16?string name_change_date:flags.17?int photo_change_date:flags.18?int = PeerSettings;
|
||||
|
||||
wallPaper#a437c3ed id:long flags:# creator:flags.0?true default:flags.1?true pattern:flags.3?true dark:flags.4?true access_hash:long slug:string document:Document settings:flags.2?WallPaperSettings = WallPaper;
|
||||
wallPaperNoFile#e0804116 id:long flags:# default:flags.1?true dark:flags.4?true settings:flags.2?WallPaperSettings = WallPaper;
|
||||
|
@ -1839,7 +1839,7 @@ starsTransactionPeerAPI#f9677aad = StarsTransactionPeer;
|
|||
|
||||
starsTopupOption#bd915c0 flags:# extended:flags.1?true stars:long store_product:flags.0?string currency:string amount:long = StarsTopupOption;
|
||||
|
||||
starsTransaction#ecd50924 flags:# refund:flags.3?true pending:flags.4?true failed:flags.6?true gift:flags.10?true reaction:flags.11?true stargift_upgrade:flags.18?true id:string stars:StarsAmount date:int peer:StarsTransactionPeer title:flags.0?string description:flags.1?string photo:flags.2?WebDocument transaction_date:flags.5?int transaction_url:flags.5?string bot_payload:flags.7?bytes msg_id:flags.8?int extended_media:flags.9?Vector<MessageMedia> subscription_period:flags.12?int giveaway_post_id:flags.13?int stargift:flags.14?StarGift floodskip_number:flags.15?int starref_commission_permille:flags.16?int starref_peer:flags.17?Peer starref_amount:flags.17?StarsAmount paid_messages:flags.19?int = StarsTransaction;
|
||||
starsTransaction#ecd50924 flags:# refund:flags.3?true pending:flags.4?true failed:flags.6?true gift:flags.10?true reaction:flags.11?true stargift_upgrade:flags.18?true premium_gift:flags.20?true id:string stars:StarsAmount date:int peer:StarsTransactionPeer title:flags.0?string description:flags.1?string photo:flags.2?WebDocument transaction_date:flags.5?int transaction_url:flags.5?string bot_payload:flags.7?bytes msg_id:flags.8?int extended_media:flags.9?Vector<MessageMedia> subscription_period:flags.12?int giveaway_post_id:flags.13?int stargift:flags.14?StarGift floodskip_number:flags.15?int starref_commission_permille:flags.16?int starref_peer:flags.17?Peer starref_amount:flags.17?StarsAmount paid_messages:flags.19?int = StarsTransaction;
|
||||
|
||||
payments.starsStatus#6c9ce8ed flags:# balance:StarsAmount subscriptions:flags.1?Vector<StarsSubscription> subscriptions_next_offset:flags.2?string subscriptions_missing_balance:flags.4?long history:flags.3?Vector<StarsTransaction> next_offset:flags.0?string chats:Vector<Chat> users:Vector<User> = payments.StarsStatus;
|
||||
|
||||
|
@ -1926,7 +1926,7 @@ payments.uniqueStarGift#caa2f60b gift:StarGift users:Vector<User> = payments.Uni
|
|||
|
||||
messages.webPagePreview#b53e8b21 media:MessageMedia users:Vector<User> = messages.WebPagePreview;
|
||||
|
||||
savedStarGift#6056dba5 flags:# name_hidden:flags.0?true unsaved:flags.5?true refunded:flags.9?true can_upgrade:flags.10?true from_id:flags.1?Peer date:int gift:StarGift message:flags.2?TextWithEntities msg_id:flags.3?int saved_id:flags.11?long convert_stars:flags.4?long upgrade_stars:flags.6?long can_export_at:flags.7?int transfer_stars:flags.8?long = SavedStarGift;
|
||||
savedStarGift#6056dba5 flags:# name_hidden:flags.0?true unsaved:flags.5?true refunded:flags.9?true can_upgrade:flags.10?true pinned_to_top:flags.12?true from_id:flags.1?Peer date:int gift:StarGift message:flags.2?TextWithEntities msg_id:flags.3?int saved_id:flags.11?long convert_stars:flags.4?long upgrade_stars:flags.6?long can_export_at:flags.7?int transfer_stars:flags.8?long = SavedStarGift;
|
||||
|
||||
payments.savedStarGifts#95f389b1 flags:# count:int chat_notifications_enabled:flags.1?Bool gifts:Vector<SavedStarGift> next_offset:flags.0?string chats:Vector<Chat> users:Vector<User> = payments.SavedStarGifts;
|
||||
|
||||
|
@ -2543,6 +2543,7 @@ payments.getSavedStarGifts#23830de9 flags:# exclude_unsaved:flags.0?true exclude
|
|||
payments.getSavedStarGift#b455a106 stargift:Vector<InputSavedStarGift> = payments.SavedStarGifts;
|
||||
payments.getStarGiftWithdrawalUrl#d06e93a8 stargift:InputSavedStarGift password:InputCheckPasswordSRP = payments.StarGiftWithdrawalUrl;
|
||||
payments.toggleChatStarGiftNotifications#60eaefa1 flags:# enabled:flags.0?true peer:InputPeer = Bool;
|
||||
payments.toggleStarGiftsPinnedToTop#1513e7b0 peer:InputPeer stargift:Vector<InputSavedStarGift> = Bool;
|
||||
|
||||
stickers.createStickerSet#9021ab67 flags:# masks:flags.0?true emojis:flags.5?true text_color:flags.6?true user_id:InputUser title:string short_name:string thumb:flags.2?InputDocument stickers:Vector<InputStickerSetItem> software:flags.3?string = messages.StickerSet;
|
||||
stickers.removeStickerFromSet#f7760f51 sticker:InputDocument = messages.StickerSet;
|
||||
|
|
|
@ -62,6 +62,10 @@ creditsBoxButtonLabel: FlatLabel(defaultFlatLabel) {
|
|||
style: semiboldTextStyle;
|
||||
}
|
||||
|
||||
starIconEmoji: IconEmoji {
|
||||
icon: icon{{ "payments/small_star", windowFg }};
|
||||
padding: margins(0px, -3px, 0px, 0px);
|
||||
}
|
||||
starIconSmall: icon{{ "payments/small_star", windowFg }};
|
||||
starIconSmallPadding: margins(0px, -3px, 0px, 0px);
|
||||
|
||||
|
|
|
@ -1175,7 +1175,8 @@ void Filler::addCreatePoll() {
|
|||
: Api::SendType::Normal;
|
||||
const auto sendMenuType = (_request.section == Section::Scheduled)
|
||||
? SendMenu::Type::Disabled
|
||||
: (_request.section == Section::Replies)
|
||||
: (_request.section == Section::Replies
|
||||
|| _peer->starsPerMessageChecked())
|
||||
? SendMenu::Type::SilentOnly
|
||||
: SendMenu::Type::Scheduled;
|
||||
const auto flag = PollData::Flags();
|
||||
|
@ -2420,7 +2421,17 @@ QPointer<Ui::BoxContent> ShowForwardMessagesBox(
|
|||
|
||||
const auto sendMenuType = [=] {
|
||||
const auto selected = state->box->collectSelectedRows();
|
||||
return ranges::all_of(selected, HistoryView::CanScheduleUntilOnline)
|
||||
const auto hasPaid = [&] {
|
||||
for (const auto peer : selected) {
|
||||
if (peer->starsPerMessageChecked()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}();
|
||||
return hasPaid
|
||||
? SendMenu::Type::SilentOnly
|
||||
: ranges::all_of(selected, HistoryView::CanScheduleUntilOnline)
|
||||
? SendMenu::Type::ScheduledToUser
|
||||
: ((selected.size() == 1) && selected.front()->isSelf())
|
||||
? SendMenu::Type::Reminder
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit f0cbee75e49adfa2f3e0b7a76ac3290e1d388cbb
|
||||
Subproject commit 2a5d66fb1b9f97eacc3e73c324944a8d77c38e51
|
Loading…
Add table
Reference in a new issue