feat: implement showGhostToggleInDrawer

feat: implement `markReadAfterSend`
feat: tweak defaults
fix: remove comma if a message is deleted
This commit is contained in:
ZavaruKitsu 2023-06-06 23:59:36 +03:00
parent a53c40e03b
commit 45497bc444
8 changed files with 119 additions and 29 deletions

View file

@ -3864,6 +3864,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
"ayu_EnableAds" = "Enable ads";
"ayu_CustomizationHeader" = "Customization";
"ayu_DeletedMarkText" = "Deleted mark";
"ayu_EditedMarkText" = "Edited mark";
"ayu_ShowGhostToggleInDrawer" = "Show ghost mode toggle";
"ayu_CleanDatabase" = "Clean database";
"ayu_CleanDatabaseNotification" = "AyuGram database cleaned";
@ -3874,6 +3875,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
"ayu_EditsHistoryTitle" = "Edits history";
"ayu_EditsHistoryMenuText" = "History";
"ayu_ReadUntilMenuText" = "Read until";
"ayu_ForwardsRestrictedInfoDeleted" = "Forwarding of deleted message is not supported.";
"ayu_LikelyOfflineStatus" = "offline ?";
"ayu_GhostModeShortcut" = "Enter with Ghost";
"ayu_SettingsWatermark" = "AyuGram developed and maintained by Radolyn Labs";

View file

