mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-04-14 13:17:08 +02:00
Show "Hide read time" only on non-trivial privacy.
This commit is contained in:
parent
5daa5a00f0
commit
3710d61a09
5 changed files with 49 additions and 10 deletions
|
@ -1108,7 +1108,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
"lng_edit_privacy_lastseen_always_title" = "Always share with";
|
||||
"lng_edit_privacy_lastseen_never_title" = "Never share with";
|
||||
"lng_edit_lastseen_hide_read_time" = "Hide read time";
|
||||
"lng_edit_lastseen_hide_read_time_about" = "Do not show the time when you read a message to people you hid your last seen from. If you turn this on, their read time will also be hidden from you. This does not affect group chats.";
|
||||
"lng_edit_lastseen_hide_read_time_about" = "Hide the time when you read messages from people who can't see your last seen. If you turn this on, their read time will also be hidden from you. This setting does not affect group chats.";
|
||||
"lng_edit_lastseen_subscribe" = "Subscribe to Telegram Premium";
|
||||
"lng_edit_lastseen_subscribe_about" = "If you subscribe to Premium, you will see other users' last seen and read time even if you hid yours from them (unless they specifically restricted it).";
|
||||
|
||||
|
|
|
@ -379,7 +379,7 @@ void EditPrivacyBox::setupContent() {
|
|||
auto middle = _controller->setupMiddleWidget(
|
||||
_window,
|
||||
content,
|
||||
std::move(optionValue));
|
||||
rpl::duplicate(optionValue));
|
||||
if (middle) {
|
||||
content->add(std::move(middle));
|
||||
}
|
||||
|
@ -396,7 +396,11 @@ void EditPrivacyBox::setupContent() {
|
|||
_controller->exceptionsDescription() | Ui::Text::ToWithEntities(),
|
||||
st::defaultVerticalListSkip);
|
||||
|
||||
if (auto below = _controller->setupBelowWidget(_window, content)) {
|
||||
auto below = _controller->setupBelowWidget(
|
||||
_window,
|
||||
content,
|
||||
rpl::duplicate(optionValue));
|
||||
if (below) {
|
||||
content->add(std::move(below));
|
||||
}
|
||||
|
||||
|
|
|
@ -75,7 +75,8 @@ public:
|
|||
}
|
||||
[[nodiscard]] virtual object_ptr<Ui::RpWidget> setupBelowWidget(
|
||||
not_null<Window::SessionController*> controller,
|
||||
not_null<QWidget*> parent) {
|
||||
not_null<QWidget*> parent,
|
||||
rpl::producer<Option> option) {
|
||||
return { nullptr };
|
||||
}
|
||||
|
||||
|
|
|
@ -669,9 +669,17 @@ auto LastSeenPrivacyController::exceptionsDescription() const
|
|||
|
||||
object_ptr<Ui::RpWidget> LastSeenPrivacyController::setupBelowWidget(
|
||||
not_null<Window::SessionController*> controller,
|
||||
not_null<QWidget*> parent) {
|
||||
auto result = object_ptr<Ui::VerticalLayout>(parent);
|
||||
const auto content = result.data();
|
||||
not_null<QWidget*> parent,
|
||||
rpl::producer<Option> option) {
|
||||
using namespace rpl::mappers;
|
||||
|
||||
auto result = object_ptr<Ui::SlideWrap<Ui::VerticalLayout>>(
|
||||
parent,
|
||||
object_ptr<Ui::VerticalLayout>(parent));
|
||||
|
||||
_option = std::move(option);
|
||||
|
||||
const auto content = result->entity();
|
||||
|
||||
Ui::AddSkip(content);
|
||||
|
||||
|
@ -704,9 +712,22 @@ object_ptr<Ui::RpWidget> LastSeenPrivacyController::setupBelowWidget(
|
|||
tr::lng_edit_lastseen_subscribe_about());
|
||||
}
|
||||
|
||||
result->toggleOn(rpl::combine(
|
||||
_option.value(),
|
||||
_exceptionsNever.value(),
|
||||
(_1 != Option::Everyone) || (_2 > 0)));
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void LastSeenPrivacyController::handleExceptionsChange(
|
||||
Exception exception,
|
||||
rpl::producer<int> value) {
|
||||
if (exception == Exception::Never) {
|
||||
_exceptionsNever = std::move(value);
|
||||
}
|
||||
}
|
||||
|
||||
void LastSeenPrivacyController::confirmSave(
|
||||
bool someAreDisallowed,
|
||||
Fn<void()> saveCallback) {
|
||||
|
@ -732,6 +753,10 @@ void LastSeenPrivacyController::confirmSave(
|
|||
}
|
||||
|
||||
void LastSeenPrivacyController::saveAdditional() {
|
||||
if (_option.current() == Option::Everyone
|
||||
&& !_exceptionsNever.current()) {
|
||||
return;
|
||||
}
|
||||
const auto privacy = &_session->api().globalPrivacy();
|
||||
if (privacy->hideReadTimeCurrent() != _hideReadTime) {
|
||||
privacy->updateHideReadTime(_hideReadTime);
|
||||
|
@ -811,7 +836,8 @@ auto CallsPrivacyController::exceptionsDescription() const
|
|||
|
||||
object_ptr<Ui::RpWidget> CallsPrivacyController::setupBelowWidget(
|
||||
not_null<Window::SessionController*> controller,
|
||||
not_null<QWidget*> parent) {
|
||||
not_null<QWidget*> parent,
|
||||
rpl::producer<Option> option) {
|
||||
auto result = object_ptr<Ui::VerticalLayout>(parent);
|
||||
const auto content = result.data();
|
||||
|
||||
|
|
|
@ -109,9 +109,14 @@ public:
|
|||
Exception exception) const override;
|
||||
rpl::producer<QString> exceptionsDescription() const override;
|
||||
|
||||
void handleExceptionsChange(
|
||||
Exception exception,
|
||||
rpl::producer<int> value) override;
|
||||
|
||||
object_ptr<Ui::RpWidget> setupBelowWidget(
|
||||
not_null<Window::SessionController*> controller,
|
||||
not_null<QWidget*> parent) override;
|
||||
not_null<QWidget*> parent,
|
||||
rpl::producer<Option> option) override;
|
||||
|
||||
void confirmSave(
|
||||
bool someAreDisallowed,
|
||||
|
@ -121,6 +126,8 @@ public:
|
|||
|
||||
private:
|
||||
const not_null<::Main::Session*> _session;
|
||||
rpl::variable<Option> _option;
|
||||
rpl::variable<int> _exceptionsNever;
|
||||
bool _hideReadTime = false;
|
||||
|
||||
};
|
||||
|
@ -159,7 +166,8 @@ public:
|
|||
|
||||
object_ptr<Ui::RpWidget> setupBelowWidget(
|
||||
not_null<Window::SessionController*> controller,
|
||||
not_null<QWidget*> parent) override;
|
||||
not_null<QWidget*> parent,
|
||||
rpl::producer<Option> option) override;
|
||||
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue