Moved out ScheduledMessages module to components submodule.

This commit is contained in:
23rd 2024-04-13 18:16:07 +03:00 committed by John Preston
parent 3d48111368
commit a35f020f56
20 changed files with 60 additions and 60 deletions

View file

@ -460,6 +460,8 @@ PRIVATE
data/business/data_business_info.h data/business/data_business_info.h
data/business/data_shortcut_messages.cpp data/business/data_shortcut_messages.cpp
data/business/data_shortcut_messages.h data/business/data_shortcut_messages.h
data/components/scheduled_messages.cpp
data/components/scheduled_messages.h
data/components/sponsored_messages.cpp data/components/sponsored_messages.cpp
data/components/sponsored_messages.h data/components/sponsored_messages.h
data/notify/data_notify_settings.cpp data/notify/data_notify_settings.cpp
@ -579,8 +581,6 @@ PRIVATE
data/data_send_action.h data/data_send_action.h
data/data_session.cpp data/data_session.cpp
data/data_session.h data/data_session.h
data/data_scheduled_messages.cpp
data/data_scheduled_messages.h
data/data_shared_media.cpp data/data_shared_media.cpp
data/data_shared_media.h data/data_shared_media.h
data/data_sparse_ids.cpp data/data_sparse_ids.cpp

View file

@ -12,12 +12,11 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "api/api_text_entities.h" #include "api/api_text_entities.h"
#include "ui/boxes/confirm_box.h" #include "ui/boxes/confirm_box.h"
#include "data/business/data_shortcut_messages.h" #include "data/business/data_shortcut_messages.h"
#include "data/components/scheduled_messages.h"
#include "data/data_histories.h" #include "data/data_histories.h"
#include "data/data_scheduled_messages.h"
#include "data/data_session.h" #include "data/data_session.h"
#include "data/data_web_page.h" #include "data/data_web_page.h"
#include "history/history.h" #include "history/history.h"
#include "history/history_item.h"
#include "lang/lang_keys.h" #include "lang/lang_keys.h"
#include "main/main_session.h" #include "main/main_session.h"
#include "mtproto/mtproto_response.h" #include "mtproto/mtproto_response.h"
@ -95,7 +94,7 @@ mtpRequestId EditMessage(
: emptyFlag); : emptyFlag);
const auto id = item->isScheduled() const auto id = item->isScheduled()
? session->data().scheduledMessages().lookupId(item) ? session->scheduledMessages().lookupId(item)
: item->isBusinessShortcut() : item->isBusinessShortcut()
? session->data().shortcutMessages().lookupId(item) ? session->data().shortcutMessages().lookupId(item)
: item->id; : item->id;

View file

