From e63d573414622b79b53d571a33f12a4958b88f13 Mon Sep 17 00:00:00 2001
From: John Preston <johnprestonmail@gmail.com>
Date: Tue, 9 Jan 2024 04:19:55 -0800
Subject: [PATCH] Proof-of-concept last seen hidden.

---
 .../icons/settings/premium/large_lastseen.png | Bin 0 -> 1864 bytes
 .../settings/premium/large_lastseen@2x.png    | Bin 0 -> 3667 bytes
 .../settings/premium/large_lastseen@3x.png    | Bin 0 -> 5500 bytes
 .../icons/settings/premium/large_readtime.png | Bin 0 -> 1768 bytes
 .../settings/premium/large_readtime@2x.png    | Bin 0 -> 3483 bytes
 .../settings/premium/large_readtime@3x.png    | Bin 0 -> 5251 bytes
 Telegram/Resources/langs/lang.strings         |  16 +-
 .../SourceFiles/boxes/premium_preview_box.cpp | 195 ++++++++++++++++++
 .../SourceFiles/boxes/premium_preview_box.h   |  11 +
 .../info/profile/info_profile_cover.cpp       |  45 +++-
 .../settings/settings_privacy_controllers.cpp |  21 +-
 .../settings/settings_privacy_controllers.h   |   2 +
 Telegram/SourceFiles/ui/effects/premium.style |  26 +++
 13 files changed, 291 insertions(+), 25 deletions(-)
 create mode 100644 Telegram/Resources/icons/settings/premium/large_lastseen.png
 create mode 100644 Telegram/Resources/icons/settings/premium/large_lastseen@2x.png
 create mode 100644 Telegram/Resources/icons/settings/premium/large_lastseen@3x.png
 create mode 100644 Telegram/Resources/icons/settings/premium/large_readtime.png
 create mode 100644 Telegram/Resources/icons/settings/premium/large_readtime@2x.png
 create mode 100644 Telegram/Resources/icons/settings/premium/large_readtime@3x.png

diff --git a/Telegram/Resources/icons/settings/premium/large_lastseen.png b/Telegram/Resources/icons/settings/premium/large_lastseen.png
new file mode 100644
index 0000000000000000000000000000000000000000..e47bd7935bc38ba2adea14a70d045dc999917df4
GIT binary patch
literal 1864
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
Cu!&y)

literal 0
HcmV?d00001

diff --git a/Telegram/Resources/icons/settings/premium/large_lastseen@2x.png b/Telegram/Resources/icons/settings/premium/large_lastseen@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..305b6a491966b13ac2338539e06bd5263edfc2e7
GIT binary patch
literal 3667
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

literal 0
HcmV?d00001

diff --git a/Telegram/Resources/icons/settings/premium/large_lastseen@3x.png b/Telegram/Resources/icons/settings/premium/large_lastseen@3x.png
new file mode 100644
index 0000000000000000000000000000000000000000..0cd1e12ab09dc27ab556a77078fb322b56164616
GIT binary patch
literal 5500
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

literal 0
HcmV?d00001

diff --git a/Telegram/Resources/icons/settings/premium/large_readtime.png b/Telegram/Resources/icons/settings/premium/large_readtime.png
new file mode 100644
index 0000000000000000000000000000000000000000..c06294a82e44e211c095e6c567a4a3e266597aef
GIT binary patch
literal 1768
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
KMNUMnLSTZsmOowq

literal 0
HcmV?d00001

diff --git a/Telegram/Resources/icons/settings/premium/large_readtime@2x.png b/Telegram/Resources/icons/settings/premium/large_readtime@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..f30a355ee8d7aa1c3d7b77632e1b2ebefd048d84
GIT binary patch
literal 3483
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
JPDHLkV1msInZW=6

literal 0
HcmV?d00001

diff --git a/Telegram/Resources/icons/settings/premium/large_readtime@3x.png b/Telegram/Resources/icons/settings/premium/large_readtime@3x.png
new file mode 100644
index 0000000000000000000000000000000000000000..1e7d022a30e9918d4aa81a699eebb8daf0ff6823
GIT binary patch
literal 5251
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

