mirror of
https://github.com/telegramdesktop/tdesktop
synced 2025-02-24 01:06:59 +00:00
Improved FAQ buttons with opening link in instant view.
This commit is contained in:
parent
d675e31a51
commit
2a388ae4b2
@ -508,6 +508,8 @@ PRIVATE
|
||||
data/data_drafts.h
|
||||
data/data_emoji_statuses.cpp
|
||||
data/data_emoji_statuses.h
|
||||
data/data_faq.cpp
|
||||
data/data_faq.h
|
||||
data/data_folder.cpp
|
||||
data/data_folder.h
|
||||
data/data_forum.cpp
|
||||
|
@ -1068,6 +1068,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_settings_faq_button" = "Go to FAQ";
|
||||
"lng_settings_ask_ok" = "Ask a Volunteer";
|
||||
"lng_settings_faq" = "Telegram FAQ";
|
||||
"lng_settings_faq_link" = "https://telegram.org/faq#general-questions";
|
||||
"lng_settings_features" = "Telegram Features";
|
||||
"lng_settings_logout" = "Log Out";
|
||||
"lng_sure_logout" = "Are you sure you want to log out?";
|
||||
|
@ -127,4 +127,3 @@ rpl::producer<bool> IsBirthdayTodayValue(Birthday date) {
|
||||
}
|
||||
|
||||
} // namespace Data
|
||||
|
||||
|
53
Telegram/SourceFiles/data/data_faq.cpp
Normal file
53
Telegram/SourceFiles/data/data_faq.cpp
Normal file
@ -0,0 +1,53 @@
|
||||
/*
|
||||
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
|
||||
*/
|
||||
#include "data/data_faq.h"
|
||||
|
||||
#include "apiwrap.h"
|
||||
#include "core/application.h"
|
||||
#include "data/data_session.h"
|
||||
#include "data/data_web_page.h"
|
||||
#include "iv/iv_instance.h"
|
||||
#include "lang/lang_keys.h"
|
||||
#include "main/main_session.h"
|
||||
#include "main/session/session_show.h"
|
||||
#include "ui/basic_click_handlers.h"
|
||||
|
||||
namespace Data {
|
||||
|
||||
void Faq::open(std::shared_ptr<Main::SessionShow> show) {
|
||||
if (!_id) {
|
||||
show->session().api().request(MTPmessages_GetWebPage(
|
||||
MTP_string(tr::lng_settings_faq_link(tr::now)),
|
||||
MTP_int(0)
|
||||
)).done([=](const MTPmessages_WebPage &result) {
|
||||
show->session().data().processUsers(result.data().vusers());
|
||||
show->session().data().processChats(result.data().vchats());
|
||||
const auto page = show->session().data().processWebpage(
|
||||
result.data().vwebpage());
|
||||
if (page && page->iv) {
|
||||
_id = page->id;
|
||||
open(show);
|
||||
} else {
|
||||
UrlClickHandler::Open(tr::lng_settings_faq_link(tr::now));
|
||||
}
|
||||
}).fail([=] {
|
||||
UrlClickHandler::Open(tr::lng_settings_faq_link(tr::now));
|
||||
}).send();
|
||||
} else {
|
||||
const auto page = show->session().data().webpage(_id);
|
||||
if (page && page->iv) {
|
||||
const auto parts = tr::lng_settings_faq_link(tr::now).split('#');
|
||||
const auto hash = (parts.size() > 1) ? parts[1] : u""_q;
|
||||
Core::App().iv().show(show, page->iv.get(), hash);
|
||||
} else {
|
||||
UrlClickHandler::Open(tr::lng_settings_faq_link(tr::now));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace Data
|
27
Telegram/SourceFiles/data/data_faq.h
Normal file
27
Telegram/SourceFiles/data/data_faq.h
Normal file
@ -0,0 +1,27 @@
|
||||
/*
|
||||
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
|
||||
|
||||
namespace Main {
|
||||
class SessionShow;
|
||||
} // namespace Main
|
||||
|
||||
namespace Data {
|
||||
|
||||
class Faq final {
|
||||
public:
|
||||
constexpr Faq() = default;
|
||||
|
||||
void open(std::shared_ptr<Main::SessionShow> show);
|
||||
|
||||
private:
|
||||
WebPageId _id = 0;
|
||||
|
||||
};
|
||||
|
||||
} // namespace Data
|
@ -10,6 +10,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
#include "storage/storage_databases.h"
|
||||
#include "dialogs/dialogs_main_list.h"
|
||||
#include "data/data_groups.h"
|
||||
#include "data/data_faq.h"
|
||||
#include "data/data_cloud_file.h"
|
||||
#include "history/history_location_manager.h"
|
||||
#include "base/timer.h"
|
||||
@ -101,6 +102,9 @@ public:
|
||||
[[nodiscard]] const Groups &groups() const {
|
||||
return _groups;
|
||||
}
|
||||
[[nodiscard]] Faq &faq() {
|
||||
return _faq;
|
||||
}
|
||||
[[nodiscard]] ChatFilters &chatsFilters() const {
|
||||
return *_chatsFilters;
|
||||
}
|
||||
@ -1068,6 +1072,7 @@ private:
|
||||
mtpRequestId> _viewAsMessagesRequests;
|
||||
|
||||
Groups _groups;
|
||||
Faq _faq;
|
||||
const std::unique_ptr<ChatFilters> _chatsFilters;
|
||||
const std::unique_ptr<CloudThemes> _cloudThemes;
|
||||
const std::unique_ptr<SendActionManager> _sendActionManager;
|
||||
|
@ -11,10 +11,10 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
#include "settings/settings_main.h"
|
||||
#include "settings/settings_chat.h"
|
||||
#include "settings/settings_codes.h"
|
||||
#include "ui/basic_click_handlers.h"
|
||||
#include "ui/wrap/fade_wrap.h"
|
||||
#include "ui/wrap/vertical_layout.h"
|
||||
#include "ui/widgets/shadow.h"
|
||||
#include "ui/widgets/labels.h"
|
||||
#include "ui/widgets/buttons.h"
|
||||
#include "ui/widgets/scroll_area.h"
|
||||
#include "ui/cached_round_corners.h"
|
||||
@ -104,7 +104,14 @@ object_ptr<Ui::RpWidget> CreateIntroSettings(
|
||||
|
||||
Ui::AddDivider(result);
|
||||
Ui::AddSkip(result);
|
||||
SetupFaq(result, false);
|
||||
|
||||
AddButtonWithIcon(
|
||||
result,
|
||||
tr::lng_settings_faq(),
|
||||
st::settingsButtonNoIcon
|
||||
)->addClickHandler([] {
|
||||
UrlClickHandler::Open(tr::lng_telegram_features_url(tr::now));
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
@ -26,13 +26,9 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
#include "ui/basic_click_handlers.h"
|
||||
#include "ui/boxes/confirm_box.h"
|
||||
#include "ui/controls/userpic_button.h"
|
||||
#include "ui/wrap/vertical_layout.h"
|
||||
#include "ui/wrap/slide_wrap.h"
|
||||
#include "ui/wrap/padding_wrap.h"
|
||||
#include "ui/widgets/menu/menu_add_action_callback.h"
|
||||
#include "ui/widgets/labels.h"
|
||||
#include "ui/widgets/continuous_sliders.h"
|
||||
#include "ui/widgets/buttons.h"
|
||||
#include "ui/text/text_utilities.h"
|
||||
#include "ui/toast/toast.h"
|
||||
#include "ui/new_badges.h"
|
||||
@ -43,9 +39,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
#include "data/data_session.h"
|
||||
#include "data/data_cloud_themes.h"
|
||||
#include "data/data_chat_filters.h"
|
||||
#include "data/data_peer_values.h" // Data::AmPremiumValue
|
||||
#include "lang/lang_cloud_manager.h"
|
||||
#include "lang/lang_keys.h"
|
||||
#include "lang/lang_instance.h"
|
||||
#include "storage/localstorage.h"
|
||||
#include "main/main_session.h"
|
||||
@ -62,13 +56,9 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
#include "info/profile/info_profile_values.h"
|
||||
#include "window/window_controller.h"
|
||||
#include "window/window_session_controller.h"
|
||||
#include "core/file_utilities.h"
|
||||
#include "core/application.h"
|
||||
#include "base/call_delayed.h"
|
||||
#include "base/unixtime.h"
|
||||
#include "base/platform/base_platform_info.h"
|
||||
#include "styles/style_settings.h"
|
||||
#include "styles/style_boxes.h"
|
||||
#include "styles/style_info.h"
|
||||
#include "styles/style_menu_icons.h"
|
||||
|
||||
@ -611,26 +601,20 @@ void SetupInterfaceScale(
|
||||
}
|
||||
}
|
||||
|
||||
void OpenFaq() {
|
||||
File::OpenUrl(telegramFaqLink());
|
||||
}
|
||||
|
||||
void SetupFaq(not_null<Ui::VerticalLayout*> container, bool icon) {
|
||||
AddButtonWithIcon(
|
||||
container,
|
||||
tr::lng_settings_faq(),
|
||||
icon ? st::settingsButton : st::settingsButtonNoIcon,
|
||||
{ icon ? &st::menuIconFaq : nullptr }
|
||||
)->addClickHandler(OpenFaq);
|
||||
}
|
||||
|
||||
void SetupHelp(
|
||||
not_null<Window::SessionController*> controller,
|
||||
not_null<Ui::VerticalLayout*> container) {
|
||||
Ui::AddDivider(container);
|
||||
Ui::AddSkip(container);
|
||||
|
||||
SetupFaq(container);
|
||||
AddButtonWithIcon(
|
||||
container,
|
||||
tr::lng_settings_faq(),
|
||||
st::settingsButton,
|
||||
{ &st::menuIconFaq }
|
||||
)->addClickHandler([=] {
|
||||
controller->session().data().faq().open(controller->uiShow());
|
||||
});
|
||||
|
||||
AddButtonWithIcon(
|
||||
container,
|
||||
@ -674,7 +658,10 @@ void SetupHelp(
|
||||
auto box = Ui::MakeConfirmBox({
|
||||
.text = tr::lng_settings_ask_sure(),
|
||||
.confirmed = sure,
|
||||
.cancelled = OpenFaq,
|
||||
.cancelled = [=](Fn<void()> close) {
|
||||
controller->session().data().faq().open(controller->uiShow());
|
||||
close();
|
||||
},
|
||||
.confirmText = tr::lng_settings_ask_ok(),
|
||||
.cancelText = tr::lng_settings_faq_button(),
|
||||
.strictCancel = true,
|
||||
|
@ -28,9 +28,6 @@ void SetupInterfaceScale(
|
||||
not_null<Window::Controller*> window,
|
||||
not_null<Ui::VerticalLayout*> container,
|
||||
bool icon = true);
|
||||
void SetupFaq(
|
||||
not_null<Ui::VerticalLayout*> container,
|
||||
bool icon = true);
|
||||
|
||||
class Main : public Section<Main> {
|
||||
public:
|
||||
|
Loading…
Reference in New Issue
Block a user