@ -21,6 +21,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "mtproto/mtproto_config.h" #include "mtproto/mtproto_config.h"
#include "mtproto/mtproto_dc_options.h" #include "mtproto/mtproto_dc_options.h"
#include "data/business/data_shortcut_messages.h" #include "data/business/data_shortcut_messages.h"
#include "data/components/scheduled_messages.h"
#include "data/notify/data_notify_settings.h" #include "data/notify/data_notify_settings.h"
#include "data/stickers/data_stickers.h" #include "data/stickers/data_stickers.h"
#include "data/data_saved_messages.h" #include "data/data_saved_messages.h"
@ -37,7 +38,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/data_histories.h" #include "data/data_histories.h"
#include "data/data_folder.h" #include "data/data_folder.h"
#include "data/data_forum.h" #include "data/data_forum.h"
#include "data/data_scheduled_messages.h"
#include "data/data_send_action.h" #include "data/data_send_action.h"
#include "data/data_stories.h" #include "data/data_stories.h"
#include "data/data_message_reactions.h" #include "data/data_message_reactions.h"
@ -94,7 +94,7 @@ void ProcessScheduledMessageWithElapsedTime(
// Note that when a message is scheduled until online // Note that when a message is scheduled until online
// while the recipient is already online, the server sends // while the recipient is already online, the server sends
// an ordinary new message with skipped "from_scheduled" flag. // an ordinary new message with skipped "from_scheduled" flag.
session->data().scheduledMessages().checkEntitiesAndUpdate(data); session->scheduledMessages().checkEntitiesAndUpdate(data);
} }
} }
@ -1464,7 +1464,9 @@ void Updates::applyUpdates(
if (const auto id = owner.messageIdByRandomId(randomId)) { if (const auto id = owner.messageIdByRandomId(randomId)) {
const auto local = owner.message(id); const auto local = owner.message(id);
if (local && local->isScheduled()) { if (local && local->isScheduled()) {
owner.scheduledMessages().sendNowSimpleMessage(d, local); session().scheduledMessages().sendNowSimpleMessage(
d,
local);
} }
} }
const auto wasAlready = (lookupMessage() != nullptr); const auto wasAlready = (lookupMessage() != nullptr);
@ -1561,7 +1563,7 @@ void Updates::feedUpdate(const MTPUpdate &update) {
auto &owner = session().data(); auto &owner = session().data();
if (const auto local = owner.message(id)) { if (const auto local = owner.message(id)) {
if (local->isScheduled()) { if (local->isScheduled()) {
session().data().scheduledMessages().apply(d, local); session().scheduledMessages().apply(d, local);
} else if (local->isBusinessShortcut()) { } else if (local->isBusinessShortcut()) {
session().data().shortcutMessages().apply(d, local); session().data().shortcutMessages().apply(d, local);
} else { } else {
@ -1771,12 +1773,12 @@ void Updates::feedUpdate(const MTPUpdate &update) {
case mtpc_updateNewScheduledMessage: { case mtpc_updateNewScheduledMessage: {
const auto &d = update.c_updateNewScheduledMessage(); const auto &d = update.c_updateNewScheduledMessage();
session().data().scheduledMessages().apply(d); session().scheduledMessages().apply(d);
} break; } break;
case mtpc_updateDeleteScheduledMessages: { case mtpc_updateDeleteScheduledMessages: {
const auto &d = update.c_updateDeleteScheduledMessages(); const auto &d = update.c_updateDeleteScheduledMessages();
session().data().scheduledMessages().apply(d); session().scheduledMessages().apply(d);
} break; } break;
case mtpc_updateQuickReplies: { case mtpc_updateQuickReplies: {

View file

@ -35,6 +35,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "api/api_user_names.h" #include "api/api_user_names.h"
#include "api/api_websites.h" #include "api/api_websites.h"
#include "data/business/data_shortcut_messages.h" #include "data/business/data_shortcut_messages.h"
#include "data/components/scheduled_messages.h"
#include "data/notify/data_notify_settings.h" #include "data/notify/data_notify_settings.h"
#include "data/data_changes.h" #include "data/data_changes.h"
#include "data/data_web_page.h" #include "data/data_web_page.h"
@ -43,7 +44,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/data_forum.h" #include "data/data_forum.h"
#include "data/data_saved_sublist.h" #include "data/data_saved_sublist.h"
#include "data/data_search_controller.h" #include "data/data_search_controller.h"
#include "data/data_scheduled_messages.h"
#include "data/data_session.h" #include "data/data_session.h"
#include "data/data_channel.h" #include "data/data_channel.h"
#include "data/data_chat.h" #include "data/data_chat.h"
@ -542,7 +542,7 @@ void ApiWrap::sendMessageFail(
} }
} }
} else if (error == u"SCHEDULE_STATUS_PRIVATE"_q) { } else if (error == u"SCHEDULE_STATUS_PRIVATE"_q) {
auto &scheduled = _session->data().scheduledMessages(); auto &scheduled = _session->scheduledMessages();
Assert(peer->isUser()); Assert(peer->isUser());
if (const auto item = scheduled.lookupItem(peer->id, itemId.msg)) { if (const auto item = scheduled.lookupItem(peer->id, itemId.msg)) {
scheduled.removeSending(item); scheduled.removeSending(item);
@ -2447,8 +2447,8 @@ void ApiWrap::refreshFileReference(
_session->data().peer(storyId.peer)->input, _session->data().peer(storyId.peer)->input,
MTP_vector<MTPint>(1, MTP_int(storyId.story)))); MTP_vector<MTPint>(1, MTP_int(storyId.story))));
} else if (item->isScheduled()) { } else if (item->isScheduled()) {
const auto &scheduled = _session->data().scheduledMessages(); const auto realId = _session->scheduledMessages().lookupId(
const auto realId = scheduled.lookupId(item); item);
request(MTPmessages_GetScheduledMessages( request(MTPmessages_GetScheduledMessages(
item->history()->peer->input, item->history()->peer->input,
MTP_vector<MTPint>(1, MTP_int(realId)))); MTP_vector<MTPint>(1, MTP_int(realId))));

View file

@ -5,7 +5,7 @@ the official desktop application for the Telegram messaging service.
For license and copyright information please follow this link: For license and copyright information please follow this link:
https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
*/ */
#include "data/data_scheduled_messages.h" #include "data/components/scheduled_messages.h"
#include "base/unixtime.h" #include "base/unixtime.h"
#include "data/data_forum_topic.h" #include "data/data_forum_topic.h"
@ -101,10 +101,10 @@ bool IsScheduledMsgId(MsgId id) {
return (id > ServerMaxMsgId) && (id < ScheduledMaxMsgId); return (id > ServerMaxMsgId) && (id < ScheduledMaxMsgId);
} }
ScheduledMessages::ScheduledMessages(not_null<Session*> owner) ScheduledMessages::ScheduledMessages(not_null<Main::Session*> session)
: _session(&owner->session()) : _session(session)
, _clearTimer([=] { clearOldRequests(); }) { , _clearTimer([=] { clearOldRequests(); }) {
owner->itemRemoved( _session->data().itemRemoved(
) | rpl::filter([](not_null<const HistoryItem*> item) { ) | rpl::filter([](not_null<const HistoryItem*> item) {
return item->isScheduled(); return item->isScheduled();
}) | rpl::start_with_next([=](not_null<const HistoryItem*> item) { }) | rpl::start_with_next([=](not_null<const HistoryItem*> item) {

View file

@ -18,14 +18,13 @@ class Session;
namespace Data { namespace Data {
class Session;
struct MessagesSlice; struct MessagesSlice;
[[nodiscard]] bool IsScheduledMsgId(MsgId id); [[nodiscard]] bool IsScheduledMsgId(MsgId id);
class ScheduledMessages final { class ScheduledMessages final {
public: public:
explicit ScheduledMessages(not_null<Session*> owner); explicit ScheduledMessages(not_null<Main::Session*> session);
ScheduledMessages(const ScheduledMessages &other) = delete; ScheduledMessages(const ScheduledMessages &other) = delete;
ScheduledMessages &operator=(const ScheduledMessages &other) = delete; ScheduledMessages &operator=(const ScheduledMessages &other) = delete;
~ScheduledMessages(); ~ScheduledMessages();

View file

@ -9,13 +9,13 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "api/api_text_entities.h" #include "api/api_text_entities.h"
#include "data/business/data_shortcut_messages.h" #include "data/business/data_shortcut_messages.h"
#include "data/components/scheduled_messages.h"
#include "data/data_session.h" #include "data/data_session.h"
#include "data/data_channel.h" #include "data/data_channel.h"
#include "data/data_chat.h" #include "data/data_chat.h"
#include "data/data_folder.h" #include "data/data_folder.h"
#include "data/data_forum.h" #include "data/data_forum.h"
#include "data/data_forum_topic.h" #include "data/data_forum_topic.h"
#include "data/data_scheduled_messages.h"
#include "data/data_user.h" #include "data/data_user.h"
#include "base/unixtime.h" #include "base/unixtime.h"
#include "base/random.h" #include "base/random.h"
@ -830,11 +830,12 @@ void Histories::deleteMessages(const MessageIdsList &ids, bool revoke) {
if (item->isScheduled()) { if (item->isScheduled()) {
const auto wasOnServer = !item->isSending() const auto wasOnServer = !item->isSending()
&& !item->hasFailed(); && !item->hasFailed();
auto &scheduled = _owner->session().scheduledMessages();
if (wasOnServer) { if (wasOnServer) {
scheduledIdsByPeer[history->peer].push_back(MTP_int( scheduledIdsByPeer[history->peer].push_back(
_owner->scheduledMessages().lookupId(item))); MTP_int(scheduled.lookupId(item)));
} else { } else {
_owner->scheduledMessages().removeSending(item); scheduled.removeSending(item);
} }
continue; continue;
} else if (item->isBusinessShortcut()) { } else if (item->isBusinessShortcut()) {

View file

@ -56,7 +56,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/data_poll.h" #include "data/data_poll.h"
#include "data/data_replies_list.h" #include "data/data_replies_list.h"
#include "data/data_chat_filters.h" #include "data/data_chat_filters.h"
#include "data/data_scheduled_messages.h"
#include "data/data_send_action.h" #include "data/data_send_action.h"
#include "data/data_message_reactions.h" #include "data/data_message_reactions.h"
#include "data/data_emoji_statuses.h" #include "data/data_emoji_statuses.h"
@ -271,7 +270,6 @@ Session::Session(not_null<Main::Session*> session)
, _savedMessages(std::make_unique<SavedMessages>(this)) , _savedMessages(std::make_unique<SavedMessages>(this))
, _chatbots(std::make_unique<Chatbots>(this)) , _chatbots(std::make_unique<Chatbots>(this))
, _businessInfo(std::make_unique<BusinessInfo>(this)) , _businessInfo(std::make_unique<BusinessInfo>(this))
, _scheduledMessages(std::make_unique<ScheduledMessages>(this))
, _shortcutMessages(std::make_unique<ShortcutMessages>(this)) { , _shortcutMessages(std::make_unique<ShortcutMessages>(this)) {
_cache->open(_session->local().cacheKey()); _cache->open(_session->local().cacheKey());
_bigFileCache->open(_session->local().cacheBigFileKey()); _bigFileCache->open(_session->local().cacheBigFileKey());
@ -395,7 +393,6 @@ void Session::clear() {
_sendActionManager->clear(); _sendActionManager->clear();
_histories->unloadAll(); _histories->unloadAll();
_scheduledMessages = nullptr;
_shortcutMessages = nullptr; _shortcutMessages = nullptr;
_dependentMessages.clear(); _dependentMessages.clear();
base::take(_messages); base::take(_messages);

View file

@ -47,7 +47,6 @@ namespace Data {
class Folder; class Folder;
class LocationPoint; class LocationPoint;
class WallPaper; class WallPaper;
class ScheduledMessages;
class ShortcutMessages; class ShortcutMessages;
class SendActionManager; class SendActionManager;
class Reactions; class Reactions;
@ -103,9 +102,6 @@ public:
[[nodiscard]] ChatFilters &chatsFilters() const { [[nodiscard]] ChatFilters &chatsFilters() const {
return *_chatsFilters; return *_chatsFilters;
} }
[[nodiscard]] ScheduledMessages &scheduledMessages() const {
return *_scheduledMessages;
}
[[nodiscard]] ShortcutMessages &shortcutMessages() const { [[nodiscard]] ShortcutMessages &shortcutMessages() const {
return *_shortcutMessages; return *_shortcutMessages;
} }
@ -1080,7 +1076,6 @@ private:
const std::unique_ptr<SavedMessages> _savedMessages; const std::unique_ptr<SavedMessages> _savedMessages;
const std::unique_ptr<Chatbots> _chatbots; const std::unique_ptr<Chatbots> _chatbots;
const std::unique_ptr<BusinessInfo> _businessInfo; const std::unique_ptr<BusinessInfo> _businessInfo;
std::unique_ptr<ScheduledMessages> _scheduledMessages;
std::unique_ptr<ShortcutMessages> _shortcutMessages; std::unique_ptr<ShortcutMessages> _shortcutMessages;
MsgId _nonHistoryEntryId = ShortcutMaxMsgId; MsgId _nonHistoryEntryId = ShortcutMaxMsgId;

View file

@ -13,10 +13,10 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "storage/storage_facade.h" #include "storage/storage_facade.h"
#include "history/history.h" #include "history/history.h"
#include "history/history_item.h" #include "history/history_item.h"
#include "data/components/scheduled_messages.h"
#include "data/data_document.h" #include "data/data_document.h"
#include "data/data_media_types.h" #include "data/data_media_types.h"
#include "data/data_photo.h" #include "data/data_photo.h"
#include "data/data_scheduled_messages.h"
#include "data/data_session.h" #include "data/data_session.h"
#include "core/crash_reports.h" #include "core/crash_reports.h"
@ -193,9 +193,9 @@ rpl::producer<SparseIdsMergedSlice> SharedScheduledMediaViewer(
const auto history = session->data().history(key.mergedKey.peerId); const auto history = session->data().history(key.mergedKey.peerId);
return rpl::single(rpl::empty) | rpl::then( return rpl::single(rpl::empty) | rpl::then(
session->data().scheduledMessages().updates(history) session->scheduledMessages().updates(history)
) | rpl::map([=] { ) | rpl::map([=] {
const auto list = session->data().scheduledMessages().list(history); const auto list = session->scheduledMessages().list(history);
auto items = ranges::views::all( auto items = ranges::views::all(
list.ids list.ids

View file

@ -19,6 +19,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "history/history_unread_things.h" #include "history/history_unread_things.h"
#include "dialogs/ui/dialogs_layout.h" #include "dialogs/ui/dialogs_layout.h"
#include "data/business/data_shortcut_messages.h" #include "data/business/data_shortcut_messages.h"
#include "data/components/scheduled_messages.h"
#include "data/components/sponsored_messages.h" #include "data/components/sponsored_messages.h"
#include "data/notify/data_notify_settings.h" #include "data/notify/data_notify_settings.h"
#include "data/stickers/data_stickers.h" #include "data/stickers/data_stickers.h"
@ -29,7 +30,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/data_channel_admins.h" #include "data/data_channel_admins.h"
#include "data/data_changes.h" #include "data/data_changes.h"
#include "data/data_chat_filters.h" #include "data/data_chat_filters.h"
#include "data/data_scheduled_messages.h"
#include "data/data_send_action.h" #include "data/data_send_action.h"
#include "data/data_folder.h" #include "data/data_folder.h"
#include "data/data_forum.h" #include "data/data_forum.h"
@ -590,7 +590,7 @@ not_null<HistoryItem*> History::addNewItem(
not_null<HistoryItem*> item, not_null<HistoryItem*> item,
bool unread) { bool unread) {
if (item->isScheduled()) { if (item->isScheduled()) {
owner().scheduledMessages().appendSending(item); session().scheduledMessages().appendSending(item);
return item; return item;
} else if (item->isBusinessShortcut()) { } else if (item->isBusinessShortcut()) {
owner().shortcutMessages().appendSending(item); owner().shortcutMessages().appendSending(item);

View file

@ -40,12 +40,12 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "base/timer_rpl.h" #include "base/timer_rpl.h"
#include "api/api_text_entities.h" #include "api/api_text_entities.h"
#include "api/api_updates.h" #include "api/api_updates.h"
#include "data/components/scheduled_messages.h"
#include "data/components/sponsored_messages.h" #include "data/components/sponsored_messages.h"
#include "data/notify/data_notify_settings.h" #include "data/notify/data_notify_settings.h"
#include "data/data_bot_app.h" #include "data/data_bot_app.h"
#include "data/data_saved_messages.h" #include "data/data_saved_messages.h"
#include "data/data_saved_sublist.h" #include "data/data_saved_sublist.h"
#include "data/data_scheduled_messages.h"
#include "data/data_changes.h" #include "data/data_changes.h"
#include "data/data_session.h" #include "data/data_session.h"
#include "data/data_message_reactions.h" #include "data/data_message_reactions.h"

View file

@ -33,6 +33,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "media/audio/media_audio.h" #include "media/audio/media_audio.h"
#include "media/player/media_player_instance.h" #include "media/player/media_player_instance.h"
#include "data/business/data_shortcut_messages.h" #include "data/business/data_shortcut_messages.h"
#include "data/components/scheduled_messages.h"
#include "data/stickers/data_custom_emoji.h" #include "data/stickers/data_custom_emoji.h"
#include "data/data_channel.h" #include "data/data_channel.h"
#include "data/data_media_types.h" #include "data/data_media_types.h"
@ -42,7 +43,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/data_document.h" #include "data/data_document.h"
#include "data/data_web_page.h" #include "data/data_web_page.h"
#include "data/data_file_click_handler.h" #include "data/data_file_click_handler.h"
#include "data/data_scheduled_messages.h"
#include "data/data_session.h" #include "data/data_session.h"
#include "data/data_stories.h" #include "data/data_stories.h"
#include "main/main_session.h" #include "main/main_session.h"
@ -301,7 +301,7 @@ ReplyFields ReplyFieldsFromMTP(
const auto owner = &item->history()->owner(); const auto owner = &item->history()->owner();
if (const auto id = data.vreply_to_msg_id().value_or_empty()) { if (const auto id = data.vreply_to_msg_id().value_or_empty()) {
result.messageId = data.is_reply_to_scheduled() result.messageId = data.is_reply_to_scheduled()
? owner->scheduledMessages().localMessageId(id) ? owner->session().scheduledMessages().localMessageId(id)
: item->shortcutId() : item->shortcutId()
? owner->shortcutMessages().localMessageId(id) ? owner->shortcutMessages().localMessageId(id)
: id; : id;

View file

@ -54,6 +54,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "base/unixtime.h" #include "base/unixtime.h"
#include "base/call_delayed.h" #include "base/call_delayed.h"
#include "data/business/data_shortcut_messages.h" #include "data/business/data_shortcut_messages.h"
#include "data/components/scheduled_messages.h"
#include "data/components/sponsored_messages.h" #include "data/components/sponsored_messages.h"
#include "data/notify/data_notify_settings.h" #include "data/notify/data_notify_settings.h"
#include "data/data_changes.h" #include "data/data_changes.h"
@ -69,7 +70,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/data_forum_topic.h" #include "data/data_forum_topic.h"
#include "data/data_user.h" #include "data/data_user.h"
#include "data/data_chat_filters.h" #include "data/data_chat_filters.h"
#include "data/data_scheduled_messages.h"
#include "data/data_file_origin.h" #include "data/data_file_origin.h"
#include "data/data_histories.h" #include "data/data_histories.h"
#include "data/data_group_call.h" #include "data/data_group_call.h"
@ -2772,9 +2772,9 @@ void HistoryWidget::setupScheduledToggle() {
controller()->activeChatValue( controller()->activeChatValue(
) | rpl::map([=](Dialogs::Key key) -> rpl::producer<> { ) | rpl::map([=](Dialogs::Key key) -> rpl::producer<> {
if (const auto history = key.history()) { if (const auto history = key.history()) {
return session().data().scheduledMessages().updates(history); return session().scheduledMessages().updates(history);
} else if (const auto topic = key.topic()) { } else if (const auto topic = key.topic()) {
return session().data().scheduledMessages().updates( return session().scheduledMessages().updates(
topic->owningHistory()); topic->owningHistory());
} }
return rpl::never<rpl::empty_value>(); return rpl::never<rpl::empty_value>();
@ -2789,7 +2789,7 @@ void HistoryWidget::setupScheduledToggle() {
void HistoryWidget::refreshScheduledToggle() { void HistoryWidget::refreshScheduledToggle() {
const auto has = _history const auto has = _history
&& _canSendMessages && _canSendMessages
&& (session().data().scheduledMessages().count(_history) > 0); && (session().scheduledMessages().count(_history) > 0);
if (!_scheduled && has) { if (!_scheduled && has) {
_scheduled.create(this, st::historyScheduledToggle); _scheduled.create(this, st::historyScheduledToggle);
_scheduled->show(); _scheduled->show();

View file

@ -52,6 +52,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "core/mime_type.h" #include "core/mime_type.h"
#include "main/main_session.h" #include "main/main_session.h"
#include "main/main_session_settings.h" #include "main/main_session_settings.h"
#include "data/components/scheduled_messages.h"
#include "data/data_session.h" #include "data/data_session.h"
#include "data/data_user.h" #include "data/data_user.h"
#include "data/data_chat.h" #include "data/data_chat.h"
@ -63,7 +64,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/data_changes.h" #include "data/data_changes.h"
#include "data/data_shared_media.h" #include "data/data_shared_media.h"
#include "data/data_send_action.h" #include "data/data_send_action.h"
#include "data/data_scheduled_messages.h"
#include "data/data_premium_limits.h" #include "data/data_premium_limits.h"
#include "storage/storage_media_prepare.h" #include "storage/storage_media_prepare.h"
#include "storage/storage_account.h" #include "storage/storage_account.h"
@ -230,10 +230,9 @@ RepliesWidget::RepliesWidget(
.stickerOrEmojiChosen = controller->stickerOrEmojiChosen(), .stickerOrEmojiChosen = controller->stickerOrEmojiChosen(),
.scheduledToggleValue = _topic .scheduledToggleValue = _topic
? rpl::single(rpl::empty_value()) | rpl::then( ? rpl::single(rpl::empty_value()) | rpl::then(
session().data().scheduledMessages().updates( session().scheduledMessages().updates(_topic->owningHistory())
_topic->owningHistory())
) | rpl::map([=] { ) | rpl::map([=] {
return session().data().scheduledMessages().hasFor(_topic); return session().scheduledMessages().hasFor(_topic);
}) | rpl::type_erased() }) | rpl::type_erased()
: rpl::single(false), : rpl::single(false),
})) }))

View file

@ -33,11 +33,11 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "core/mime_type.h" #include "core/mime_type.h"
#include "chat_helpers/tabbed_selector.h" #include "chat_helpers/tabbed_selector.h"
#include "main/main_session.h" #include "main/main_session.h"
#include "data/components/scheduled_messages.h"
#include "data/data_forum.h" #include "data/data_forum.h"
#include "data/data_forum_topic.h" #include "data/data_forum_topic.h"
#include "data/data_session.h" #include "data/data_session.h"
#include "data/data_changes.h" #include "data/data_changes.h"
#include "data/data_scheduled_messages.h"
#include "data/data_user.h" #include "data/data_user.h"
#include "data/data_message_reactions.h" #include "data/data_message_reactions.h"
#include "data/data_peer_values.h" #include "data/data_peer_values.h"
@ -58,7 +58,7 @@ namespace HistoryView {
ScheduledMemento::ScheduledMemento(not_null<History*> history) ScheduledMemento::ScheduledMemento(not_null<History*> history)
: _history(history) : _history(history)
, _forumTopic(nullptr) { , _forumTopic(nullptr) {
const auto list = _history->owner().scheduledMessages().list(_history); const auto list = _history->session().scheduledMessages().list(_history);
if (!list.ids.empty()) { if (!list.ids.empty()) {
_list.setScrollTopState({ .item = { .fullId = list.ids.front() } }); _list.setScrollTopState({ .item = { .fullId = list.ids.front() } });
} }
@ -67,7 +67,8 @@ ScheduledMemento::ScheduledMemento(not_null<History*> history)
ScheduledMemento::ScheduledMemento(not_null<Data::ForumTopic*> forumTopic) ScheduledMemento::ScheduledMemento(not_null<Data::ForumTopic*> forumTopic)
: _history(forumTopic->owningHistory()) : _history(forumTopic->owningHistory())
, _forumTopic(forumTopic) { , _forumTopic(forumTopic) {
const auto list = _history->owner().scheduledMessages().list(_forumTopic); const auto list = _history->session().scheduledMessages().list(
_forumTopic);
if (!list.ids.empty()) { if (!list.ids.empty()) {
_list.setScrollTopState({ .item = { .fullId = list.ids.front() } }); _list.setScrollTopState({ .item = { .fullId = list.ids.front() } });
} }
@ -1193,13 +1194,13 @@ rpl::producer<Data::MessagesSlice> ScheduledWidget::listSource(
Data::MessagePosition aroundId, Data::MessagePosition aroundId,
int limitBefore, int limitBefore,
int limitAfter) { int limitAfter) {
const auto data = &controller()->session().data(); const auto session = &controller()->session();
return rpl::single(rpl::empty) | rpl::then( return rpl::single(rpl::empty) | rpl::then(
data->scheduledMessages().updates(_history) session->scheduledMessages().updates(_history)
) | rpl::map([=] { ) | rpl::map([=] {
return _forumTopic return _forumTopic
? data->scheduledMessages().list(_forumTopic) ? session->scheduledMessages().list(_forumTopic)
: data->scheduledMessages().list(_history); : session->scheduledMessages().list(_history);
}) | rpl::after_next([=](const Data::MessagesSlice &slice) { }) | rpl::after_next([=](const Data::MessagesSlice &slice) {
highlightSingleNewMessage(slice); highlightSingleNewMessage(slice);
}); });

View file

@ -28,6 +28,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "storage/file_upload.h" #include "storage/file_upload.h"
#include "storage/storage_account.h" #include "storage/storage_account.h"
#include "storage/storage_facade.h" #include "storage/storage_facade.h"
#include "data/components/scheduled_messages.h"
#include "data/components/sponsored_messages.h" #include "data/components/sponsored_messages.h"
#include "data/data_session.h" #include "data/data_session.h"
#include "data/data_changes.h" #include "data/data_changes.h"
@ -97,6 +98,7 @@ Session::Session(
, _giftBoxStickersPacks(std::make_unique<Stickers::GiftBoxPack>(this)) , _giftBoxStickersPacks(std::make_unique<Stickers::GiftBoxPack>(this))
, _sendAsPeers(std::make_unique<SendAsPeers>(this)) , _sendAsPeers(std::make_unique<SendAsPeers>(this))
, _attachWebView(std::make_unique<InlineBots::AttachWebView>(this)) , _attachWebView(std::make_unique<InlineBots::AttachWebView>(this))
, _scheduledMessages(std::make_unique<Data::ScheduledMessages>(this))
, _sponsoredMessages(std::make_unique<Data::SponsoredMessages>(this)) , _sponsoredMessages(std::make_unique<Data::SponsoredMessages>(this))
, _supportHelper(Support::Helper::Create(this)) , _supportHelper(Support::Helper::Create(this))
, _saveSettingsTimer([=] { saveSettings(); }) { , _saveSettingsTimer([=] { saveSettings(); }) {

View file

@ -31,6 +31,7 @@ class Templates;
namespace Data { namespace Data {
class Session; class Session;
class Changes; class Changes;
class ScheduledMessages;
class SponsoredMessages; class SponsoredMessages;
} // namespace Data } // namespace Data
@ -108,6 +109,9 @@ public:
[[nodiscard]] Data::SponsoredMessages &sponsoredMessages() const { [[nodiscard]] Data::SponsoredMessages &sponsoredMessages() const {
return *_sponsoredMessages; return *_sponsoredMessages;
} }
[[nodiscard]] Data::ScheduledMessages &scheduledMessages() const {
return *_scheduledMessages;
}
[[nodiscard]] Api::Updates &updates() const { [[nodiscard]] Api::Updates &updates() const {
return *_updates; return *_updates;
} }
@ -228,6 +232,7 @@ private:
const std::unique_ptr<Stickers::GiftBoxPack> _giftBoxStickersPacks; const std::unique_ptr<Stickers::GiftBoxPack> _giftBoxStickersPacks;
const std::unique_ptr<SendAsPeers> _sendAsPeers; const std::unique_ptr<SendAsPeers> _sendAsPeers;
const std::unique_ptr<InlineBots::AttachWebView> _attachWebView; const std::unique_ptr<InlineBots::AttachWebView> _attachWebView;
const std::unique_ptr<Data::ScheduledMessages> _scheduledMessages;
const std::unique_ptr<Data::SponsoredMessages> _sponsoredMessages; const std::unique_ptr<Data::SponsoredMessages> _sponsoredMessages;
const std::unique_ptr<Support::Helper> _supportHelper; const std::unique_ptr<Support::Helper> _supportHelper;

View file

@ -9,6 +9,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "api/api_updates.h" #include "api/api_updates.h"
#include "api/api_views.h" #include "api/api_views.h"
#include "data/components/scheduled_messages.h"
#include "data/data_document_media.h" #include "data/data_document_media.h"
#include "data/data_document_resolver.h" #include "data/data_document_resolver.h"
#include "data/data_forum_topic.h" #include "data/data_forum_topic.h"
@ -22,7 +23,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/data_chat.h" #include "data/data_chat.h"
#include "data/data_user.h" #include "data/data_user.h"
#include "data/data_chat_filters.h" #include "data/data_chat_filters.h"
#include "data/data_scheduled_messages.h"
#include "data/data_file_origin.h" #include "data/data_file_origin.h"
#include "data/data_histories.h" #include "data/data_histories.h"
#include "data/stickers/data_stickers.h" #include "data/stickers/data_stickers.h"

View file

@ -68,6 +68,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "info/profile/info_profile_values.h" #include "info/profile/info_profile_values.h"
#include "info/statistics/info_statistics_widget.h" #include "info/statistics/info_statistics_widget.h"
#include "info/stories/info_stories_widget.h" #include "info/stories/info_stories_widget.h"
#include "data/components/scheduled_messages.h"
#include "data/notify/data_notify_settings.h" #include "data/notify/data_notify_settings.h"
#include "data/data_changes.h" #include "data/data_changes.h"
#include "data/data_session.h" #include "data/data_session.h"
@ -79,7 +80,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/data_forum_topic.h" #include "data/data_forum_topic.h"
#include "data/data_user.h" #include "data/data_user.h"
#include "data/data_saved_sublist.h" #include "data/data_saved_sublist.h"
#include "data/data_scheduled_messages.h"
#include "data/data_histories.h" #include "data/data_histories.h"
#include "data/data_chat_filters.h" #include "data/data_chat_filters.h"
#include "dialogs/dialogs_key.h" #include "dialogs/dialogs_key.h"
@ -2255,8 +2255,8 @@ QPointer<Ui::BoxContent> ShowSendNowMessagesBox(
auto ids = QVector<MTPint>(); auto ids = QVector<MTPint>();
for (const auto item : session->data().idsToItems(list)) { for (const auto item : session->data().idsToItems(list)) {
if (item->allowsSendNow()) { if (item->allowsSendNow()) {
ids.push_back(MTP_int( ids.push_back(
session->data().scheduledMessages().lookupId(item))); MTP_int(session->scheduledMessages().lookupId(item)));
} }
} }
session->api().request(MTPmessages_SendScheduledMessages( session->api().request(MTPmessages_SendScheduledMessages(