Move session settings to main_session_settings.

This commit is contained in:
John Preston 2020-06-18 16:47:09 +04:00
parent 3a5ede534e
commit 4d6cc58f0d
85 changed files with 294 additions and 200 deletions
Telegram
CMakeLists.txt
SourceFiles
apiwrap.cpp
boxes
calls
chat_helpers
core
data
dialogs
history
intro
main
mainwidget.cppmainwindow.cpp
media
overview
settings
storage
support
window

View file

@ -674,8 +674,8 @@ PRIVATE
main/main_app_config.h
main/main_session.cpp
main/main_session.h
main/main_settings.cpp
main/main_settings.h
main/main_session_settings.cpp
main/main_session_settings.h
media/audio/media_audio.cpp
media/audio/media_audio.h
media/audio/media_audio_capture.cpp

View file

@ -49,6 +49,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "history/history_item_components.h"
//#include "history/feed/history_feed_section.h" // #feed
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "main/main_account.h"
#include "boxes/confirm_box.h"
#include "boxes/stickers_box.h"
@ -1984,7 +1985,7 @@ void ApiWrap::saveStickerSets(
auto &storage = local();
if (writeInstalled) storage.writeInstalledStickers();
if (writeRecent) storage.writeSettings();
if (writeRecent) session().saveSettings();
if (writeArchived) storage.writeArchivedStickers();
if (writeCloudRecent) storage.writeRecentStickers();
if (writeFaved) storage.writeFavedStickers();

View file

@ -40,6 +40,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "mainwindow.h"
#include "apiwrap.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "facades.h"
#include "styles/style_layers.h"
#include "styles/style_boxes.h"

View file

@ -9,6 +9,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "lang/lang_keys.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "data/data_session.h"
#include "data/data_auto_download.h"
#include "ui/widgets/continuous_sliders.h"

View file

@ -11,6 +11,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "storage/localstorage.h"
#include "core/application.h"
#include "mainwindow.h"
#include "main/main_session.h"
#include "ui/widgets/checkbox.h"
#include "facades.h"
#include "styles/style_layers.h"

View file

@ -20,6 +20,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "ui/widgets/checkbox.h"
#include "ui/toast/toast.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "chat_helpers/emoji_suggestions_widget.h"
#include "chat_helpers/message_field.h"
#include "history/view/history_view_schedule_box.h"

View file

@ -14,6 +14,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "core/application.h"
#include "main/main_account.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "mainwidget.h"
#include "mtproto/dedicated_file_loader.h"
#include "spellcheck/spellcheck_utils.h"

View file

@ -124,7 +124,7 @@ void DownloadPathBox::save() {
};
Global::SetDownloadPath(computePath());
Global::SetDownloadPathBookmark((value == Directory::Custom) ? _pathBookmark : QByteArray());
_controller->session().local().writeSettings();
_controller->session().saveSettings();
Global::RefDownloadPathChanged().notify();
closeBox();
#endif // OS_WIN_STORE

View file

@ -10,6 +10,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "apiwrap.h"
#include "api/api_text_entities.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "chat_helpers/emoji_suggestions_widget.h"
#include "chat_helpers/message_field.h"
#include "chat_helpers/tabbed_panel.h"

View file

@ -24,6 +24,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "lang/lang_keys.h"
#include "history/history.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "window/window_session_controller.h"
#include "window/window_controller.h"
#include "apiwrap.h"

View file

@ -9,6 +9,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "apiwrap.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "boxes/add_contact_box.h"
#include "boxes/confirm_box.h"
#include "boxes/peer_list_controllers.h"

View file

@ -14,6 +14,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "ui/widgets/input_fields.h"
#include "mainwindow.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "apiwrap.h"
#include "styles/style_layers.h"
#include "styles/style_calls.h"

View file

@ -10,6 +10,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "lang/lang_keys.h"
#include "data/data_peer.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "boxes/confirm_box.h"
#include "ui/widgets/checkbox.h"
#include "ui/widgets/buttons.h"

View file

@ -12,6 +12,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "storage/localstorage.h"
#include "storage/storage_media_prepare.h"
#include "mainwidget.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "mtproto/mtproto_config.h"
#include "chat_helpers/message_field.h"
#include "chat_helpers/emoji_suggestions_widget.h"

View file

@ -36,6 +36,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/data_folder.h"
#include "data/data_changes.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "core/application.h"
#include "styles/style_layers.h"
#include "styles/style_boxes.h"

View file

@ -8,6 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "calls/calls_call.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "apiwrap.h"
#include "lang/lang_keys.h"
#include "boxes/confirm_box.h"

View file

@ -10,6 +10,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "mtproto/mtproto_dh_utils.h"
#include "core/application.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "apiwrap.h"
#include "lang/lang_keys.h"
#include "boxes/confirm_box.h"

View file

@ -15,6 +15,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "lang/lang_keys.h"
#include "emoji_suggestions_data.h"
#include "emoji_suggestions_helper.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "window/window_session_controller.h"
#include "facades.h"
#include "app.h"

View file

@ -19,6 +19,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "core/application.h"
#include "base/event_filter.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "app.h"
#include "styles/style_chat_helpers.h"

View file

@ -25,6 +25,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "storage/localstorage.h"
#include "lang/lang_keys.h"
#include "mainwindow.h"
#include "main/main_session.h"
#include "window/window_session_controller.h"
#include "history/view/history_view_cursor_state.h"
#include "facades.h"

View file

@ -25,6 +25,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "lang/lang_keys.h"
#include "mainwindow.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "styles/style_layers.h"
#include "styles/style_boxes.h"
#include "styles/style_history.h"

View file

@ -15,6 +15,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "lang/lang_instance.h"
#include "lang/lang_keys.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "mainwidget.h"
#include "spellcheck/platform/platform_spellcheck.h"
#include "spellcheck/spellcheck_utils.h"

View file

@ -13,6 +13,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "ui/text/text_isolated_emoji.h"
#include "ui/image/image.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "data/data_file_origin.h"
#include "data/data_session.h"
#include "data/data_document.h"

View file

@ -33,6 +33,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "boxes/confirm_box.h"
#include "window/window_session_controller.h" // GifPauseReason.
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "apiwrap.h"
#include "app.h"
#include "styles/style_chat_helpers.h"
@ -2135,7 +2136,7 @@ void StickersListWidget::removeRecentSticker(int section, int index) {
for (int32 i = 0, l = recent.size(); i < l; ++i) {
if (recent.at(i).first == document) {
recent.removeAt(i);
session().local().writeSettings();
session().saveSettings();
refresh = true;
break;
}
@ -2581,7 +2582,7 @@ void StickersListWidget::refreshMegagroupStickers(GroupStickersPlace place) {
auto removeHiddenForGroup = [this, &hidden] {
if (hidden) {
session().settings().removeGroupStickersSectionHidden(_megagroupSet->id);
session().local().writeSettings();
session().saveSettings();
hidden = false;
}
};
@ -2992,7 +2993,7 @@ void StickersListWidget::sendInstallRequest(
void StickersListWidget::removeMegagroupSet(bool locally) {
if (locally) {
session().settings().setGroupStickersSectionHidden(_megagroupSet->id);
session().local().writeSettings();
session().saveSettings();
refreshStickers();
return;
}
@ -3053,7 +3054,7 @@ void StickersListWidget::removeSet(uint64 setId) {
if (removeIndex >= 0) session().data().stickers().setsOrderRef().removeAt(removeIndex);
refreshStickers();
session().local().writeInstalledStickers();
if (writeRecent) session().local().writeSettings();
if (writeRecent) session().saveSettings();
}
_removingSetId = 0;
_checkForHide.fire({});

View file

@ -17,6 +17,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "ui/widgets/scroll_area.h"
#include "ui/image/image_prepare.h"
#include "window/window_session_controller.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "storage/localstorage.h"
#include "data/data_channel.h"
#include "data/data_session.h"

View file

@ -11,19 +11,22 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "ui/effects/animations.h"
#include "ui/effects/panel_animation.h"
#include "mtproto/sender.h"
#include "main/main_session.h"
#include "base/object_ptr.h"
namespace InlineBots {
class Result;
} // namespace InlineBots
namespace Main {
class Session;
} // namespace Main
namespace Ui {
class PlainShadow;
class ScrollArea;
class SettingsSlider;
class FlatLabel;
} // namesapce Ui
} // namespace Ui
namespace Window {
class SessionController;

View file

@ -12,6 +12,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "core/application.h"
#include "base/unixtime.h"
#include "ui/delayed_activation.h"
#include "main/main_session.h"
#include "mainwindow.h"
#include <QtWidgets/QFileDialog>

View file

@ -34,6 +34,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "mainwindow.h"
#include "mainwidget.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "apiwrap.h"
#include "app.h"

View file

@ -14,6 +14,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "lang/lang_keys.h"
#include "inline_bots/inline_bot_layout_item.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "mainwidget.h"
#include "core/file_utilities.h"
#include "core/mime_type.h"

View file

@ -14,6 +14,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/data_auto_download.h"
#include "media/clip/media_clip_reader.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "lottie/lottie_animation.h"
#include "history/history_item.h"
#include "history/history.h"

View file

@ -12,6 +12,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "chat_helpers/message_field.h"
#include "history/history.h"
#include "history/history_widget.h"
#include "main/main_session.h"
#include "data/data_session.h"
#include "mainwidget.h"
#include "storage/localstorage.h"

View file

@ -20,6 +20,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "main/main_account.h"
//#include "storage/storage_feed_messages.h" // #feed
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "mtproto/mtproto_config.h"
#include "apiwrap.h"
#include "mainwidget.h"

View file

@ -37,6 +37,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/data_poll.h"
#include "data/data_channel.h"
#include "data/data_file_origin.h"
#include "main/main_session.h"
#include "lang/lang_keys.h"
#include "layout.h"
#include "storage/file_upload.h"

View file

@ -12,6 +12,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/data_file_origin.h"
#include "data/data_auto_download.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "history/history_item.h"
#include "history/history.h"
#include "storage/file_download.h"

View file

@ -8,6 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/data_session.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "apiwrap.h"
#include "mainwidget.h"
#include "api/api_text_entities.h"

View file

@ -8,6 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/data_user.h"
#include "storage/localstorage.h"
#include "main/main_session.h"
#include "data/data_session.h"
#include "data/data_changes.h"
#include "ui/text_options.h"

View file

@ -19,6 +19,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "apiwrap.h"
#include "storage/storage_account.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "mtproto/mtproto_config.h"
#include "ui/toast/toast.h"
#include "ui/image/image_location_factory.h"
@ -150,7 +151,7 @@ void Stickers::incrementSticker(not_null<DocumentData*> document) {
}
if (writeOldRecent) {
session().local().writeSettings();
session().saveSettings();
}
// Remove that sticker from custom stickers, now it is in cloud recent stickers.
@ -607,7 +608,7 @@ void Stickers::setsReceived(const QVector<MTPStickerSet> &data, int32 hash) {
}
session().local().writeInstalledStickers();
if (writeRecent) session().local().writeSettings();
if (writeRecent) session().saveSettings();
const auto counted = Api::CountStickersHash(&session());
if (counted != hash) {
@ -730,7 +731,7 @@ void Stickers::specialSetReceived(
}
if (writeRecent) {
session().local().writeSettings();
session().saveSettings();
}
}
@ -1251,7 +1252,7 @@ StickersSet *Stickers::feedSetFull(const MTPmessages_StickerSet &data) {
}
if (writeRecent) {
session().local().writeSettings();
session().saveSettings();
}
if (set) {

View file

@ -15,6 +15,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/data_chat_filters.h"
#include "mainwidget.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "history/history_item.h"
#include "history/history.h"
#include "app.h"

View file

@ -40,6 +40,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "apiwrap.h"
#include "window/themes/window_theme.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "window/notifications_manager.h"
#include "window/window_session_controller.h"
#include "window/window_peer_menu.h"

View file

@ -19,6 +19,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "ui/unread_badge.h"
#include "lang/lang_keys.h"
#include "support/support_helper.h"
#include "main/main_session.h"
#include "history/history_item_components.h"
#include "history/history_item.h"
#include "history/history.h"

View file

@ -22,6 +22,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "mainwindow.h"
#include "mainwidget.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "apiwrap.h"
#include "base/event_filter.h"
#include "core/application.h"

View file

@ -29,6 +29,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "layout.h"
#include "window/window_session_controller.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "ui/widgets/popup_menu.h"
#include "ui/image/image.h"
#include "ui/text/text_utilities.h"

View file

@ -42,6 +42,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "mainwidget.h"
#include "layout.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "core/application.h"
#include "apiwrap.h"
#include "lang/lang_keys.h"

View file

@ -27,6 +27,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "storage/storage_shared_media.h"
//#include "storage/storage_feed_messages.h" // #feed
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "apiwrap.h"
#include "media/audio/media_audio.h"
#include "core/application.h"

View file

@ -86,6 +86,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "ui/unread_badge.h"
#include "ui/delayed_activation.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "window/themes/window_theme.h"
#include "window/notifications_manager.h"
#include "window/window_session_controller.h"
@ -5689,7 +5690,7 @@ bool HistoryWidget::pinnedMsgVisibilityUpdated() {
pinnedId = 0;
} else if (hiddenId) {
session().settings().setHiddenPinnedMessageId(_peer->id, 0);
session().local().writeSettings();
session().saveSettings();
}
}
if (pinnedId) {
@ -6020,7 +6021,7 @@ void HistoryWidget::hidePinnedMessage() {
pinnedId));
} else {
session().settings().setHiddenPinnedMessageId(_peer->id, pinnedId);
session().local().writeSettings();
session().saveSettings();
if (pinnedMsgVisibilityUpdated()) {
updateControlsGeometry();
update();

View file

@ -21,6 +21,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "chat_helpers/message_field.h"
#include "chat_helpers/emoji_suggestions_widget.h"
#include "window/window_session_controller.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "inline_bots/inline_results_widget.h"
#include "facades.h"
#include "styles/style_history.h"

View file

@ -41,6 +41,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "mainwidget.h"
#include "mainwindow.h" // App::wnd()->sessionController
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "apiwrap.h"
#include "facades.h"

View file

@ -17,6 +17,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "history/view/media/history_view_large_emoji.h"
#include "history/history.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "chat_helpers/stickers_emoji_pack.h"
#include "data/data_session.h"
#include "data/data_groups.h"

View file

@ -18,6 +18,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "mainwidget.h"
#include "mainwindow.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "mtproto/mtproto_config.h"
#include "lang/lang_keys.h"
#include "core/shortcuts.h"

View file

@ -11,6 +11,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "layout.h"
#include "mainwindow.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "media/audio/media_audio.h"
#include "media/clip/media_clip_reader.h"
#include "media/player/media_player_instance.h"

View file

@ -18,6 +18,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "ui/image/image.h"
#include "ui/emoji_config.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "main/main_account.h"
#include "main/main_app_config.h"
#include "mainwindow.h" // App::wnd()->sessionController.

View file

@ -13,6 +13,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "lang/lang_keys.h"
#include "lang/lang_cloud_manager.h"
#include "main/main_account.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "apiwrap.h"
#include "mainwindow.h"
#include "boxes/confirm_box.h"
@ -43,7 +45,7 @@ void PrepareSupportMode(not_null<Main::Session*> session) {
Global::SetSoundNotify(false);
Global::SetFlashBounceNotify(false);
session->settings().autoDownload() = Full::FullDisabled();
session->local().writeSettings();
session->saveSettings();
}
} // namespace

View file

@ -28,6 +28,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "api/api_updates.h"
#include "main/main_app_config.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "facades.h"
namespace Main {
@ -124,14 +125,14 @@ UserId Account::willHaveUserId() const {
}
void Account::createSession(const MTPUser &user) {
createSession(user, QByteArray(), 0, Settings());
createSession(user, QByteArray(), 0, std::make_unique<SessionSettings>());
}
void Account::createSession(
UserId id,
QByteArray serialized,
int streamVersion,
Settings &&settings) {
std::unique_ptr<SessionSettings> settings) {
DEBUG_LOG(("sessionUserSerialized.size: %1").arg(serialized.size()));
QDataStream peekStream(serialized);
const auto phone = Serialize::peekUserPhone(streamVersion, peekStream);
@ -162,7 +163,7 @@ void Account::createSession(
const MTPUser &user,
QByteArray serialized,
int streamVersion,
Settings &&settings) {
std::unique_ptr<SessionSettings> settings) {
Expects(_mtp != nullptr);
Expects(_session == nullptr);
Expects(_sessionValue.current() == nullptr);
@ -177,7 +178,7 @@ void Account::createSession(
}
void Account::destroySession() {
_storedSettings.reset();
_storedSessionSettings.reset();
_sessionUserId = 0;
_sessionUserSerialized = {};
if (!sessionExists()) {
@ -291,7 +292,7 @@ void Account::setSessionUserId(UserId userId) {
}
void Account::setSessionFromStorage(
std::unique_ptr<Settings> data,
std::unique_ptr<SessionSettings> data,
QByteArray &&selfSerialized,
int32 selfStreamVersion) {
Expects(!sessionExists());
@ -299,14 +300,16 @@ void Account::setSessionFromStorage(
DEBUG_LOG(("sessionUserSerialized set: %1"
).arg(selfSerialized.size()));
_storedSettings = std::move(data);
_storedSessionSettings = std::move(data);
_sessionUserSerialized = std::move(selfSerialized);
_sessionUserStreamVersion = selfStreamVersion;
}
Settings *Account::getSessionSettings() {
SessionSettings *Account::getSessionSettings() {
if (_sessionUserId) {
return _storedSettings ? _storedSettings.get() : nullptr;
return _storedSessionSettings
? _storedSessionSettings.get()
: nullptr;
} else if (sessionExists()) {
return &session().settings();
}
@ -431,9 +434,11 @@ void Account::startMtp(std::unique_ptr<MTP::Config> config) {
_sessionUserId,
base::take(_sessionUserSerialized),
base::take(_sessionUserStreamVersion),
_storedSettings ? std::move(*_storedSettings) : Settings());
(_storedSessionSettings
? std::move(_storedSessionSettings)
: std::make_unique<SessionSettings>()));
}
_storedSettings = nullptr;
_storedSessionSettings = nullptr;
if (sessionExists()) {
// Skip all pending self updates so that we won't local().writeSelf.

View file

@ -24,7 +24,7 @@ class Config;
namespace Main {
class Session;
class Settings;
class SessionSettings;
class AppConfig;
class Account final : public base::has_weak_ptr {
@ -49,7 +49,7 @@ public:
UserId id,
QByteArray serialized,
int streamVersion,
Settings &&settings);
std::unique_ptr<SessionSettings> settings);
void destroySession();
void logOut();
@ -81,10 +81,10 @@ public:
void setLegacyMtpKey(std::shared_ptr<MTP::AuthKey> key);
void setSessionUserId(UserId userId);
void setSessionFromStorage(
std::unique_ptr<Settings> data,
std::unique_ptr<SessionSettings> data,
QByteArray &&selfSerialized,
int32 selfStreamVersion);
[[nodiscard]] Settings *getSessionSettings();
[[nodiscard]] SessionSettings *getSessionSettings();
[[nodiscard]] rpl::producer<> mtpNewSessionCreated() const;
[[nodiscard]] rpl::producer<MTPUpdates> mtpUpdates() const;
@ -105,7 +105,7 @@ private:
const MTPUser &user,
QByteArray serialized,
int streamVersion,
Settings &&settings);
std::unique_ptr<SessionSettings> settings);
void watchProxyChanges();
void watchSessionChanges();
bool checkForUpdates(const mtpPrime *from, const mtpPrime *end);
@ -132,7 +132,7 @@ private:
UserId _sessionUserId = 0;
QByteArray _sessionUserSerialized;
int32 _sessionUserStreamVersion = 0;
std::unique_ptr<Settings> _storedSettings;
std::unique_ptr<SessionSettings> _storedSessionSettings;
MTP::Instance::Fields _mtpFields;
MTP::AuthKeysList _mtpKeysToDestroy;
bool _loggingOut = false;

View file

@ -11,6 +11,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "api/api_updates.h"
#include "core/application.h"
#include "main/main_account.h"
#include "main/main_session_settings.h"
#include "mtproto/mtproto_config.h"
#include "chat_helpers/stickers_emoji_pack.h"
#include "chat_helpers/stickers_dice_pack.h"
@ -64,10 +65,9 @@ constexpr auto kLegacyCallsPeerToPeerNobody = 4;
Session::Session(
not_null<Main::Account*> account,
const MTPUser &user,
Settings &&settings)
std::unique_ptr<SessionSettings> settings)
: _account(account)
, _settings(std::move(settings))
, _saveSettingsTimer([=] { local().writeSettings(); })
, _api(std::make_unique<ApiWrap>(this))
, _updates(std::make_unique<Api::Updates>(this))
, _calls(std::make_unique<Calls::Instance>(this))
@ -80,7 +80,10 @@ Session::Session(
, _user(_data->processUser(user))
, _emojiStickersPack(std::make_unique<Stickers::EmojiPack>(this))
, _diceStickersPacks(std::make_unique<Stickers::DicePacks>(this))
, _supportHelper(Support::Helper::Create(this)) {
, _supportHelper(Support::Helper::Create(this))
, _saveSettingsTimer([=] { saveSettings(); }) {
Expects(_settings != nullptr);
Core::App().lockChanges(
) | rpl::start_with_next([=] {
notifications().updateAll();
@ -116,7 +119,7 @@ Session::Session(
}
}, _lifetime);
if (_settings.hadLegacyCallsPeerToPeerNobody()) {
if (_settings->hadLegacyCallsPeerToPeerNobody()) {
api().savePrivacy(
MTP_inputPrivacyKeyPhoneP2P(),
QVector<MTPInputPrivacyRule>(
@ -227,10 +230,14 @@ Support::Templates& Session::supportTemplates() const {
void Session::saveSettingsNowIfNeeded() {
if (_saveSettingsTimer.isActive()) {
_saveSettingsTimer.cancel();
local().writeSettings();
saveSettings();
}
}
void Session::saveSettings() {
local().writeSessionSettings();
}
void Session::addWindow(not_null<Window::SessionController*> controller) {
_windows.emplace(controller);
controller->lifetime().add([=] {

View file

@ -10,7 +10,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include <rpl/event_stream.h>
#include <rpl/filter.h>
#include <rpl/variable.h>
#include "main/main_settings.h"
#include "base/timer.h"
class ApiWrap;
@ -60,6 +59,7 @@ class DicePacks;
namespace Main {
class Account;
class SessionSettings;
class Session final
: public base::has_weak_ptr
@ -68,7 +68,7 @@ public:
Session(
not_null<Main::Account*> account,
const MTPUser &user,
Settings &&other);
std::unique_ptr<SessionSettings> settings);
~Session();
Session(const Session &other) = delete;
@ -111,9 +111,10 @@ public:
[[nodiscard]] Data::Session &data() {
return *_data;
}
[[nodiscard]] Settings &settings() {
return _settings;
[[nodiscard]] SessionSettings &settings() {
return *_settings;
}
void saveSettings();
void saveSettingsDelayed(crl::time delay = kDefaultSaveDelay);
void saveSettingsNowIfNeeded();
@ -156,9 +157,7 @@ private:
const not_null<Main::Account*> _account;
Settings _settings;
base::Timer _saveSettingsTimer;
const std::unique_ptr<SessionSettings> _settings;
const std::unique_ptr<ApiWrap> _api;
const std::unique_ptr<Api::Updates> _updates;
const std::unique_ptr<Calls::Instance> _calls;
@ -179,6 +178,7 @@ private:
const std::unique_ptr<Support::Helper> _supportHelper;
base::flat_set<not_null<Window::SessionController*>> _windows;
base::Timer _saveSettingsTimer;
rpl::lifetime _lifetime;

View file

@ -5,7 +5,7 @@ the official desktop application for the Telegram messaging service.
For license and copyright information please follow this link:
https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
*/
#include "main/main_settings.h"
#include "main/main_session_settings.h"
#include "chat_helpers/tabbed_selector.h"
#include "window/section_widget.h"
@ -33,7 +33,7 @@ float64 DeserializePlaybackSpeed(qint32 speed) {
} // namespace
Settings::Variables::Variables()
SessionSettings::Variables::Variables()
: sendFilesWay(SendFilesWay::Album)
, selectorTab(ChatHelpers::SelectorTab::Emoji)
, floatPlayerColumn(Window::Column::Second)
@ -45,11 +45,11 @@ Settings::Variables::Variables()
, supportSwitch(Support::SwitchSettings::Next) {
}
bool Settings::ThirdColumnByDefault() {
bool SessionSettings::ThirdColumnByDefault() {
return Platform::IsMacStoreBuild();
}
QByteArray Settings::serialize() const {
QByteArray SessionSettings::serialize() const {
const auto autoDownload = _variables.autoDownload.serialize();
auto size = sizeof(qint32) * 38;
for (const auto &[key, value] : _variables.soundOverrides) {
@ -131,11 +131,15 @@ QByteArray Settings::serialize() const {
return result;
}
void Settings::constructFromSerialized(const QByteArray &serialized) {
std::unique_ptr<SessionSettings> SessionSettings::FromSerialized(
const QByteArray &serialized) {
if (serialized.isEmpty()) {
return;
return nullptr;
}
auto result = std::make_unique<SessionSettings>();
const auto variables = &result->_variables;
QDataStream stream(serialized);
stream.setVersion(QDataStream::Qt_5_1);
qint32 versionTag = 0;
@ -150,37 +154,37 @@ void Settings::constructFromSerialized(const QByteArray &serialized) {
base::flat_set<PeerId> groupStickersSectionHidden;
qint32 thirdSectionInfoEnabled = 0;
qint32 smallDialogsList = 0;
float64 dialogsWidthRatio = _variables.dialogsWidthRatio.current();
int thirdColumnWidth = _variables.thirdColumnWidth.current();
int thirdSectionExtendedBy = _variables.thirdSectionExtendedBy;
qint32 sendFilesWay = static_cast<qint32>(_variables.sendFilesWay);
float64 dialogsWidthRatio = variables->dialogsWidthRatio.current();
int thirdColumnWidth = variables->thirdColumnWidth.current();
int thirdSectionExtendedBy = variables->thirdSectionExtendedBy;
qint32 sendFilesWay = static_cast<qint32>(variables->sendFilesWay);
qint32 legacyCallsPeerToPeer = qint32(0);
qint32 sendSubmitWay = static_cast<qint32>(_variables.sendSubmitWay);
qint32 supportSwitch = static_cast<qint32>(_variables.supportSwitch);
qint32 supportFixChatsOrder = _variables.supportFixChatsOrder ? 1 : 0;
qint32 supportTemplatesAutocomplete = _variables.supportTemplatesAutocomplete ? 1 : 0;
qint32 supportChatsTimeSlice = _variables.supportChatsTimeSlice.current();
qint32 includeMutedCounter = _variables.includeMutedCounter ? 1 : 0;
qint32 countUnreadMessages = _variables.countUnreadMessages ? 1 : 0;
qint32 exeLaunchWarning = _variables.exeLaunchWarning ? 1 : 0;
qint32 sendSubmitWay = static_cast<qint32>(variables->sendSubmitWay);
qint32 supportSwitch = static_cast<qint32>(variables->supportSwitch);
qint32 supportFixChatsOrder = variables->supportFixChatsOrder ? 1 : 0;
qint32 supportTemplatesAutocomplete = variables->supportTemplatesAutocomplete ? 1 : 0;
qint32 supportChatsTimeSlice = variables->supportChatsTimeSlice.current();
qint32 includeMutedCounter = variables->includeMutedCounter ? 1 : 0;
qint32 countUnreadMessages = variables->countUnreadMessages ? 1 : 0;
qint32 exeLaunchWarning = variables->exeLaunchWarning ? 1 : 0;
QByteArray autoDownload;
qint32 supportAllSearchResults = _variables.supportAllSearchResults.current() ? 1 : 0;
qint32 archiveCollapsed = _variables.archiveCollapsed.current() ? 1 : 0;
qint32 notifyAboutPinned = _variables.notifyAboutPinned.current() ? 1 : 0;
qint32 archiveInMainMenu = _variables.archiveInMainMenu.current() ? 1 : 0;
qint32 skipArchiveInSearch = _variables.skipArchiveInSearch.current() ? 1 : 0;
qint32 supportAllSearchResults = variables->supportAllSearchResults.current() ? 1 : 0;
qint32 archiveCollapsed = variables->archiveCollapsed.current() ? 1 : 0;
qint32 notifyAboutPinned = variables->notifyAboutPinned.current() ? 1 : 0;
qint32 archiveInMainMenu = variables->archiveInMainMenu.current() ? 1 : 0;
qint32 skipArchiveInSearch = variables->skipArchiveInSearch.current() ? 1 : 0;
qint32 autoplayGifs = 1;
qint32 loopAnimatedStickers = _variables.loopAnimatedStickers ? 1 : 0;
qint32 largeEmoji = _variables.largeEmoji.current() ? 1 : 0;
qint32 replaceEmoji = _variables.replaceEmoji.current() ? 1 : 0;
qint32 suggestEmoji = _variables.suggestEmoji ? 1 : 0;
qint32 suggestStickersByEmoji = _variables.suggestStickersByEmoji ? 1 : 0;
qint32 spellcheckerEnabled = _variables.spellcheckerEnabled.current() ? 1 : 0;
qint32 loopAnimatedStickers = variables->loopAnimatedStickers ? 1 : 0;
qint32 largeEmoji = variables->largeEmoji.current() ? 1 : 0;
qint32 replaceEmoji = variables->replaceEmoji.current() ? 1 : 0;
qint32 suggestEmoji = variables->suggestEmoji ? 1 : 0;
qint32 suggestStickersByEmoji = variables->suggestStickersByEmoji ? 1 : 0;
qint32 spellcheckerEnabled = variables->spellcheckerEnabled.current() ? 1 : 0;
std::vector<std::pair<DocumentId, crl::time>> mediaLastPlaybackPosition;
qint32 videoPlaybackSpeed = SerializePlaybackSpeed(_variables.videoPlaybackSpeed.current());
QByteArray videoPipGeometry = _variables.videoPipGeometry;
qint32 videoPlaybackSpeed = SerializePlaybackSpeed(variables->videoPlaybackSpeed.current());
QByteArray videoPipGeometry = variables->videoPipGeometry;
std::vector<int> dictionariesEnabled;
qint32 autoDownloadDictionaries = _variables.autoDownloadDictionaries.current() ? 1 : 0;
qint32 autoDownloadDictionaries = variables->autoDownloadDictionaries.current() ? 1 : 0;
base::flat_map<PeerId, MsgId> hiddenPinnedMessages;
stream >> versionTag;
@ -336,18 +340,18 @@ void Settings::constructFromSerialized(const QByteArray &serialized) {
}
if (stream.status() != QDataStream::Ok) {
LOG(("App Error: "
"Bad data for Main::Settings::constructFromSerialized()"));
return;
"Bad data for Main::SessionSettings::FromSerialized()"));
return nullptr;
}
if (!autoDownload.isEmpty()
&& !_variables.autoDownload.setFromSerialized(autoDownload)) {
return;
&& !variables->autoDownload.setFromSerialized(autoDownload)) {
return nullptr;
}
if (!version) {
if (!autoplayGifs) {
using namespace Data::AutoDownload;
_variables.autoDownload = WithDisabledAutoPlay(
_variables.autoDownload);
variables->autoDownload = WithDisabledAutoPlay(
variables->autoDownload);
}
}
@ -355,104 +359,105 @@ void Settings::constructFromSerialized(const QByteArray &serialized) {
switch (uncheckedTab) {
case ChatHelpers::SelectorTab::Emoji:
case ChatHelpers::SelectorTab::Stickers:
case ChatHelpers::SelectorTab::Gifs: _variables.selectorTab = uncheckedTab; break;
case ChatHelpers::SelectorTab::Gifs: variables->selectorTab = uncheckedTab; break;
}
_variables.lastSeenWarningSeen = (lastSeenWarningSeen == 1);
_variables.tabbedSelectorSectionEnabled = (tabbedSelectorSectionEnabled == 1);
_variables.soundOverrides = std::move(soundOverrides);
_variables.tabbedSelectorSectionTooltipShown = tabbedSelectorSectionTooltipShown;
variables->lastSeenWarningSeen = (lastSeenWarningSeen == 1);
variables->tabbedSelectorSectionEnabled = (tabbedSelectorSectionEnabled == 1);
variables->soundOverrides = std::move(soundOverrides);
variables->tabbedSelectorSectionTooltipShown = tabbedSelectorSectionTooltipShown;
auto uncheckedColumn = static_cast<Window::Column>(floatPlayerColumn);
switch (uncheckedColumn) {
case Window::Column::First:
case Window::Column::Second:
case Window::Column::Third: _variables.floatPlayerColumn = uncheckedColumn; break;
case Window::Column::Third: variables->floatPlayerColumn = uncheckedColumn; break;
}
auto uncheckedCorner = static_cast<RectPart>(floatPlayerCorner);
switch (uncheckedCorner) {
case RectPart::TopLeft:
case RectPart::TopRight:
case RectPart::BottomLeft:
case RectPart::BottomRight: _variables.floatPlayerCorner = uncheckedCorner; break;
case RectPart::BottomRight: variables->floatPlayerCorner = uncheckedCorner; break;
}
_variables.groupStickersSectionHidden = std::move(groupStickersSectionHidden);
_variables.thirdSectionInfoEnabled = thirdSectionInfoEnabled;
_variables.smallDialogsList = smallDialogsList;
_variables.dialogsWidthRatio = dialogsWidthRatio;
_variables.thirdColumnWidth = thirdColumnWidth;
_variables.thirdSectionExtendedBy = thirdSectionExtendedBy;
if (_variables.thirdSectionInfoEnabled) {
_variables.tabbedSelectorSectionEnabled = false;
variables->groupStickersSectionHidden = std::move(groupStickersSectionHidden);
variables->thirdSectionInfoEnabled = thirdSectionInfoEnabled;
variables->smallDialogsList = smallDialogsList;
variables->dialogsWidthRatio = dialogsWidthRatio;
variables->thirdColumnWidth = thirdColumnWidth;
variables->thirdSectionExtendedBy = thirdSectionExtendedBy;
if (variables->thirdSectionInfoEnabled) {
variables->tabbedSelectorSectionEnabled = false;
}
auto uncheckedSendFilesWay = static_cast<SendFilesWay>(sendFilesWay);
switch (uncheckedSendFilesWay) {
case SendFilesWay::Album:
case SendFilesWay::Photos:
case SendFilesWay::Files: _variables.sendFilesWay = uncheckedSendFilesWay; break;
case SendFilesWay::Files: variables->sendFilesWay = uncheckedSendFilesWay; break;
}
auto uncheckedSendSubmitWay = static_cast<Ui::InputSubmitSettings>(
sendSubmitWay);
switch (uncheckedSendSubmitWay) {
case Ui::InputSubmitSettings::Enter:
case Ui::InputSubmitSettings::CtrlEnter: _variables.sendSubmitWay = uncheckedSendSubmitWay; break;
case Ui::InputSubmitSettings::CtrlEnter: variables->sendSubmitWay = uncheckedSendSubmitWay; break;
}
auto uncheckedSupportSwitch = static_cast<Support::SwitchSettings>(
supportSwitch);
switch (uncheckedSupportSwitch) {
case Support::SwitchSettings::None:
case Support::SwitchSettings::Next:
case Support::SwitchSettings::Previous: _variables.supportSwitch = uncheckedSupportSwitch; break;
case Support::SwitchSettings::Previous: variables->supportSwitch = uncheckedSupportSwitch; break;
}
_variables.supportFixChatsOrder = (supportFixChatsOrder == 1);
_variables.supportTemplatesAutocomplete = (supportTemplatesAutocomplete == 1);
_variables.supportChatsTimeSlice = supportChatsTimeSlice;
_variables.hadLegacyCallsPeerToPeerNobody = (legacyCallsPeerToPeer == kLegacyCallsPeerToPeerNobody);
_variables.includeMutedCounter = (includeMutedCounter == 1);
_variables.countUnreadMessages = (countUnreadMessages == 1);
_variables.exeLaunchWarning = (exeLaunchWarning == 1);
_variables.supportAllSearchResults = (supportAllSearchResults == 1);
_variables.archiveCollapsed = (archiveCollapsed == 1);
_variables.notifyAboutPinned = (notifyAboutPinned == 1);
_variables.archiveInMainMenu = (archiveInMainMenu == 1);
_variables.skipArchiveInSearch = (skipArchiveInSearch == 1);
_variables.loopAnimatedStickers = (loopAnimatedStickers == 1);
_variables.largeEmoji = (largeEmoji == 1);
_variables.replaceEmoji = (replaceEmoji == 1);
_variables.suggestEmoji = (suggestEmoji == 1);
_variables.suggestStickersByEmoji = (suggestStickersByEmoji == 1);
_variables.spellcheckerEnabled = (spellcheckerEnabled == 1);
_variables.mediaLastPlaybackPosition = std::move(mediaLastPlaybackPosition);
_variables.videoPlaybackSpeed = DeserializePlaybackSpeed(videoPlaybackSpeed);
_variables.videoPipGeometry = videoPipGeometry;
_variables.dictionariesEnabled = std::move(dictionariesEnabled);
_variables.autoDownloadDictionaries = (autoDownloadDictionaries == 1);
_variables.hiddenPinnedMessages = std::move(hiddenPinnedMessages);
variables->supportFixChatsOrder = (supportFixChatsOrder == 1);
variables->supportTemplatesAutocomplete = (supportTemplatesAutocomplete == 1);
variables->supportChatsTimeSlice = supportChatsTimeSlice;
variables->hadLegacyCallsPeerToPeerNobody = (legacyCallsPeerToPeer == kLegacyCallsPeerToPeerNobody);
variables->includeMutedCounter = (includeMutedCounter == 1);
variables->countUnreadMessages = (countUnreadMessages == 1);
variables->exeLaunchWarning = (exeLaunchWarning == 1);
variables->supportAllSearchResults = (supportAllSearchResults == 1);
variables->archiveCollapsed = (archiveCollapsed == 1);
variables->notifyAboutPinned = (notifyAboutPinned == 1);
variables->archiveInMainMenu = (archiveInMainMenu == 1);
variables->skipArchiveInSearch = (skipArchiveInSearch == 1);
variables->loopAnimatedStickers = (loopAnimatedStickers == 1);
variables->largeEmoji = (largeEmoji == 1);
variables->replaceEmoji = (replaceEmoji == 1);
variables->suggestEmoji = (suggestEmoji == 1);
variables->suggestStickersByEmoji = (suggestStickersByEmoji == 1);
variables->spellcheckerEnabled = (spellcheckerEnabled == 1);
variables->mediaLastPlaybackPosition = std::move(mediaLastPlaybackPosition);
variables->videoPlaybackSpeed = DeserializePlaybackSpeed(videoPlaybackSpeed);
variables->videoPipGeometry = videoPipGeometry;
variables->dictionariesEnabled = std::move(dictionariesEnabled);
variables->autoDownloadDictionaries = (autoDownloadDictionaries == 1);
variables->hiddenPinnedMessages = std::move(hiddenPinnedMessages);
return result;
}
void Settings::setSupportChatsTimeSlice(int slice) {
void SessionSettings::setSupportChatsTimeSlice(int slice) {
_variables.supportChatsTimeSlice = slice;
}
int Settings::supportChatsTimeSlice() const {
int SessionSettings::supportChatsTimeSlice() const {
return _variables.supportChatsTimeSlice.current();
}
rpl::producer<int> Settings::supportChatsTimeSliceValue() const {
rpl::producer<int> SessionSettings::supportChatsTimeSliceValue() const {
return _variables.supportChatsTimeSlice.value();
}
void Settings::setSupportAllSearchResults(bool all) {
void SessionSettings::setSupportAllSearchResults(bool all) {
_variables.supportAllSearchResults = all;
}
bool Settings::supportAllSearchResults() const {
bool SessionSettings::supportAllSearchResults() const {
return _variables.supportAllSearchResults.current();
}
rpl::producer<bool> Settings::supportAllSearchResultsValue() const {
rpl::producer<bool> SessionSettings::supportAllSearchResultsValue() const {
return _variables.supportAllSearchResults.value();
}
void Settings::setTabbedSelectorSectionEnabled(bool enabled) {
void SessionSettings::setTabbedSelectorSectionEnabled(bool enabled) {
_variables.tabbedSelectorSectionEnabled = enabled;
if (enabled) {
setThirdSectionInfoEnabled(false);
@ -460,12 +465,12 @@ void Settings::setTabbedSelectorSectionEnabled(bool enabled) {
setTabbedReplacedWithInfo(false);
}
rpl::producer<bool> Settings::tabbedReplacedWithInfoValue() const {
rpl::producer<bool> SessionSettings::tabbedReplacedWithInfoValue() const {
return _tabbedReplacedWithInfoValue.events_starting_with(
tabbedReplacedWithInfo());
}
void Settings::setThirdSectionInfoEnabled(bool enabled) {
void SessionSettings::setThirdSectionInfoEnabled(bool enabled) {
if (_variables.thirdSectionInfoEnabled != enabled) {
_variables.thirdSectionInfoEnabled = enabled;
if (enabled) {
@ -476,19 +481,19 @@ void Settings::setThirdSectionInfoEnabled(bool enabled) {
}
}
rpl::producer<bool> Settings::thirdSectionInfoEnabledValue() const {
rpl::producer<bool> SessionSettings::thirdSectionInfoEnabledValue() const {
return _thirdSectionInfoEnabledValue.events_starting_with(
thirdSectionInfoEnabled());
}
void Settings::setTabbedReplacedWithInfo(bool enabled) {
void SessionSettings::setTabbedReplacedWithInfo(bool enabled) {
if (_tabbedReplacedWithInfo != enabled) {
_tabbedReplacedWithInfo = enabled;
_tabbedReplacedWithInfoValue.fire_copy(enabled);
}
}
QString Settings::getSoundPath(const QString &key) const {
QString SessionSettings::getSoundPath(const QString &key) const {
auto it = _variables.soundOverrides.find(key);
if (it != _variables.soundOverrides.end()) {
return it->second;
@ -496,31 +501,31 @@ QString Settings::getSoundPath(const QString &key) const {
return qsl(":/sounds/") + key + qsl(".mp3");
}
void Settings::setDialogsWidthRatio(float64 ratio) {
void SessionSettings::setDialogsWidthRatio(float64 ratio) {
_variables.dialogsWidthRatio = ratio;
}
float64 Settings::dialogsWidthRatio() const {
float64 SessionSettings::dialogsWidthRatio() const {
return _variables.dialogsWidthRatio.current();
}
rpl::producer<float64> Settings::dialogsWidthRatioChanges() const {
rpl::producer<float64> SessionSettings::dialogsWidthRatioChanges() const {
return _variables.dialogsWidthRatio.changes();
}
void Settings::setThirdColumnWidth(int width) {
void SessionSettings::setThirdColumnWidth(int width) {
_variables.thirdColumnWidth = width;
}
int Settings::thirdColumnWidth() const {
int SessionSettings::thirdColumnWidth() const {
return _variables.thirdColumnWidth.current();
}
rpl::producer<int> Settings::thirdColumnWidthChanges() const {
rpl::producer<int> SessionSettings::thirdColumnWidthChanges() const {
return _variables.thirdColumnWidth.changes();
}
void Settings::setMediaLastPlaybackPosition(DocumentId id, crl::time time) {
void SessionSettings::setMediaLastPlaybackPosition(DocumentId id, crl::time time) {
auto &map = _variables.mediaLastPlaybackPosition;
const auto i = ranges::find(
map,
@ -540,7 +545,7 @@ void Settings::setMediaLastPlaybackPosition(DocumentId id, crl::time time) {
}
}
crl::time Settings::mediaLastPlaybackPosition(DocumentId id) const {
crl::time SessionSettings::mediaLastPlaybackPosition(DocumentId id) const {
const auto i = ranges::find(
_variables.mediaLastPlaybackPosition,
id,
@ -548,83 +553,83 @@ crl::time Settings::mediaLastPlaybackPosition(DocumentId id) const {
return (i != _variables.mediaLastPlaybackPosition.end()) ? i->second : 0;
}
void Settings::setArchiveCollapsed(bool collapsed) {
void SessionSettings::setArchiveCollapsed(bool collapsed) {
_variables.archiveCollapsed = collapsed;
}
bool Settings::archiveCollapsed() const {
bool SessionSettings::archiveCollapsed() const {
return _variables.archiveCollapsed.current();
}
rpl::producer<bool> Settings::archiveCollapsedChanges() const {
rpl::producer<bool> SessionSettings::archiveCollapsedChanges() const {
return _variables.archiveCollapsed.changes();
}
void Settings::setArchiveInMainMenu(bool inMainMenu) {
void SessionSettings::setArchiveInMainMenu(bool inMainMenu) {
_variables.archiveInMainMenu = inMainMenu;
}
bool Settings::archiveInMainMenu() const {
bool SessionSettings::archiveInMainMenu() const {
return _variables.archiveInMainMenu.current();
}
rpl::producer<bool> Settings::archiveInMainMenuChanges() const {
rpl::producer<bool> SessionSettings::archiveInMainMenuChanges() const {
return _variables.archiveInMainMenu.changes();
}
void Settings::setNotifyAboutPinned(bool notify) {
void SessionSettings::setNotifyAboutPinned(bool notify) {
_variables.notifyAboutPinned = notify;
}
bool Settings::notifyAboutPinned() const {
bool SessionSettings::notifyAboutPinned() const {
return _variables.notifyAboutPinned.current();
}
rpl::producer<bool> Settings::notifyAboutPinnedChanges() const {
rpl::producer<bool> SessionSettings::notifyAboutPinnedChanges() const {
return _variables.notifyAboutPinned.changes();
}
void Settings::setSkipArchiveInSearch(bool skip) {
void SessionSettings::setSkipArchiveInSearch(bool skip) {
_variables.skipArchiveInSearch = skip;
}
bool Settings::skipArchiveInSearch() const {
bool SessionSettings::skipArchiveInSearch() const {
return _variables.skipArchiveInSearch.current();
}
rpl::producer<bool> Settings::skipArchiveInSearchChanges() const {
rpl::producer<bool> SessionSettings::skipArchiveInSearchChanges() const {
return _variables.skipArchiveInSearch.changes();
}
void Settings::setLargeEmoji(bool value) {
void SessionSettings::setLargeEmoji(bool value) {
_variables.largeEmoji = value;
}
bool Settings::largeEmoji() const {
bool SessionSettings::largeEmoji() const {
return _variables.largeEmoji.current();
}
rpl::producer<bool> Settings::largeEmojiValue() const {
rpl::producer<bool> SessionSettings::largeEmojiValue() const {
return _variables.largeEmoji.value();
}
rpl::producer<bool> Settings::largeEmojiChanges() const {
rpl::producer<bool> SessionSettings::largeEmojiChanges() const {
return _variables.largeEmoji.changes();
}
void Settings::setReplaceEmoji(bool value) {
void SessionSettings::setReplaceEmoji(bool value) {
_variables.replaceEmoji = value;
}
bool Settings::replaceEmoji() const {
bool SessionSettings::replaceEmoji() const {
return _variables.replaceEmoji.current();
}
rpl::producer<bool> Settings::replaceEmojiValue() const {
rpl::producer<bool> SessionSettings::replaceEmojiValue() const {
return _variables.replaceEmoji.value();
}
rpl::producer<bool> Settings::replaceEmojiChanges() const {
rpl::producer<bool> SessionSettings::replaceEmojiChanges() const {
return _variables.replaceEmoji.changes();
}

View file

@ -30,10 +30,11 @@ enum class SelectorTab;
namespace Main {
class Settings final {
class SessionSettings final {
public:
[[nodiscard]] QByteArray serialize() const;
void constructFromSerialized(const QByteArray &serialized);
[[nodiscard]] static std::unique_ptr<SessionSettings> FromSerialized(
const QByteArray &serialized);
void setLastSeenWarningSeen(bool lastSeenWarningSeen) {
_variables.lastSeenWarningSeen = lastSeenWarningSeen;

View file

@ -98,6 +98,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "export/view/export_view_top_bar.h"
#include "export/view/export_view_panel_controller.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "main/main_account.h"
#include "support/support_helper.h"
#include "storage/storage_facade.h"
@ -2282,7 +2283,7 @@ void MainWidget::ensureFirstColumnResizeAreaCreated() {
session().settings().setDialogsWidthRatio(
float64(_dialogsWidth) / width());
}
session().local().writeSettings();
session().saveSettings();
};
createResizeArea(
_firstColumnResizeArea,
@ -2306,7 +2307,7 @@ void MainWidget::ensureThirdColumnResizeAreaCreated() {
session().settings().thirdColumnWidth(),
st::columnMinimalWidthThird,
st::columnMaximalWidthThird));
session().local().writeSettings();
session().saveSettings();
};
createResizeArea(
_thirdColumnResizeArea,

View file

@ -810,7 +810,7 @@ void MainWindow::toggleDisplayNotifyFromTray() {
Global::SetRestoreFlashBounceNotifyFromTray(false);
}
}
account().local().writeSettings();
account().session().saveSettings();
using Change = Window::Notifications::ChangeType;
auto &changes = account().session().notifications().settingsChanged();
changes.notify(Change::DesktopEnabled);

View file

@ -21,6 +21,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "window/window_session_controller.h"
#include "window/section_widget.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "facades.h"
#include "app.h"
#include "styles/style_media_player.h"

View file

@ -26,6 +26,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "main/main_accounts.h" // Accounts::activeSessionValue.
#include "mainwindow.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "facades.h"
namespace Media {

View file

@ -143,7 +143,7 @@ Widget::Widget(QWidget *parent, not_null<Main::Session*> session)
Global::SetVoiceMsgPlaybackDoubled(doubled);
instance()->updateVoicePlaybackSpeed();
updatePlaybackSpeedIcon();
_session->local().writeSettings();
_session->saveSettings();
});
subscribe(instance()->repeatChangedNotifier(), [this](AudioMsgId::Type type) {

View file

@ -51,6 +51,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "main/main_account.h"
#include "main/main_accounts.h" // Accounts::activeSessionValue.
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "layout.h"
#include "storage/file_download.h"
#include "calls/calls_instance.h"

View file

@ -25,6 +25,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "mainwidget.h"
#include "storage/file_upload.h"
#include "mainwindow.h"
#include "main/main_session.h"
#include "media/audio/media_audio.h"
#include "media/player/media_player_instance.h"
#include "storage/localstorage.h"

View file

@ -28,6 +28,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/data_session.h"
#include "main/main_account.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "mtproto/facade.h"
#include "layout.h"
#include "facades.h"

View file

@ -46,6 +46,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "support/support_common.h"
#include "support/support_templates.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "mainwidget.h"
#include "mainwindow.h"
#include "facades.h"

View file

@ -13,6 +13,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "mainwindow.h"
#include "data/data_session.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "main/main_account.h"
#include "main/main_accounts.h"
#include "boxes/confirm_box.h"

View file

@ -26,6 +26,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "info/profile/info_profile_values.h"
#include "lang/lang_keys.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "window/window_session_controller.h"
#include "apiwrap.h"
#include "core/file_utilities.h"

View file

@ -22,6 +22,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "mainwindow.h"
#include "core/application.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "apiwrap.h"
#include "facades.h"
#include "app.h"
@ -593,7 +594,6 @@ void SetupNotificationsContent(
tr::lng_settings_count_unread(tr::now),
session->settings().countUnreadMessages());
AddSkip(container, st::settingsCheckboxesSkip);
AddDivider(container);
AddSkip(container, st::settingsCheckboxesSkip);

View file

@ -12,6 +12,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "apiwrap.h"
#include "mainwidget.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "data/data_user.h"
#include "data/data_session.h"
#include "data/data_changes.h"

View file

@ -391,7 +391,8 @@ bool ReadSetting(
stream >> v;
if (!CheckStreamStatus(stream)) return false;
context.sessionSettings().constructFromSerialized(v);
context.sessionSettingsStorage
= Main::SessionSettings::FromSerialized(v);
} break;
case dbiWorkMode: {

View file

@ -8,7 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#pragma once
#include "mtproto/mtproto_dc_options.h"
#include "main/main_settings.h"
#include "main/main_session_settings.h"
#include "storage/storage_account.h"
namespace MTP {
@ -19,9 +19,10 @@ namespace Storage {
namespace details {
struct ReadSettingsContext {
[[nodiscard]] Main::Settings &sessionSettings() {
[[nodiscard]] Main::SessionSettings &sessionSettings() {
if (!sessionSettingsStorage) {
sessionSettingsStorage = std::make_unique<Main::Settings>();
sessionSettingsStorage
= std::make_unique<Main::SessionSettings>();
}
return *sessionSettingsStorage;
}
@ -45,7 +46,7 @@ struct ReadSettingsContext {
qint64 cacheBigFileTotalSizeLimit = 0;
qint32 cacheBigFileTotalTimeLimit = 0;
std::unique_ptr<Main::Settings> sessionSettingsStorage;
std::unique_ptr<Main::SessionSettings> sessionSettingsStorage;
FileKey themeKeyLegacy = 0;
FileKey themeKeyDay = 0;

View file

@ -9,7 +9,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "storage/file_download.h"
#include "storage/localimageloader.h"
#include "main/main_session.h"
#include <QtCore/QTimer>

View file

@ -394,7 +394,7 @@ Account::ReadMapResult Account::readMapWith(
readLocations();
}
auto stored = readSettings();
auto stored = readSessionSettings();
readMtpData();
DEBUG_LOG(("selfSerialized set: %1").arg(selfSerialized.size()));
@ -745,11 +745,11 @@ void Account::deserializeCallSettings(QByteArray &settings) {
}
}
void Account::writeSettings() {
writeSettings(nullptr);
void Account::writeSessionSettings() {
writeSessionSettings(nullptr);
}
void Account::writeSettings(Main::Settings *stored) {
void Account::writeSessionSettings(Main::SessionSettings *stored) {
if (_readingUserSettings) {
LOG(("App Error: attempt to write settings while reading them!"));
return;
@ -846,7 +846,7 @@ ReadSettingsContext Account::prepareReadSettingsContext() const {
};
}
std::unique_ptr<Main::Settings> Account::readSettings() {
std::unique_ptr<Main::SessionSettings> Account::readSessionSettings() {
ReadSettingsContext context;
FileReadDescriptor userSettings;
if (!ReadEncryptedFile(userSettings, _settingsKey, _basePath, _localKey)) {
@ -855,7 +855,7 @@ std::unique_ptr<Main::Settings> Account::readSettings() {
Local::readOldUserSettings(true, context);
auto result = applyReadContext(std::move(context));
writeSettings(result.get());
writeSessionSettings(result.get());
return result;
}
@ -867,13 +867,13 @@ std::unique_ptr<Main::Settings> Account::readSettings() {
userSettings.stream >> blockId;
if (!CheckStreamStatus(userSettings.stream)) {
_readingUserSettings = false;
writeSettings();
writeSessionSettings();
return nullptr;
}
if (!ReadSetting(blockId, userSettings.stream, userSettings.version, context)) {
_readingUserSettings = false;
writeSettings();
writeSessionSettings();
return nullptr;
}
}
@ -883,7 +883,7 @@ std::unique_ptr<Main::Settings> Account::readSettings() {
return applyReadContext(std::move(context));
}
std::unique_ptr<Main::Settings> Account::applyReadContext(
std::unique_ptr<Main::SessionSettings> Account::applyReadContext(
ReadSettingsContext &&context) {
ApplyReadFallbackConfig(context);
@ -1326,7 +1326,7 @@ void Account::updateCacheSettings(
_cacheTotalTimeLimit = update.totalTimeLimit;
_cacheBigFileTotalSizeLimit = updateBig.totalSizeLimit;
_cacheBigFileTotalTimeLimit = updateBig.totalTimeLimit;
writeSettings();
writeSessionSettings();
}
QString Account::cacheBigFilePath() const {
@ -1894,7 +1894,7 @@ void Account::importOldRecentStickers() {
}
writeInstalledStickers();
writeSettings();
writeSessionSettings();
ClearKey(_recentStickersKeyOld, _basePath);
_recentStickersKeyOld = 0;

View file

@ -20,7 +20,7 @@ struct Settings;
namespace Main {
class Account;
class Settings;
class SessionSettings;
} // namespace Main
namespace Data {
@ -67,7 +67,7 @@ public:
return _localKey;
}
void writeSettings();
void writeSessionSettings();
void writeMtpData();
void writeMtpConfig();
@ -172,12 +172,12 @@ private:
void writeLocationsQueued();
void writeLocationsDelayed();
std::unique_ptr<Main::Settings> readSettings();
void writeSettings(Main::Settings *stored);
std::unique_ptr<Main::SessionSettings> readSessionSettings();
void writeSessionSettings(Main::SessionSettings *stored);
std::unique_ptr<MTP::Config> readMtpConfig();
void readMtpData();
std::unique_ptr<Main::Settings> applyReadContext(
std::unique_ptr<Main::SessionSettings> applyReadContext(
details::ReadSettingsContext &&context);
[[nodiscard]] QByteArray serializeCallSettings();

View file

@ -21,6 +21,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "base/unixtime.h"
#include "base/call_delayed.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "apiwrap.h"
#include "styles/style_chat_helpers.h"
#include "styles/style_window.h"

View file

@ -28,6 +28,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "storage/localimageloader.h"
#include "core/sandbox.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "apiwrap.h"
#include "facades.h"
#include "styles/style_layers.h"

View file

@ -24,6 +24,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "lang/lang_keys.h"
#include "data/data_session.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "base/crc32hash.h"
#include "base/call_delayed.h"
#include "ui/toast/toast.h"
@ -413,10 +414,10 @@ void MainWindow::initSize() {
? primaryScreen->availableGeometry()
: QRect(0, 0, st::windowDefaultWidth, st::windowDefaultHeight);
bool maximized = false;
const auto initialWidth = Main::Settings::ThirdColumnByDefault()
const auto initialWidth = Main::SessionSettings::ThirdColumnByDefault()
? st::windowBigDefaultWidth
: st::windowDefaultWidth;
const auto initialHeight = Main::Settings::ThirdColumnByDefault()
const auto initialHeight = Main::SessionSettings::ThirdColumnByDefault()
? st::windowBigDefaultHeight
: st::windowDefaultHeight;
auto geometry = QRect(

View file

@ -25,6 +25,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "api/api_updates.h"
#include "apiwrap.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "main/main_accounts.h"
#include "facades.h"
#include "app.h"

View file

@ -21,6 +21,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "window/themes/window_theme.h"
#include "storage/file_download.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "history/history.h"
#include "history/history_item.h"
#include "platform/platform_specific.h"

View file

@ -875,7 +875,7 @@ void ChatBackground::setTile(bool tile) {
if (this->tile() != old) {
if (!Data::details::IsTestingThemeWallPaper(_paper)
&& !Data::details::IsTestingDefaultWallPaper(_paper)) {
local().writeSettings();
local().writeSessionSettings();
}
notify(BackgroundUpdate(BackgroundUpdate::Type::Changed, tile));
}
@ -1030,7 +1030,7 @@ bool ChatBackground::isNonDefaultBackground() {
void ChatBackground::writeNewBackgroundSettings() {
if (tile() != _tileForRevert) {
local().writeSettings();
local().writeSessionSettings();
}
local().writeBackground(
_paper,
@ -1117,7 +1117,7 @@ void ChatBackground::reapplyWithNightMode(
ClearApplying();
keepApplied(saved.object, settingExactTheme);
if (tile() != _tileForRevert) {
local().writeSettings();
local().writeSessionSettings();
}
if (nightModeChanged) {
Local::writeSettings();

View file

@ -28,6 +28,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "lang/lang_keys.h"
#include "core/click_handler_types.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "mtproto/mtproto_config.h"
#include "data/data_folder.h"
#include "data/data_session.h"
@ -289,7 +290,7 @@ void MainMenu::refreshMenu() {
(*fix)->setChecked(!(*fix)->isChecked());
_controller->session().settings().setSupportFixChatsOrder(
(*fix)->isChecked());
_controller->session().local().writeSettings();
_controller->session().saveSettings();
}, &st::mainMenuFixOrder, &st::mainMenuFixOrderOver);
(*fix)->setCheckable(true);
(*fix)->setChecked(

View file

@ -21,6 +21,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "ui/widgets/checkbox.h"
#include "ui/layers/generic_box.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "apiwrap.h"
#include "mainwidget.h"
#include "mainwindow.h"

View file

@ -31,6 +31,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "mainwidget.h"
#include "mainwindow.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "apiwrap.h"
#include "support/support_helper.h"
#include "facades.h"