@ -9,13 +9,19 @@ namespace AyuSettings {
rpl::variable<bool> sendReadPacketsReactive;
rpl::variable<bool> sendOnlinePacketsReactive;
rpl::variable<bool> sendOfflinePacketAfterOnlineReactive;
rpl::variable<bool> sendUploadProgressReactive;
rpl::variable<bool> sendOfflinePacketAfterOnlineReactive;
rpl::variable<bool> markReadAfterSendReactive;
rpl::variable<bool> useScheduledMessagesReactive;
rpl::variable<bool> keepDeletedMessagesReactive;
rpl::variable<bool> keepMessagesHistoryReactive;
rpl::variable<QString> deletedMarkReactive;
rpl::variable<QString> editedMarkReactive;
rpl::variable<bool> showGhostToggleInDrawerReactive;
rpl::variable<int> showPeerIdReactive;
rpl::variable<bool> ghostModeEnabled;
@ -44,13 +50,19 @@ namespace AyuSettings {
void postinitialize() {
sendReadPacketsReactive = settings->sendReadPackets;
sendOnlinePacketsReactive = settings->sendOnlinePackets;
sendOfflinePacketAfterOnlineReactive = settings->sendOfflinePacketAfterOnline;
sendUploadProgressReactive = settings->sendUploadProgress;
sendOfflinePacketAfterOnlineReactive = settings->sendOfflinePacketAfterOnline;
markReadAfterSendReactive = settings->markReadAfterSend;
useScheduledMessagesReactive = settings->useScheduledMessages;
keepDeletedMessagesReactive = settings->keepDeletedMessages;
keepMessagesHistoryReactive = settings->keepMessagesHistory;
deletedMarkReactive = settings->deletedMark;
editedMarkReactive = settings->editedMark;
showGhostToggleInDrawerReactive = settings->showGhostToggleInDrawer;
showPeerIdReactive = settings->showPeerId;
ghostModeEnabled = !settings->sendReadPackets && !settings->sendOnlinePackets;
@ -98,14 +110,19 @@ namespace AyuSettings {
sendOnlinePacketsReactive = val;
}
void AyuGramSettings::set_sendUploadProgress(bool val) {
sendUploadProgress = val;
sendUploadProgressReactive = val;
}
void AyuGramSettings::set_sendOfflinePacketAfterOnline(bool val) {
sendOfflinePacketAfterOnline = val;
sendOfflinePacketAfterOnlineReactive = val;
}
void AyuGramSettings::set_sendUploadProgress(bool val) {
sendUploadProgress = val;
sendUploadProgressReactive = val;
void AyuGramSettings::set_markReadAfterSend(bool val) {
markReadAfterSend = val;
markReadAfterSendReactive = val;
}
void AyuGramSettings::set_useScheduledMessages(bool val) {
@ -133,6 +150,11 @@ namespace AyuSettings {
editedMarkReactive = editedMark;
}
void AyuGramSettings::set_showGhostToggleInDrawer(bool val) {
showGhostToggleInDrawer = val;
showGhostToggleInDrawerReactive = val;
}
void AyuGramSettings::set_showPeerId(int val) {
showPeerId = val;
showPeerIdReactive = val;
@ -146,12 +168,16 @@ namespace AyuSettings {
return sendOnlinePacketsReactive.value();
}
rpl::producer<bool> get_sendUploadProgressReactive() {
return sendUploadProgressReactive.value();
}
rpl::producer<bool> get_sendOfflinePacketAfterOnlineReactive() {
return sendOfflinePacketAfterOnlineReactive.value();
}
rpl::producer<bool> get_sendUploadProgressReactive() {
return sendUploadProgressReactive.value();
rpl::producer<bool> get_markReadAfterSend() {
return markReadAfterSendReactive.value();
}
rpl::producer<bool> get_useScheduledMessagesReactive() {
@ -174,6 +200,10 @@ namespace AyuSettings {
return editedMarkReactive.value();
}
rpl::producer<bool> get_showGhostToggleInDrawerReactive() {
return showGhostToggleInDrawerReactive.value();
}
rpl::producer<int> get_showPeerId() {
return showPeerIdReactive.value();
}

View file

@ -13,15 +13,24 @@ namespace AyuSettings {
public:
AyuGramSettings() {
// ~ Ghost essentials
sendReadPackets = true;
sendOnlinePackets = true;
sendOfflinePacketAfterOnline = false;
sendUploadProgress = true;
sendOfflinePacketAfterOnline = false;
markReadAfterSend = false;
useScheduledMessages = false;
keepDeletedMessages = false;
keepMessagesHistory = false;
// ~ Message edits & deletion history
keepDeletedMessages = true;
keepMessagesHistory = true;
// ~ Customization
deletedMark = "🧹";
editedMark = tr::lng_edited(tr::now);
showGhostToggleInDrawer = true;
/*
* showPeerId = 0 means no ID shown
@ -37,9 +46,11 @@ namespace AyuSettings {
QS_FIELD(bool, sendOnlinePackets)
QS_FIELD(bool, sendUploadProgress)
QS_FIELD(bool, sendOfflinePacketAfterOnline)
QS_FIELD(bool, sendUploadProgress)
QS_FIELD(bool, markReadAfterSend)
QS_FIELD(bool, useScheduledMessages)
@ -51,18 +62,26 @@ namespace AyuSettings {
QS_FIELD(QString, editedMark)
QS_FIELD(bool, showGhostToggleInDrawer)
QS_FIELD(int, showPeerId)
public:
void set_sendReadPackets(bool val);
void set_sendOnlinePackets(bool val);
void set_sendOfflinePacketAfterOnline(bool val);
void set_sendUploadProgress(bool val);
void set_sendOfflinePacketAfterOnline(bool val);
void set_markReadAfterSend(bool val);
void set_useScheduledMessages(bool val);
void set_keepDeletedMessages(bool val);
void set_keepMessagesHistory(bool val);
void set_deletedMark(QString val);
void set_editedMark(QString val);
void set_showGhostToggleInDrawer(bool val);
void set_showPeerId(int val);
};
@ -81,6 +100,7 @@ namespace AyuSettings {
rpl::producer<bool> get_keepMessagesHistoryReactive();
rpl::producer<QString> get_deletedMarkReactive();
rpl::producer<QString> get_editedMarkReactive();
rpl::producer<QString> get_showGhostToggleInDrawer();
rpl::producer<int> get_showPeerId();
// computed fields

View file

@ -97,6 +97,20 @@ namespace Settings {
AyuSettings::save();
}, container->lifetime());
AddButton(
container,
tr::ayu_MarkReadAfterSend(),
st::settingsButtonNoIcon
)->toggleOn(
rpl::single(settings->markReadAfterSend)
)->toggledValue(
) | rpl::filter([=](bool enabled) {
return (enabled != settings->markReadAfterSend);
}) | rpl::start_with_next([=](bool enabled) {
settings->set_markReadAfterSend(enabled);
AyuSettings::save();
}, container->lifetime());
AddButton(
container,
tr::ayu_UseScheduledMessages(),
@ -147,6 +161,8 @@ namespace Settings {
}
void Ayu::SetupCustomization(not_null<Ui::VerticalLayout *> container, not_null<Window::SessionController *> controller) {
auto settings = &AyuSettings::getInstance();
AddSubsectionTitle(container, tr::ayu_CustomizationHeader());
auto btn = AddButtonWithLabel(
@ -162,7 +178,7 @@ namespace Settings {
auto btn2 = AddButtonWithLabel(
container,
rpl::single(QString("Edited mark")),
tr::ayu_EditedMarkText(),
AyuSettings::get_editedMarkReactive(),
st::settingsButtonNoIcon
);
@ -171,6 +187,20 @@ namespace Settings {
Ui::show(std::move(box));
});
AddButton(
container,
tr::ayu_ShowGhostToggleInDrawer(),
st::settingsButtonNoIcon
)->toggleOn(
rpl::single(settings->showGhostToggleInDrawer)
)->toggledValue(
) | rpl::filter([=](bool enabled) {
return (enabled != settings->showGhostToggleInDrawer);
}) | rpl::start_with_next([=](bool enabled) {
settings->set_showGhostToggleInDrawer(enabled);
AyuSettings::save();
}, container->lifetime());
SetupShowPeerId(container, controller);
}

View file

@ -173,6 +173,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include <QtCore/QMimeData>
#include "ayu/ayu_settings.h"
#include "ayu/ayu_state.h"
namespace {
@ -3873,6 +3874,11 @@ void HistoryWidget::send(Api::SendOptions options) {
options.scheduled = current + 12;
}
if (!settings->sendReadPackets && settings->markReadAfterSend) {
AyuState::setAllowSendReadPacket(true);
_history->session().data().histories().readInboxOnNewMessage(_history->lastMessage());
}
if (!_history) {
return;
} else if (_editMsgId) {

View file

@ -463,14 +463,13 @@ void BottomInfo::layout() {
}
void BottomInfo::layoutDateText() {
const auto ayuSettings = &AyuSettings::getInstance();
auto editedMarkValue = ayuSettings->editedMark;
const auto settings = &AyuSettings::getInstance();
const auto edited = (_data.flags & Data::Flag::Edited)
? (editedMarkValue + ' ')
? (settings->editedMark + ' ')
: QString();
const auto author = _data.author;
const auto prefix = !author.isEmpty() ? u", "_q : QString();
const auto prefix = !author.isEmpty() ? (author == settings->deletedMark ? u" "_q : u", "_q) : QString();
const auto date = edited + QLocale().toString(
_data.date.time(),
QLocale::ShortFormat);

View file

@ -54,6 +54,7 @@ base::options::toggle SendLargePhotos({
.id = kOptionSendLargePhotos,
.name = "Send large photos",
.description = "Increase the side limit on compressed images to 2560px.",
.defaultValue = true
});
std::atomic<bool> SendLargePhotosAtomic/* = false*/;

View file

@ -845,21 +845,23 @@ void MainMenu::setupMenu() {
}, _nightThemeToggle->lifetime());
const auto settings = &AyuSettings::getInstance();
_ghostModeToggle = addAction(
tr::ayu_DrawerGhostModeToggle(),
{ &st::menuIconFake, kIconPurple }
)->toggleOn(AyuSettings::get_ghostModeEnabled());
if (settings->showGhostToggleInDrawer) {
_ghostModeToggle = addAction(
tr::ayu_DrawerGhostModeToggle(),
{&st::menuIconFake, kIconPurple}
)->toggleOn(AyuSettings::get_ghostModeEnabled());
_ghostModeToggle->toggledChanges(
) | rpl::start_with_next([=](bool ghostMode) {
settings->set_sendReadPackets(!ghostMode);
settings->set_sendOnlinePackets(!ghostMode);
settings->set_sendUploadProgress(!ghostMode);
_ghostModeToggle->toggledChanges(
) | rpl::start_with_next([=](bool ghostMode) {
settings->set_sendReadPackets(!ghostMode);
settings->set_sendOnlinePackets(!ghostMode);
settings->set_sendUploadProgress(!ghostMode);
settings->set_sendOfflinePacketAfterOnline(ghostMode);
settings->set_sendOfflinePacketAfterOnline(ghostMode);
AyuSettings::save();
}, _ghostModeToggle->lifetime());
AyuSettings::save();
}, _ghostModeToggle->lifetime());
}
Core::App().settings().systemDarkModeValue(
) | rpl::start_with_next([=](std::optional<bool> darkMode) {