literal 0
HcmV?d00001

diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings
index bf186e1f7..73d0fde25 100644
--- a/Telegram/Resources/langs/lang.strings
+++ b/Telegram/Resources/langs/lang.strings
@@ -170,21 +170,21 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
 
 "lng_remember" = "Remember this choice";
 
-"lng_lastseen_show_title" = "Show your last seen";
-"lng_lastseen_show_about" = "To see **{user}'s** Last Seen time, either start showing your own Last Seen time...";
-"lng_lastseen_show_button" = "Show my Last Seen";
+"lng_lastseen_show_title" = "Show Your Last Seen";
+"lng_lastseen_show_about" = "To see **{user}'s** Last Seen time, either start\nshowing your own Last Seen time...";
+"lng_lastseen_show_button" = "Show My Last Seen";
 "lng_lastseen_or" = "or";
 "lng_lastseen_premium_title" = "Upgrade to Premium";
-"lng_lastseen_premium_about" = "Subscription will let you see **{user}'s** Last Seen status without showing yours.";
+"lng_lastseen_premium_about" = "Subscription will let you see **{user}'s** Last Seen\nstatus without showing yours.";
 "lng_lastseen_premium_button" = "Subscribe to Telegram Premium";
 "lng_lastseen_shown_toast" = "Your last seen time is now visible.";
 
-"lng_readtime_show_title" = "Show your read date";
-"lng_readtime_show_about" = "To see when **{user}** read the message, either start showing your own read time...";
-"lng_readtime_show_button" = "Show my Read Time";
+"lng_readtime_show_title" = "Show Your Read Date";
+"lng_readtime_show_about" = "To see when **{user}** read the message,\neither start showing your own read time...";
+"lng_readtime_show_button" = "Show My Read Time";
 "lng_readtime_or" = "or";
 "lng_readtime_premium_title" = "Upgrade to Premium";
-"lng_readtime_premium_about" = "Subscription will let you see **{user}'s** read time without showing yours.";
+"lng_readtime_premium_about" = "Subscription will let you see **{user}'s** read time\nwithout showing yours.";
 "lng_readtime_premium_button" = "Subscribe to Telegram Premium";
 "lng_readtime_shown_toast" = "Your read times are now visible.";
 
diff --git a/Telegram/SourceFiles/boxes/premium_preview_box.cpp b/Telegram/SourceFiles/boxes/premium_preview_box.cpp
index 06835d603..4f5afd8f0 100644
--- a/Telegram/SourceFiles/boxes/premium_preview_box.cpp
+++ b/Telegram/SourceFiles/boxes/premium_preview_box.cpp
@@ -55,6 +55,7 @@ constexpr auto kToggleStickerTimeout = 2 * crl::time(1000);
 constexpr auto kStarOpacityOff = 0.1;
 constexpr auto kStarOpacityOn = 1.;
 constexpr auto kStarPeriod = 3 * crl::time(1000);
+constexpr auto kShowOrLineOpacity = 0.3;
 
 using Data::ReactionId;
 
@@ -1315,6 +1316,200 @@ void PremiumUnavailableBox(not_null<Ui::GenericBox*> box) {
 	});
 }
 
+[[nodiscard]] object_ptr<Ui::RpWidget> MakeShowOrPremiumIcon(
+		not_null<Ui::RpWidget*> parent,
+		not_null<const style::icon*> icon) {
+	const auto margin = st::showOrIconMargin;
+	const auto padding = st::showOrIconPadding;
+	const auto inner = padding.top() + icon->height() + padding.bottom();
+	const auto full = margin.top() + inner + margin.bottom();
+	auto result = object_ptr<Ui::FixedHeightWidget>(parent, full);
+	const auto raw = result.data();
+
+	raw->resize(st::boxWideWidth, full);
+	raw->paintRequest(
+	) | rpl::start_with_next([=] {
+		auto p = QPainter(raw);
+		auto hq = PainterHighQualityEnabler(p);
+		const auto width = raw->width();
+		const auto position = QPoint((width - inner) / 2, margin.top());
+		const auto rect = QRect(position, QSize(inner, inner));
+		const auto shift = QPoint(padding.left(), padding.top());
+		p.setPen(Qt::NoPen);
+		p.setBrush(st::showOrIconBg);
+		p.drawEllipse(rect);
+		icon->paint(p, position + shift, width);
+	}, raw->lifetime());
+
+	return result;
+}
+
+[[nodiscard]] object_ptr<Ui::RpWidget> MakeShowOrLabel(
+		not_null<Ui::RpWidget*> parent,
+		rpl::producer<QString> text) {
+	auto result = object_ptr<Ui::FlatLabel>(
+		parent,
+		std::move(text),
+		st::showOrLabel);
+	const auto raw = result.data();
+
+	raw->paintRequest(
+	) | rpl::start_with_next([=] {
+		auto p = QPainter(raw);
+
+		const auto full = st::showOrLineWidth;
+		const auto left = (raw->width() - full) / 2;
+		const auto text = raw->textMaxWidth() + 2 * st::showOrLabelSkip;
+		const auto fill = (full - text) / 2;
+		const auto stroke = st::lineWidth;
+		const auto top = st::showOrLineTop;
+		p.setOpacity(kShowOrLineOpacity);
+		p.fillRect(left, top, fill, stroke, st::windowSubTextFg);
+		const auto start = left + full - fill;
+		p.fillRect(start, top, fill, stroke, st::windowSubTextFg);
+	}, raw->lifetime());
+
+	return result;
+}
+
+void ShowOrPremiumBox(
+		not_null<Ui::GenericBox*> box,
+		ShowOrPremium type,
+		QString shortName,
+		Fn<void()> justShow,
+		Fn<void()> toPremium) {
+	struct Skin {
+		rpl::producer<QString> showTitle;
+		rpl::producer<TextWithEntities> showAbout;
+		rpl::producer<QString> showButton;
+		rpl::producer<QString> orPremium;
+		rpl::producer<QString> premiumTitle;
+		rpl::producer<TextWithEntities> premiumAbout;
+		rpl::producer<QString> premiumButton;
+		QString toast;
+		const style::icon *icon = nullptr;
+	};
+	auto skin = (type == ShowOrPremium::LastSeen)
+		? Skin{
+			tr::lng_lastseen_show_title(),
+			tr::lng_lastseen_show_about(
+				lt_user,
+				rpl::single(TextWithEntities{ shortName }),
+				Ui::Text::RichLangValue),
+			tr::lng_lastseen_show_button(),
+			tr::lng_lastseen_or(),
+			tr::lng_lastseen_premium_title(),
+			tr::lng_lastseen_premium_about(
+				lt_user,
+				rpl::single(TextWithEntities{ shortName }),
+				Ui::Text::RichLangValue),
+			tr::lng_lastseen_premium_button(),
+			tr::lng_lastseen_shown_toast(tr::now),
+			&st::showOrIconLastSeen,
+		}
+		: (type == ShowOrPremium::ReadTime)
+		? Skin{
+			tr::lng_readtime_show_title(),
+			tr::lng_readtime_show_about(
+				lt_user,
+				rpl::single(TextWithEntities{ shortName }),
+				Ui::Text::RichLangValue),
+			tr::lng_readtime_show_button(),
+			tr::lng_readtime_or(),
+			tr::lng_readtime_premium_title(),
+			tr::lng_readtime_premium_about(
+				lt_user,
+				rpl::single(TextWithEntities{ shortName }),
+				Ui::Text::RichLangValue),
+			tr::lng_readtime_premium_button(),
+			tr::lng_readtime_shown_toast(tr::now),
+			&st::showOrIconReadTime,
+		}
+		: Skin();
+
+	box->setStyle(st::showOrBox);
+	box->setWidth(st::boxWideWidth);
+	box->addTopButton(st::boxTitleClose, [=] {
+		box->closeBox();
+	});
+
+	box->addRow(MakeShowOrPremiumIcon(box, skin.icon));
+	box->addRow(
+		object_ptr<Ui::FlatLabel>(
+			box,
+			std::move(skin.showTitle),
+			st::boostCenteredTitle),
+		st::showOrTitlePadding);
+	box->addRow(
+		object_ptr<Ui::FlatLabel>(
+			box,
+			std::move(skin.showAbout),
+			st::boostText),
+		st::showOrAboutPadding);
+	const auto show = box->addRow(
+		object_ptr<Ui::RoundButton>(
+			box,
+			std::move(skin.showButton),
+			st::showOrShowButton),
+		QMargins(
+			st::showOrBox.buttonPadding.left(),
+			0,
+			st::showOrBox.buttonPadding.right(),
+			0));
+	show->setTextTransform(Ui::RoundButton::TextTransform::NoTransform);
+	box->addRow(
+		MakeShowOrLabel(box, std::move(skin.orPremium)),
+		st::showOrLabelPadding);
+	box->addRow(
+		object_ptr<Ui::FlatLabel>(
+			box,
+			std::move(skin.premiumTitle),
+			st::boostCenteredTitle),
+		st::showOrTitlePadding);
+	box->addRow(
+		object_ptr<Ui::FlatLabel>(
+			box,
+			std::move(skin.premiumAbout),
+			st::boostText),
+		st::showOrPremiumAboutPadding);
+
+	const auto premium = Ui::CreateChild<Ui::GradientButton>(
+		box.get(),
+		Ui::Premium::ButtonGradientStops());
+
+	const auto &st = st::premiumPreviewBox.button;
+	premium->resize(st::showOrShowButton.width, st::showOrShowButton.height);
+
+	const auto label = Ui::CreateChild<Ui::FlatLabel>(
+		premium,
+		std::move(skin.premiumButton),
+		st::premiumPreviewButtonLabel);
+	label->setAttribute(Qt::WA_TransparentForMouseEvents);
+	rpl::combine(
+		premium->widthValue(),
+		label->widthValue()
+	) | rpl::start_with_next([=](int outer, int width) {
+		label->moveToLeft(
+			(outer - width) / 2,
+			st::premiumPreviewBox.button.textTop,
+			outer);
+	}, label->lifetime());
+
+	box->setShowFinishedCallback([=] {
+		premium->startGlareAnimation();
+	});
+
+	box->addButton(
+		object_ptr<Ui::AbstractButton>::fromRaw(premium));
+
+	show->setClickedCallback([box, justShow, toast = skin.toast] {
+		justShow();
+		box->uiShow()->showToast(toast);
+		box->closeBox();
+	});
+	premium->setClickedCallback(std::move(toPremium));
+}
+
 void DoubledLimitsPreviewBox(
 		not_null<Ui::GenericBox*> box,
 		not_null<Main::Session*> session) {
diff --git a/Telegram/SourceFiles/boxes/premium_preview_box.h b/Telegram/SourceFiles/boxes/premium_preview_box.h
index 60c5699ca..f49cdf618 100644
--- a/Telegram/SourceFiles/boxes/premium_preview_box.h
+++ b/Telegram/SourceFiles/boxes/premium_preview_box.h
@@ -83,6 +83,17 @@ void ShowPremiumPreviewToBuy(
 
 void PremiumUnavailableBox(not_null<Ui::GenericBox*> box);
 
+enum class ShowOrPremium : uchar {
+	LastSeen,
+	ReadTime,
+};
+void ShowOrPremiumBox(
+	not_null<Ui::GenericBox*> box,
+	ShowOrPremium type,
+	QString shortName,
+	Fn<void()> justShow,
+	Fn<void()> toPremium);
+
 [[nodiscard]] object_ptr<Ui::GradientButton> CreateUnlockButton(
 	QWidget *parent,
 	rpl::producer<QString> text);
diff --git a/Telegram/SourceFiles/info/profile/info_profile_cover.cpp b/Telegram/SourceFiles/info/profile/info_profile_cover.cpp
index 3f9445787..15ec3df2b 100644
--- a/Telegram/SourceFiles/info/profile/info_profile_cover.cpp
+++ b/Telegram/SourceFiles/info/profile/info_profile_cover.cpp
@@ -7,6 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
 */
 #include "info/profile/info_profile_cover.h"
 
+#include "api/api_user_privacy.h"
 #include "data/data_peer_values.h"
 #include "data/data_channel.h"
 #include "data/data_chat.h"
@@ -23,6 +24,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
 #include "info/profile/info_profile_emoji_status_panel.h"
 #include "info/info_controller.h"
 #include "boxes/peers/edit_forum_topic_box.h"
+#include "boxes/premium_preview_box.h"
 #include "history/view/media/history_view_sticker_player.h"
 #include "lang/lang_keys.h"
 #include "ui/controls/userpic_button.h"
@@ -373,23 +375,54 @@ void Cover::setupShowLastSeen() {
 		&& !user->isBot()
 		&& !user->isServiceUser()
 		&& user->session().premiumPossible()) {
+		if (user->session().premium()) {
+			if (user->onlineTill == kOnlineHidden) {
+				user->updateFullForced();
+			}
+			_showLastSeen->hide();
+			return;
+		}
+
 		rpl::combine(
 			user->session().changes().peerFlagsValue(
 				user,
 				Data::PeerUpdate::Flag::OnlineStatus),
 			Data::AmPremiumValue(&user->session())
-		) | rpl::start_with_next([=] {
-			_showLastSeen->setVisible(
-				(user->onlineTill == kOnlineHidden)
-				&& !user->session().premium()
-				&& user->session().premiumPossible());
+		) | rpl::start_with_next([=](auto, bool premium) {
+			const auto wasShown = !_showLastSeen->isHidden();
+			const auto onlineHidden = (user->onlineTill == kOnlineHidden);
+			const auto shown = onlineHidden
+				&& !premium
+				&& user->session().premiumPossible();
+			_showLastSeen->setVisible(shown);
+			if (wasShown && premium && onlineHidden) {
+				user->updateFullForced();
+			}
+		}, _showLastSeen->lifetime());
+
+		_controller->session().api().userPrivacy().value(
+			Api::UserPrivacy::Key::LastSeen
+		) | rpl::filter([=](Api::UserPrivacy::Rule rule) {
+			return (rule.option == Api::UserPrivacy::Option::Everyone);
+		}) | rpl::start_with_next([=] {
+			if (user->onlineTill == kOnlineHidden) {
+				user->updateFullForced();
+			}
 		}, _showLastSeen->lifetime());
 	} else {
 		_showLastSeen->hide();
 	}
 
 	_showLastSeen->setClickedCallback([=] {
-		::Settings::ShowPremium(_controller, u"lastseen_hidden"_q);
+		const auto type = ShowOrPremium::LastSeen;
+		auto box = Box(ShowOrPremiumBox, type, user->shortName(), [=] {
+			_controller->session().api().userPrivacy().save(
+				::Api::UserPrivacy::Key::LastSeen,
+				{});
+		}, [=] {
+			::Settings::ShowPremium(_controller, u"lastseen_hidden"_q);
+		});
+		_controller->show(std::move(box));
 	});
 }
 
diff --git a/Telegram/SourceFiles/settings/settings_privacy_controllers.cpp b/Telegram/SourceFiles/settings/settings_privacy_controllers.cpp
index c38afcd32..34e98bd42 100644
--- a/Telegram/SourceFiles/settings/settings_privacy_controllers.cpp
+++ b/Telegram/SourceFiles/settings/settings_privacy_controllers.cpp
@@ -710,21 +710,13 @@ object_ptr<Ui::RpWidget> LastSeenPrivacyController::setupBelowWidget(
 void LastSeenPrivacyController::confirmSave(
 		bool someAreDisallowed,
 		Fn<void()> saveCallback) {
-	const auto privacy = &_session->api().globalPrivacy();
-	const auto hideReadTime = _hideReadTime;
-	const auto save = [=, saveCallback = std::move(saveCallback)] {
-		if (privacy->hideReadTimeCurrent() != hideReadTime) {
-			privacy->updateHideReadTime(hideReadTime);
-		}
-		saveCallback();
-	};
 	if (someAreDisallowed && !Core::App().settings().lastSeenWarningSeen()) {
 		auto callback = [
 			=,
-			save = std::move(save)
+			saveCallback = std::move(saveCallback)
 		](Fn<void()> &&close) {
 			close();
-			save();
+			saveCallback();
 			Core::App().settings().setLastSeenWarningSeen(true);
 			Core::App().saveSettingsDelayed();
 		};
@@ -735,7 +727,14 @@ void LastSeenPrivacyController::confirmSave(
 		});
 		Ui::show(std::move(box), Ui::LayerOption::KeepOther);
 	} else {
-		save();
+		saveCallback();
+	}
+}
+
+void LastSeenPrivacyController::saveAdditional() {
+	const auto privacy = &_session->api().globalPrivacy();
+	if (privacy->hideReadTimeCurrent() != _hideReadTime) {
+		privacy->updateHideReadTime(_hideReadTime);
 	}
 }
 
diff --git a/Telegram/SourceFiles/settings/settings_privacy_controllers.h b/Telegram/SourceFiles/settings/settings_privacy_controllers.h
index 5211d0731..7b097ec44 100644
--- a/Telegram/SourceFiles/settings/settings_privacy_controllers.h
+++ b/Telegram/SourceFiles/settings/settings_privacy_controllers.h
@@ -117,6 +117,8 @@ public:
 		bool someAreDisallowed,
 		Fn<void()> saveCallback) override;
 
+	void saveAdditional() override;
+
 private:
 	const not_null<::Main::Session*> _session;
 	bool _hideReadTime = false;
diff --git a/Telegram/SourceFiles/ui/effects/premium.style b/Telegram/SourceFiles/ui/effects/premium.style
index c9c9ccd84..5b97d8cb4 100644
--- a/Telegram/SourceFiles/ui/effects/premium.style
+++ b/Telegram/SourceFiles/ui/effects/premium.style
@@ -303,3 +303,29 @@ boostReplaceIconSkip: 3px;
 boostReplaceIconOutline: 2px;
 boostReplaceIconAdd: point(4px, 2px);
 boostReplaceArrow: icon{{ "mediaview/next", windowSubTextFg }};
+
+showOrIconLastSeen: icon{{ "settings/premium/large_lastseen", windowFgActive }};
+showOrIconReadTime: icon{{ "settings/premium/large_readtime", windowFgActive }};
+showOrIconBg: windowBgActive;
+showOrIconPadding: margins(12px, 12px, 12px, 12px);
+showOrIconMargin: margins(0px, 28px, 0px, 12px);
+showOrTitlePadding: margins(0px, 0px, 0px, 5px);
+showOrAboutPadding: margins(0px, 0px, 0px, 16px);
+showOrShowButton: RoundButton(defaultActiveButton) {
+	width: 308px;
+	height: 42px;
+	textTop: 12px;
+	font: font(13px semibold);
+}
+showOrLabel: FlatLabel(boostText) {
+	textFg: windowSubTextFg;
+}
+showOrLineWidth: 190px;
+showOrLabelSkip: 7px;
+showOrLineTop: 10px;
+showOrLabelPadding: margins(0px, 17px, 0px, 13px);
+showOrPremiumAboutPadding: margins(0px, 0px, 0px, 0px);
+showOrBox: Box(boostBox) {
+	buttonPadding: margins(28px, 16px, 28px, 27px);
+	button: showOrShowButton;
+}