From 2522e66969cb8a5965422009b9b01bdc8093b924 Mon Sep 17 00:00:00 2001 From: John Preston Date: Sun, 24 Jun 2018 03:06:11 +0100 Subject: [PATCH] Move export descriptions to lang. --- Telegram/Resources/langs/lang.strings | 7 ++ .../export/data/export_data_about.h | 85 ------------------- .../SourceFiles/export/export_controller.cpp | 35 +++++--- .../SourceFiles/export/export_controller.h | 5 +- Telegram/SourceFiles/export/export_settings.h | 12 ++- .../export/output/export_output_abstract.cpp | 13 ++- .../export/output/export_output_abstract.h | 2 + .../export/output/export_output_html.cpp | 24 +++--- .../export/output/export_output_html.h | 6 +- .../export/output/export_output_json.cpp | 17 ++-- .../export/output/export_output_json.h | 7 +- .../export/output/export_output_text.cpp | 23 ++--- .../export/output/export_output_text.h | 6 +- .../view/export_view_panel_controller.cpp | 19 ++++- Telegram/gyp/lib_export.gyp | 1 - 15 files changed, 130 insertions(+), 132 deletions(-) delete mode 100644 Telegram/SourceFiles/export/data/export_data_about.h diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings index 11c8b4e0a366d9..a88544c3c0f832 100644 --- a/Telegram/Resources/langs/lang.strings +++ b/Telegram/Resources/langs/lang.strings @@ -1715,6 +1715,13 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "lng_export_suggest_title" = "Data export ready"; "lng_export_suggest_text" = "You can now download the data you requested. Start exporting data?"; "lng_export_suggest_cancel" = "Not now"; +"lng_export_about_telegram" = "Here is all the data you requested. Remember: we don’t use your data for ad targeting, we don’t sell it to others, and we’re not part of any “family of companies.”\n\nTelegram only keeps the information it needs to function as a feature-rich cloud service – for example, your cloud chats so that you can access them from any devices without using third-party backups, or your contacts so that you can rely on your existing social graph when messaging people on Telegram.\n\nCheck out Settings > Privacy & Security on Telegram's mobile apps for relevant settings."; +"lng_export_about_contacts" = "If you allow access, your contacts are continuously synced with Telegram. Thanks to this, you can easily switch to Telegram without losing your existing social graph – and connect with friends across all your devices. We use data about your contacts to let you know when they join Telegram. We also use it to make sure that you see the names you have in your phone book instead of the screen names people choose for themselves.\n\nYou can disable contacts syncing or delete your stored contacts in Settings > Privacy & Security on Telegram's mobile apps."; +"lng_export_about_frequent" = "This rating shows which people you are likelier to message frequently. Telegram uses this data to populate the 'People' box at the top of the Search section. The rating is also calculated for inline bots so that the app can suggest you the bots you are most likely to use in the attachment menu (or when you start a new message with \"@\").\n\nTo delete this data, go to Settings > Privacy & Security and disable 'Suggest Frequent Contacts' (requires Telegram for iOS v.4.8.3 or Telegram for Android v.4.8.10 or higher). See this page for more information: https://telegram.org/faq_export"; +"lng_export_about_sessions" = "We store this to display your connected devices in Settings > Privacy & Security > Active Sessions. Terminating a session removes this data from Telegram servers."; +"lng_export_about_web_sessions" = "We store this to display you the websites where you used Telegram to log in in Settings > Privacy & Security > Active Sessions. Disconnecting a website removes this data from Telegram servers."; +"lng_export_about_chats" = "This page lists all chats from this export and where to look for their data."; +"lng_export_about_left_chats" = "This page lists all supergroups and channels from this export that you've left and where to look for their data."; // Wnd specific diff --git a/Telegram/SourceFiles/export/data/export_data_about.h b/Telegram/SourceFiles/export/data/export_data_about.h deleted file mode 100644 index d2077e74a84fb2..00000000000000 --- a/Telegram/SourceFiles/export/data/export_data_about.h +++ /dev/null @@ -1,85 +0,0 @@ -/* -This file is part of Telegram Desktop, -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 -*/ -#pragma once - -#include "export/data/export_data_types.h" - -namespace Export { -namespace Data { - -inline Utf8String AboutTelegram() { - return "Here is all the data you requested. " - "Remember: we don\xE2\x80\x99""t use your data for ad targeting, " - "we don\xE2\x80\x99""t sell it to others, " - "and we\xE2\x80\x99""re not part of any " - "\xE2\x80\x9C""family of companies.\xE2\x80\x9D\n\n" - "Telegram only keeps the information it needs to function " - "as a feature-rich cloud service \xE2\x80\x93 for example, " - "your cloud chats so that you can access them " - "from any devices without using third-party backups, " - "or your contacts so that you can rely " - "on your existing social graph " - "when messaging people on Telegram.\n\n" - "Check out Settings > Privacy & Security " - "on Telegram's mobile apps for relevant settings."; -} - -inline Utf8String AboutContacts() { - return "If you allow access, your contacts are continuously synced " - "with Telegram. Thanks to this, you can easily switch to Telegram " - "without losing your existing social graph " - "\xE2\x80\x93 and connect with friends across all your devices. " - "We use data about your contacts to let you know " - "when they join Telegram. We also use it to make sure " - "that you see the names you have in your phone book " - "instead of the screen names people choose for themselves.\n\n" - "You can disable contacts syncing or delete your stored contacts " - "in Settings > Privacy & Security on Telegram's mobile apps."; -} - -inline Utf8String AboutFrequent() { - return "This rating shows which people " - "you are likelier to message frequently. " - "Telegram uses this data to populate the 'People' box at the top " - "of the Search section. The rating is also calculated " - "for inline bots so that the app can suggest you " - "the bots you are most likely to use in the attachment menu " - "(or when you start a new message with \"@\").\n\n" - "To delete this data, go to Settings > Privacy & Security and " - "disable 'Suggest Frequent Contacts' " - "(requires Telegram for iOS v.4.8.3 " - "or Telegram for Android v.4.8.10 or higher). " - "See this page for more information: " - "https://telegram.org/faq_export"; -} - -inline Utf8String AboutSessions() { - return "We store this to display your connected devices " - "in Settings > Privacy & Security > Active Sessions. " - "Terminating a session removes this data from Telegram servers."; -} - -inline Utf8String AboutWebSessions() { - return "We store this to display you the websites " - "where you used Telegram to log in " - "in Settings > Privacy & Security > Active Sessions. " - "Disconnecting a website removes this data from Telegram servers."; -} - -inline Utf8String AboutChats() { - return "This page lists all chats from this export " - "and where to look for their data."; -} - -inline Utf8String AboutLeftChats() { - return "This page lists all supergroups and channels from this export " - "that you've left and where to look for their data."; -} - -} // namespace Data -} // namespace Export diff --git a/Telegram/SourceFiles/export/export_controller.cpp b/Telegram/SourceFiles/export/export_controller.cpp index 985ed971b5c214..385ca4b37714d1 100644 --- a/Telegram/SourceFiles/export/export_controller.cpp +++ b/Telegram/SourceFiles/export/export_controller.cpp @@ -32,7 +32,9 @@ class Controller { //void cancelUnconfirmedPassword(); // Processing step. - void startExport(const Settings &settings); + void startExport( + const Settings &settings, + const Environment &environment); void cancelExportFast(); private: @@ -51,6 +53,7 @@ class Controller { void fillSubstepsInSteps(const ApiWrap::StartInfo &info); void exportNext(); void initialize(); + void initialized(const ApiWrap::StartInfo &info); void collectLeftChannels(); void collectDialogsList(); void exportPersonalInfo(); @@ -92,6 +95,7 @@ class Controller { ApiWrap _api; Settings _settings; + Environment _environment; Data::DialogsInfo _leftChannelsInfo; int _leftChannelIndex = -1; @@ -219,11 +223,14 @@ bool Controller::ioCatchError(Output::Result result) { // //} -void Controller::startExport(const Settings &settings) { +void Controller::startExport( + const Settings &settings, + const Environment &environment) { if (!_settings.path.isEmpty()) { return; } _settings = base::duplicate(settings); + _environment = environment; _settings.path = Output::NormalizePath(_settings.path); _writer = Output::CreateWriter(_settings.format); @@ -339,14 +346,18 @@ void Controller::exportNext() { void Controller::initialize() { setState(stateInitializing()); _api.startExport(_settings, &_stats, [=](ApiWrap::StartInfo info) { - if (ioCatchError(_writer->start(_settings, &_stats))) { - return; - } - fillSubstepsInSteps(info); - exportNext(); + initialized(info); }); } +void Controller::initialized(const ApiWrap::StartInfo &info) { + if (ioCatchError(_writer->start(_settings, _environment, &_stats))) { + return; + } + fillSubstepsInSteps(info); + exportNext(); +} + void Controller::collectLeftChannels() { setState(stateLeftChannelsList(0)); _api.requestLeftChannelsList([=](int count) { @@ -707,11 +718,13 @@ rpl::producer ControllerWrap::state() const { // }); //} -void ControllerWrap::startExport(const Settings &settings) { +void ControllerWrap::startExport( + const Settings &settings, + const Environment &environment) { LOG(("Export Info: Started export to '%1'.").arg(settings.path)); _wrapped.with([=](Controller &controller) { - controller.startExport(settings); + controller.startExport(settings, environment); }); } @@ -727,6 +740,8 @@ rpl::lifetime &ControllerWrap::lifetime() { return _lifetime; } -ControllerWrap::~ControllerWrap() = default; +ControllerWrap::~ControllerWrap() { + LOG(("Export Info: Controller destroyed.")); +} } // namespace Export diff --git a/Telegram/SourceFiles/export/export_controller.h b/Telegram/SourceFiles/export/export_controller.h index ac1928438a28db..33c59f47fff791 100644 --- a/Telegram/SourceFiles/export/export_controller.h +++ b/Telegram/SourceFiles/export/export_controller.h @@ -15,6 +15,7 @@ namespace Export { class Controller; struct Settings; +struct Environment; struct PasswordCheckState { QString hint; @@ -117,7 +118,9 @@ class ControllerWrap { //void cancelUnconfirmedPassword(); // Processing step. - void startExport(const Settings &settings); + void startExport( + const Settings &settings, + const Environment &environment); void cancelExportFast(); rpl::lifetime &lifetime(); diff --git a/Telegram/SourceFiles/export/export_settings.h b/Telegram/SourceFiles/export/export_settings.h index 123c2c624be69a..fc4afb28a33b94 100644 --- a/Telegram/SourceFiles/export/export_settings.h +++ b/Telegram/SourceFiles/export/export_settings.h @@ -70,7 +70,6 @@ struct Settings { friend inline constexpr auto is_flag_type(Type) { return true; }; QString path; - QString internalLinksDomain; Output::Format format = Output::Format(); Types types = DefaultTypes(); @@ -95,4 +94,15 @@ struct Settings { }; +struct Environment { + QString internalLinksDomain; + QByteArray aboutTelegram; + QByteArray aboutContacts; + QByteArray aboutFrequent; + QByteArray aboutSessions; + QByteArray aboutWebSessions; + QByteArray aboutChats; + QByteArray aboutLeftChats; +}; + } // namespace Export diff --git a/Telegram/SourceFiles/export/output/export_output_abstract.cpp b/Telegram/SourceFiles/export/output/export_output_abstract.cpp index 3f244a429aa4c2..76f92cd4ec3e4b 100644 --- a/Telegram/SourceFiles/export/output/export_output_abstract.cpp +++ b/Telegram/SourceFiles/export/output/export_output_abstract.cpp @@ -59,11 +59,20 @@ std::unique_ptr CreateWriter(Format format) { Stats AbstractWriter::produceTestExample(const QString &path) { auto result = Stats(); const auto folder = QDir(path).absolutePath(); + auto environment = Environment(); + environment.internalLinksDomain = "https://t.me/"; + environment.aboutTelegram = "About Telegram"; + environment.aboutContacts = "About contacts"; + environment.aboutFrequent = "About frequent"; + environment.aboutSessions = "About sessions"; + environment.aboutWebSessions = "About web sessions"; + environment.aboutChats = "About chats"; + environment.aboutLeftChats = "About left chats"; + auto settings = Settings(); settings.format = format(); settings.path = (folder.endsWith('/') ? folder : (folder + '/')) + "ExportExample/"; - settings.internalLinksDomain = "https://t.me/"; settings.types = Settings::Type::AllMask; settings.fullChats = Settings::Type::AllMask & ~(Settings::Type::PublicChannels | Settings::Type::PublicGroups); @@ -74,7 +83,7 @@ Stats AbstractWriter::produceTestExample(const QString &path) { Assert(result.isSuccess()); }; - check(start(settings, &result)); + check(start(settings, environment, &result)); const auto counter = [&] { static auto GlobalCounter = 0; diff --git a/Telegram/SourceFiles/export/output/export_output_abstract.h b/Telegram/SourceFiles/export/output/export_output_abstract.h index e28ae4e7a2d6c5..5fac809a2aa189 100644 --- a/Telegram/SourceFiles/export/output/export_output_abstract.h +++ b/Telegram/SourceFiles/export/output/export_output_abstract.h @@ -23,6 +23,7 @@ struct File; } // namespace Data struct Settings; +struct Environment; namespace Output { @@ -44,6 +45,7 @@ class AbstractWriter { [[nodiscard]] virtual Result start( const Settings &settings, + const Environment &environment, Stats *stats) = 0; [[nodiscard]] virtual Result writePersonal( diff --git a/Telegram/SourceFiles/export/output/export_output_html.cpp b/Telegram/SourceFiles/export/output/export_output_html.cpp index 373c186d54f697..26528fa28d7e89 100644 --- a/Telegram/SourceFiles/export/output/export_output_html.cpp +++ b/Telegram/SourceFiles/export/output/export_output_html.cpp @@ -9,7 +9,6 @@ For license and copyright information please follow this link: #include "export/output/export_output_result.h" #include "export/data/export_data_types.h" -#include "export/data/export_data_about.h" #include "core/utils.h" #include @@ -681,10 +680,14 @@ HtmlWriter::Wrap::~Wrap() { HtmlWriter::HtmlWriter() = default; -Result HtmlWriter::start(const Settings &settings, Stats *stats) { +Result HtmlWriter::start( + const Settings &settings, + const Environment &environment, + Stats *stats) { Expects(settings.path.endsWith('/')); _settings = base::duplicate(settings); + _environment = environment; _stats = stats; _summary = fileWithRelativePath(mainFileRelativePath()); @@ -699,7 +702,7 @@ Result HtmlWriter::start(const Settings &settings, Stats *stats) { return result; } return _summary->writeBlock( - MakeLinks(SerializeString(Data::AboutTelegram())) + MakeLinks(SerializeString(_environment.aboutTelegram)) + kLineBreak + kLineBreak); } @@ -833,7 +836,7 @@ Result HtmlWriter::writeSavedContacts(const Data::ContactsList &data) { })); } } - const auto full = MakeLinks(SerializeString(Data::AboutContacts())) + const auto full = MakeLinks(SerializeString(_environment.aboutContacts)) + kLineBreak + kLineBreak + JoinList(kLineBreak, list); @@ -922,7 +925,7 @@ Result HtmlWriter::writeFrequentContacts(const Data::ContactsList &data) { writeList(data.correspondents, "People"); writeList(data.inlineBots, "Inline bots"); writeList(data.phoneCalls, "Calls"); - const auto full = MakeLinks(SerializeString(Data::AboutFrequent())) + const auto full = MakeLinks(SerializeString(_environment.aboutFrequent)) + kLineBreak + kLineBreak + JoinList(kLineBreak, list); @@ -988,7 +991,7 @@ Result HtmlWriter::writeSessions(const Data::SessionsList &data) { { "Created", Data::FormatDateTime(session.created) }, })); } - const auto full = MakeLinks(SerializeString(Data::AboutSessions())) + const auto full = MakeLinks(SerializeString(_environment.aboutSessions)) + kLineBreak + kLineBreak + JoinList(kLineBreak, list); @@ -1046,7 +1049,8 @@ Result HtmlWriter::writeWebSessions(const Data::SessionsList &data) { }, })); } - const auto full = MakeLinks(SerializeString(Data::AboutWebSessions())) + const auto full = MakeLinks( + SerializeString(_environment.aboutWebSessions)) + kLineBreak + kLineBreak + JoinList(kLineBreak, list); @@ -1080,7 +1084,7 @@ Result HtmlWriter::writeDialogsStart(const Data::DialogsInfo &data) { return writeChatsStart( data, "Chats", - Data::AboutChats(), + _environment.aboutChats, "lists/chats.html"); } @@ -1104,7 +1108,7 @@ Result HtmlWriter::writeLeftChannelsStart(const Data::DialogsInfo &data) { return writeChatsStart( data, "Left chats", - Data::AboutLeftChats(), + _environment.aboutLeftChats, "lists/left_chats.html"); } @@ -1178,7 +1182,7 @@ Result HtmlWriter::writeChatSlice(const Data::MessagesSlice &data) { [&](QString path) { return _chat->relativePath(path); }, message, data.peers, - _settings.internalLinksDomain)); + _environment.internalLinksDomain)); } const auto full = _chat->empty() ? JoinList(kLineBreak, list) diff --git a/Telegram/SourceFiles/export/output/export_output_html.h b/Telegram/SourceFiles/export/output/export_output_html.h index 6a1fd8e2fa222d..28d1b0fe4f6330 100644 --- a/Telegram/SourceFiles/export/output/export_output_html.h +++ b/Telegram/SourceFiles/export/output/export_output_html.h @@ -23,7 +23,10 @@ class HtmlWriter : public AbstractWriter { return Format::Html; } - Result start(const Settings &settings, Stats *stats) override; + Result start( + const Settings &settings, + const Environment &environment, + Stats *stats) override; Result writePersonal(const Data::PersonalInfo &data) override; @@ -83,6 +86,7 @@ class HtmlWriter : public AbstractWriter { Result writeChatsEnd(); Settings _settings; + Environment _environment; Stats *_stats = nullptr; std::unique_ptr _summary; diff --git a/Telegram/SourceFiles/export/output/export_output_json.cpp b/Telegram/SourceFiles/export/output/export_output_json.cpp index 9300b3009f5b84..8ae76dfca7eb13 100644 --- a/Telegram/SourceFiles/export/output/export_output_json.cpp +++ b/Telegram/SourceFiles/export/output/export_output_json.cpp @@ -9,7 +9,6 @@ For license and copyright information please follow this link: #include "export/output/export_output_result.h" #include "export/data/export_data_types.h" -#include "export/data/export_data_about.h" #include "core/utils.h" #include @@ -572,11 +571,15 @@ QByteArray SerializeMessage( } // namespace -Result JsonWriter::start(const Settings &settings, Stats *stats) { +Result JsonWriter::start( + const Settings &settings, + const Environment &environment, + Stats *stats) { Expects(_output == nullptr); Expects(settings.path.endsWith('/')); _settings = base::duplicate(settings); + _environment = environment; _stats = stats; _output = fileWithRelativePath(mainFileRelativePath()); @@ -713,7 +716,7 @@ Result JsonWriter::writeSavedContacts(const Data::ContactsList &data) { auto block = prepareObjectItemStart("contacts"); block.append(pushNesting(Context::kObject)); block.append(prepareObjectItemStart("about")); - block.append(SerializeString(Data::AboutContacts())); + block.append(SerializeString(_environment.aboutContacts)); block.append(prepareObjectItemStart("list")); block.append(pushNesting(Context::kArray)); for (const auto index : Data::SortedContactsIndices(data)) { @@ -749,7 +752,7 @@ Result JsonWriter::writeFrequentContacts(const Data::ContactsList &data) { auto block = prepareObjectItemStart("frequent_contacts"); block.append(pushNesting(Context::kObject)); block.append(prepareObjectItemStart("about")); - block.append(SerializeString(Data::AboutFrequent())); + block.append(SerializeString(_environment.aboutFrequent)); block.append(prepareObjectItemStart("list")); block.append(pushNesting(Context::kArray)); const auto writeList = [&]( @@ -874,7 +877,7 @@ Result JsonWriter::writeSessions(const Data::SessionsList &data) { auto block = prepareObjectItemStart("sessions"); block.append(pushNesting(Context::kObject)); block.append(prepareObjectItemStart("about")); - block.append(SerializeString(Data::AboutSessions())); + block.append(SerializeString(_environment.aboutSessions)); block.append(prepareObjectItemStart("list")); block.append(pushNesting(Context::kArray)); for (const auto &session : data.list) { @@ -908,7 +911,7 @@ Result JsonWriter::writeWebSessions(const Data::SessionsList &data) { auto block = prepareObjectItemStart("web_sessions"); block.append(pushNesting(Context::kObject)); block.append(prepareObjectItemStart("about")); - block.append(SerializeString(Data::AboutWebSessions())); + block.append(SerializeString(_environment.aboutWebSessions)); block.append(prepareObjectItemStart("list")); block.append(pushNesting(Context::kArray)); for (const auto &session : data.webList) { @@ -1018,7 +1021,7 @@ Result JsonWriter::writeChatSlice(const Data::MessagesSlice &data) { _context, message, data.peers, - _settings.internalLinksDomain)); + _environment.internalLinksDomain)); } return _output->writeBlock(block); } diff --git a/Telegram/SourceFiles/export/output/export_output_json.h b/Telegram/SourceFiles/export/output/export_output_json.h index fb59c50ea3a3eb..3718d886727856 100644 --- a/Telegram/SourceFiles/export/output/export_output_json.h +++ b/Telegram/SourceFiles/export/output/export_output_json.h @@ -33,7 +33,10 @@ class JsonWriter : public AbstractWriter { return Format::Json; } - Result start(const Settings &settings, Stats *stats) override; + Result start( + const Settings &settings, + const Environment &environment, + Stats *stats) override; Result writePersonal(const Data::PersonalInfo &data) override; @@ -90,7 +93,9 @@ class JsonWriter : public AbstractWriter { Result writeChatsEnd(); Settings _settings; + Environment _environment; Stats *_stats = nullptr; + Context _context; bool _currentNestingHadItem = false; diff --git a/Telegram/SourceFiles/export/output/export_output_text.cpp b/Telegram/SourceFiles/export/output/export_output_text.cpp index 6caa06d84682cd..c8cda3b1c93e1c 100644 --- a/Telegram/SourceFiles/export/output/export_output_text.cpp +++ b/Telegram/SourceFiles/export/output/export_output_text.cpp @@ -9,7 +9,6 @@ For license and copyright information please follow this link: #include "export/output/export_output_result.h" #include "export/data/export_data_types.h" -#include "export/data/export_data_about.h" #include "core/utils.h" #include @@ -442,13 +441,17 @@ QByteArray SerializeMessage( } // namespace -Result TextWriter::start(const Settings &settings, Stats *stats) { +Result TextWriter::start( + const Settings &settings, + const Environment &environment, + Stats *stats) { Expects(settings.path.endsWith('/')); _settings = base::duplicate(settings); + _environment = environment; _stats = stats; _summary = fileWithRelativePath(mainFileRelativePath()); - return _summary->writeBlock(Data::AboutTelegram() + return _summary->writeBlock(_environment.aboutTelegram + kLineBreak + kLineBreak); } @@ -566,7 +569,7 @@ Result TextWriter::writeSavedContacts(const Data::ContactsList &data) { })); } } - const auto full = Data::AboutContacts() + const auto full = _environment.aboutContacts + kLineBreak + kLineBreak + JoinList(kLineBreak, list); @@ -645,7 +648,7 @@ Result TextWriter::writeFrequentContacts(const Data::ContactsList &data) { writeList(data.correspondents, "People"); writeList(data.inlineBots, "Inline bots"); writeList(data.phoneCalls, "Calls"); - const auto full = Data::AboutFrequent() + const auto full = _environment.aboutFrequent + kLineBreak + kLineBreak + JoinList(kLineBreak, list); @@ -701,7 +704,7 @@ Result TextWriter::writeSessions(const Data::SessionsList &data) { { "Created", Data::FormatDateTime(session.created) }, })); } - const auto full = Data::AboutSessions() + const auto full = _environment.aboutSessions + kLineBreak + kLineBreak + JoinList(kLineBreak, list); @@ -749,7 +752,7 @@ Result TextWriter::writeWebSessions(const Data::SessionsList &data) { { "Created", Data::FormatDateTime(session.created) }, })); } - const auto full = Data::AboutWebSessions() + const auto full = _environment.aboutWebSessions + kLineBreak + kLineBreak + JoinList(kLineBreak, list); @@ -777,7 +780,7 @@ Result TextWriter::writeDialogsStart(const Data::DialogsInfo &data) { return writeChatsStart( data, "Chats", - Data::AboutChats(), + _environment.aboutChats, "lists/chats.txt"); } @@ -801,7 +804,7 @@ Result TextWriter::writeLeftChannelsStart(const Data::DialogsInfo &data) { return writeChatsStart( data, "Left chats", - Data::AboutLeftChats(), + _environment.aboutLeftChats, "lists/left_chats.txt"); } @@ -873,7 +876,7 @@ Result TextWriter::writeChatSlice(const Data::MessagesSlice &data) { list.push_back(SerializeMessage( message, data.peers, - _settings.internalLinksDomain)); + _environment.internalLinksDomain)); } const auto full = _chat->empty() ? JoinList(kLineBreak, list) diff --git a/Telegram/SourceFiles/export/output/export_output_text.h b/Telegram/SourceFiles/export/output/export_output_text.h index 3d966236dc8309..e3a2e8bbce0f75 100644 --- a/Telegram/SourceFiles/export/output/export_output_text.h +++ b/Telegram/SourceFiles/export/output/export_output_text.h @@ -21,7 +21,10 @@ class TextWriter : public AbstractWriter { return Format::Text; } - Result start(const Settings &settings, Stats *stats) override; + Result start( + const Settings &settings, + const Environment &environment, + Stats *stats) override; Result writePersonal(const Data::PersonalInfo &data) override; @@ -73,6 +76,7 @@ class TextWriter : public AbstractWriter { Result writeChatsEnd(); Settings _settings; + Environment _environment; Stats *_stats = nullptr; std::unique_ptr _summary; diff --git a/Telegram/SourceFiles/export/view/export_view_panel_controller.cpp b/Telegram/SourceFiles/export/view/export_view_panel_controller.cpp index ed5e9fb75fbd27..bb33768d0ac7e9 100644 --- a/Telegram/SourceFiles/export/view/export_view_panel_controller.cpp +++ b/Telegram/SourceFiles/export/view/export_view_panel_controller.cpp @@ -83,6 +83,22 @@ void SuggestBox::prepare() { boxClosing() | rpl::start_with_next(clear, lifetime()); } +Environment PrepareEnvironment() { + auto result = Environment(); + const auto utfLang = [](LangKey key) { + return lang(key).toUtf8(); + }; + result.internalLinksDomain = Global::InternalLinksDomain(); + result.aboutTelegram = utfLang(lng_export_about_telegram); + result.aboutContacts = utfLang(lng_export_about_contacts); + result.aboutFrequent = utfLang(lng_export_about_frequent); + result.aboutSessions = utfLang(lng_export_about_sessions); + result.aboutWebSessions = utfLang(lng_export_about_web_sessions); + result.aboutChats = utfLang(lng_export_about_chats); + result.aboutLeftChats = utfLang(lng_export_about_left_chats); + return result; +} + } // namespace void SuggestStart() { @@ -104,7 +120,6 @@ PanelController::PanelController(not_null process) if (_settings->path.isEmpty()) { _settings->path = psDownloadPath(); } - _settings->internalLinksDomain = Global::InternalLinksDomain(); _process->state( ) | rpl::start_with_next([=](State &&state) { @@ -137,7 +152,7 @@ void PanelController::showSettings() { settings->startClicks( ) | rpl::start_with_next([=]() { showProgress(); - _process->startExport(*_settings); + _process->startExport(*_settings, PrepareEnvironment()); }, settings->lifetime()); settings->cancelClicks( diff --git a/Telegram/gyp/lib_export.gyp b/Telegram/gyp/lib_export.gyp index dc153129650f3e..0d368e2e7cf437 100644 --- a/Telegram/gyp/lib_export.gyp +++ b/Telegram/gyp/lib_export.gyp @@ -56,7 +56,6 @@ '<(src_loc)/export/export_controller.h', '<(src_loc)/export/export_settings.cpp', '<(src_loc)/export/export_settings.h', - '<(src_loc)/export/data/export_data_about.h', '<(src_loc)/export/data/export_data_types.cpp', '<(src_loc)/export/data/export_data_types.h', '<(src_loc)/export/output/export_output_abstract.cpp',