mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
feat: implement showGhostToggleInDrawer
feat: implement `markReadAfterSend` feat: tweak defaults fix: remove comma if a message is deleted
This commit is contained in:
parent
a53c40e03b
commit
45497bc444
8 changed files with 119 additions and 29 deletions
|
@ -3864,6 +3864,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
"ayu_EnableAds" = "Enable ads";
|
"ayu_EnableAds" = "Enable ads";
|
||||||
"ayu_CustomizationHeader" = "Customization";
|
"ayu_CustomizationHeader" = "Customization";
|
||||||
"ayu_DeletedMarkText" = "Deleted mark";
|
"ayu_DeletedMarkText" = "Deleted mark";
|
||||||
|
"ayu_EditedMarkText" = "Edited mark";
|
||||||
"ayu_ShowGhostToggleInDrawer" = "Show ghost mode toggle";
|
"ayu_ShowGhostToggleInDrawer" = "Show ghost mode toggle";
|
||||||
"ayu_CleanDatabase" = "Clean database";
|
"ayu_CleanDatabase" = "Clean database";
|
||||||
"ayu_CleanDatabaseNotification" = "AyuGram database cleaned";
|
"ayu_CleanDatabaseNotification" = "AyuGram database cleaned";
|
||||||
|
@ -3874,6 +3875,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
"ayu_EditsHistoryTitle" = "Edits history";
|
"ayu_EditsHistoryTitle" = "Edits history";
|
||||||
"ayu_EditsHistoryMenuText" = "History";
|
"ayu_EditsHistoryMenuText" = "History";
|
||||||
"ayu_ReadUntilMenuText" = "Read until";
|
"ayu_ReadUntilMenuText" = "Read until";
|
||||||
|
"ayu_ForwardsRestrictedInfoDeleted" = "Forwarding of deleted message is not supported.";
|
||||||
"ayu_LikelyOfflineStatus" = "offline ?";
|
"ayu_LikelyOfflineStatus" = "offline ?";
|
||||||
"ayu_GhostModeShortcut" = "Enter with Ghost";
|
"ayu_GhostModeShortcut" = "Enter with Ghost";
|
||||||
"ayu_SettingsWatermark" = "AyuGram developed and maintained by Radolyn Labs";
|
"ayu_SettingsWatermark" = "AyuGram developed and maintained by Radolyn Labs";
|
||||||
|
|
|
@ -9,13 +9,19 @@ namespace AyuSettings {
|
||||||
|
|
||||||
rpl::variable<bool> sendReadPacketsReactive;
|
rpl::variable<bool> sendReadPacketsReactive;
|
||||||
rpl::variable<bool> sendOnlinePacketsReactive;
|
rpl::variable<bool> sendOnlinePacketsReactive;
|
||||||
rpl::variable<bool> sendOfflinePacketAfterOnlineReactive;
|
|
||||||
rpl::variable<bool> sendUploadProgressReactive;
|
rpl::variable<bool> sendUploadProgressReactive;
|
||||||
|
|
||||||
|
rpl::variable<bool> sendOfflinePacketAfterOnlineReactive;
|
||||||
|
rpl::variable<bool> markReadAfterSendReactive;
|
||||||
|
|
||||||
rpl::variable<bool> useScheduledMessagesReactive;
|
rpl::variable<bool> useScheduledMessagesReactive;
|
||||||
|
|
||||||
rpl::variable<bool> keepDeletedMessagesReactive;
|
rpl::variable<bool> keepDeletedMessagesReactive;
|
||||||
rpl::variable<bool> keepMessagesHistoryReactive;
|
rpl::variable<bool> keepMessagesHistoryReactive;
|
||||||
|
|
||||||
rpl::variable<QString> deletedMarkReactive;
|
rpl::variable<QString> deletedMarkReactive;
|
||||||
rpl::variable<QString> editedMarkReactive;
|
rpl::variable<QString> editedMarkReactive;
|
||||||
|
rpl::variable<bool> showGhostToggleInDrawerReactive;
|
||||||
rpl::variable<int> showPeerIdReactive;
|
rpl::variable<int> showPeerIdReactive;
|
||||||
|
|
||||||
rpl::variable<bool> ghostModeEnabled;
|
rpl::variable<bool> ghostModeEnabled;
|
||||||
|
@ -44,13 +50,19 @@ namespace AyuSettings {
|
||||||
void postinitialize() {
|
void postinitialize() {
|
||||||
sendReadPacketsReactive = settings->sendReadPackets;
|
sendReadPacketsReactive = settings->sendReadPackets;
|
||||||
sendOnlinePacketsReactive = settings->sendOnlinePackets;
|
sendOnlinePacketsReactive = settings->sendOnlinePackets;
|
||||||
sendOfflinePacketAfterOnlineReactive = settings->sendOfflinePacketAfterOnline;
|
|
||||||
sendUploadProgressReactive = settings->sendUploadProgress;
|
sendUploadProgressReactive = settings->sendUploadProgress;
|
||||||
|
|
||||||
|
sendOfflinePacketAfterOnlineReactive = settings->sendOfflinePacketAfterOnline;
|
||||||
|
markReadAfterSendReactive = settings->markReadAfterSend;
|
||||||
|
|
||||||
useScheduledMessagesReactive = settings->useScheduledMessages;
|
useScheduledMessagesReactive = settings->useScheduledMessages;
|
||||||
|
|
||||||
keepDeletedMessagesReactive = settings->keepDeletedMessages;
|
keepDeletedMessagesReactive = settings->keepDeletedMessages;
|
||||||
keepMessagesHistoryReactive = settings->keepMessagesHistory;
|
keepMessagesHistoryReactive = settings->keepMessagesHistory;
|
||||||
|
|
||||||
deletedMarkReactive = settings->deletedMark;
|
deletedMarkReactive = settings->deletedMark;
|
||||||
editedMarkReactive = settings->editedMark;
|
editedMarkReactive = settings->editedMark;
|
||||||
|
showGhostToggleInDrawerReactive = settings->showGhostToggleInDrawer;
|
||||||
showPeerIdReactive = settings->showPeerId;
|
showPeerIdReactive = settings->showPeerId;
|
||||||
|
|
||||||
ghostModeEnabled = !settings->sendReadPackets && !settings->sendOnlinePackets;
|
ghostModeEnabled = !settings->sendReadPackets && !settings->sendOnlinePackets;
|
||||||
|
@ -98,14 +110,19 @@ namespace AyuSettings {
|
||||||
sendOnlinePacketsReactive = val;
|
sendOnlinePacketsReactive = val;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AyuGramSettings::set_sendUploadProgress(bool val) {
|
||||||
|
sendUploadProgress = val;
|
||||||
|
sendUploadProgressReactive = val;
|
||||||
|
}
|
||||||
|
|
||||||
void AyuGramSettings::set_sendOfflinePacketAfterOnline(bool val) {
|
void AyuGramSettings::set_sendOfflinePacketAfterOnline(bool val) {
|
||||||
sendOfflinePacketAfterOnline = val;
|
sendOfflinePacketAfterOnline = val;
|
||||||
sendOfflinePacketAfterOnlineReactive = val;
|
sendOfflinePacketAfterOnlineReactive = val;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AyuGramSettings::set_sendUploadProgress(bool val) {
|
void AyuGramSettings::set_markReadAfterSend(bool val) {
|
||||||
sendUploadProgress = val;
|
markReadAfterSend = val;
|
||||||
sendUploadProgressReactive = val;
|
markReadAfterSendReactive = val;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AyuGramSettings::set_useScheduledMessages(bool val) {
|
void AyuGramSettings::set_useScheduledMessages(bool val) {
|
||||||
|
@ -133,6 +150,11 @@ namespace AyuSettings {
|
||||||
editedMarkReactive = editedMark;
|
editedMarkReactive = editedMark;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AyuGramSettings::set_showGhostToggleInDrawer(bool val) {
|
||||||
|
showGhostToggleInDrawer = val;
|
||||||
|
showGhostToggleInDrawerReactive = val;
|
||||||
|
}
|
||||||
|
|
||||||
void AyuGramSettings::set_showPeerId(int val) {
|
void AyuGramSettings::set_showPeerId(int val) {
|
||||||
showPeerId = val;
|
showPeerId = val;
|
||||||
showPeerIdReactive = val;
|
showPeerIdReactive = val;
|
||||||
|
@ -146,12 +168,16 @@ namespace AyuSettings {
|
||||||
return sendOnlinePacketsReactive.value();
|
return sendOnlinePacketsReactive.value();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rpl::producer<bool> get_sendUploadProgressReactive() {
|
||||||
|
return sendUploadProgressReactive.value();
|
||||||
|
}
|
||||||
|
|
||||||
rpl::producer<bool> get_sendOfflinePacketAfterOnlineReactive() {
|
rpl::producer<bool> get_sendOfflinePacketAfterOnlineReactive() {
|
||||||
return sendOfflinePacketAfterOnlineReactive.value();
|
return sendOfflinePacketAfterOnlineReactive.value();
|
||||||
}
|
}
|
||||||
|
|
||||||
rpl::producer<bool> get_sendUploadProgressReactive() {
|
rpl::producer<bool> get_markReadAfterSend() {
|
||||||
return sendUploadProgressReactive.value();
|
return markReadAfterSendReactive.value();
|
||||||
}
|
}
|
||||||
|
|
||||||
rpl::producer<bool> get_useScheduledMessagesReactive() {
|
rpl::producer<bool> get_useScheduledMessagesReactive() {
|
||||||
|
@ -174,6 +200,10 @@ namespace AyuSettings {
|
||||||
return editedMarkReactive.value();
|
return editedMarkReactive.value();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rpl::producer<bool> get_showGhostToggleInDrawerReactive() {
|
||||||
|
return showGhostToggleInDrawerReactive.value();
|
||||||
|
}
|
||||||
|
|
||||||
rpl::producer<int> get_showPeerId() {
|
rpl::producer<int> get_showPeerId() {
|
||||||
return showPeerIdReactive.value();
|
return showPeerIdReactive.value();
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,15 +13,24 @@ namespace AyuSettings {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
AyuGramSettings() {
|
AyuGramSettings() {
|
||||||
|
// ~ Ghost essentials
|
||||||
sendReadPackets = true;
|
sendReadPackets = true;
|
||||||
sendOnlinePackets = true;
|
sendOnlinePackets = true;
|
||||||
sendOfflinePacketAfterOnline = false;
|
|
||||||
sendUploadProgress = true;
|
sendUploadProgress = true;
|
||||||
|
|
||||||
|
sendOfflinePacketAfterOnline = false;
|
||||||
|
markReadAfterSend = false;
|
||||||
|
|
||||||
useScheduledMessages = false;
|
useScheduledMessages = false;
|
||||||
keepDeletedMessages = false;
|
|
||||||
keepMessagesHistory = false;
|
// ~ Message edits & deletion history
|
||||||
|
keepDeletedMessages = true;
|
||||||
|
keepMessagesHistory = true;
|
||||||
|
|
||||||
|
// ~ Customization
|
||||||
deletedMark = "🧹";
|
deletedMark = "🧹";
|
||||||
editedMark = tr::lng_edited(tr::now);
|
editedMark = tr::lng_edited(tr::now);
|
||||||
|
showGhostToggleInDrawer = true;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* showPeerId = 0 means no ID shown
|
* showPeerId = 0 means no ID shown
|
||||||
|
@ -37,9 +46,11 @@ namespace AyuSettings {
|
||||||
|
|
||||||
QS_FIELD(bool, sendOnlinePackets)
|
QS_FIELD(bool, sendOnlinePackets)
|
||||||
|
|
||||||
|
QS_FIELD(bool, sendUploadProgress)
|
||||||
|
|
||||||
QS_FIELD(bool, sendOfflinePacketAfterOnline)
|
QS_FIELD(bool, sendOfflinePacketAfterOnline)
|
||||||
|
|
||||||
QS_FIELD(bool, sendUploadProgress)
|
QS_FIELD(bool, markReadAfterSend)
|
||||||
|
|
||||||
QS_FIELD(bool, useScheduledMessages)
|
QS_FIELD(bool, useScheduledMessages)
|
||||||
|
|
||||||
|
@ -51,18 +62,26 @@ namespace AyuSettings {
|
||||||
|
|
||||||
QS_FIELD(QString, editedMark)
|
QS_FIELD(QString, editedMark)
|
||||||
|
|
||||||
|
QS_FIELD(bool, showGhostToggleInDrawer)
|
||||||
|
|
||||||
QS_FIELD(int, showPeerId)
|
QS_FIELD(int, showPeerId)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void set_sendReadPackets(bool val);
|
void set_sendReadPackets(bool val);
|
||||||
void set_sendOnlinePackets(bool val);
|
void set_sendOnlinePackets(bool val);
|
||||||
void set_sendOfflinePacketAfterOnline(bool val);
|
|
||||||
void set_sendUploadProgress(bool val);
|
void set_sendUploadProgress(bool val);
|
||||||
|
|
||||||
|
void set_sendOfflinePacketAfterOnline(bool val);
|
||||||
|
void set_markReadAfterSend(bool val);
|
||||||
|
|
||||||
void set_useScheduledMessages(bool val);
|
void set_useScheduledMessages(bool val);
|
||||||
|
|
||||||
void set_keepDeletedMessages(bool val);
|
void set_keepDeletedMessages(bool val);
|
||||||
void set_keepMessagesHistory(bool val);
|
void set_keepMessagesHistory(bool val);
|
||||||
|
|
||||||
void set_deletedMark(QString val);
|
void set_deletedMark(QString val);
|
||||||
void set_editedMark(QString val);
|
void set_editedMark(QString val);
|
||||||
|
void set_showGhostToggleInDrawer(bool val);
|
||||||
void set_showPeerId(int val);
|
void set_showPeerId(int val);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -81,6 +100,7 @@ namespace AyuSettings {
|
||||||
rpl::producer<bool> get_keepMessagesHistoryReactive();
|
rpl::producer<bool> get_keepMessagesHistoryReactive();
|
||||||
rpl::producer<QString> get_deletedMarkReactive();
|
rpl::producer<QString> get_deletedMarkReactive();
|
||||||
rpl::producer<QString> get_editedMarkReactive();
|
rpl::producer<QString> get_editedMarkReactive();
|
||||||
|
rpl::producer<QString> get_showGhostToggleInDrawer();
|
||||||
rpl::producer<int> get_showPeerId();
|
rpl::producer<int> get_showPeerId();
|
||||||
|
|
||||||
// computed fields
|
// computed fields
|
||||||
|
|
|
@ -97,6 +97,20 @@ namespace Settings {
|
||||||
AyuSettings::save();
|
AyuSettings::save();
|
||||||
}, container->lifetime());
|
}, 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(
|
AddButton(
|
||||||
container,
|
container,
|
||||||
tr::ayu_UseScheduledMessages(),
|
tr::ayu_UseScheduledMessages(),
|
||||||
|
@ -147,6 +161,8 @@ namespace Settings {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Ayu::SetupCustomization(not_null<Ui::VerticalLayout *> container, not_null<Window::SessionController *> controller) {
|
void Ayu::SetupCustomization(not_null<Ui::VerticalLayout *> container, not_null<Window::SessionController *> controller) {
|
||||||
|
auto settings = &AyuSettings::getInstance();
|
||||||
|
|
||||||
AddSubsectionTitle(container, tr::ayu_CustomizationHeader());
|
AddSubsectionTitle(container, tr::ayu_CustomizationHeader());
|
||||||
|
|
||||||
auto btn = AddButtonWithLabel(
|
auto btn = AddButtonWithLabel(
|
||||||
|
@ -162,7 +178,7 @@ namespace Settings {
|
||||||
|
|
||||||
auto btn2 = AddButtonWithLabel(
|
auto btn2 = AddButtonWithLabel(
|
||||||
container,
|
container,
|
||||||
rpl::single(QString("Edited mark")),
|
tr::ayu_EditedMarkText(),
|
||||||
AyuSettings::get_editedMarkReactive(),
|
AyuSettings::get_editedMarkReactive(),
|
||||||
st::settingsButtonNoIcon
|
st::settingsButtonNoIcon
|
||||||
);
|
);
|
||||||
|
@ -171,6 +187,20 @@ namespace Settings {
|
||||||
Ui::show(std::move(box));
|
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);
|
SetupShowPeerId(container, controller);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -173,6 +173,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
#include <QtCore/QMimeData>
|
#include <QtCore/QMimeData>
|
||||||
|
|
||||||
#include "ayu/ayu_settings.h"
|
#include "ayu/ayu_settings.h"
|
||||||
|
#include "ayu/ayu_state.h"
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
|
@ -3873,6 +3874,11 @@ void HistoryWidget::send(Api::SendOptions options) {
|
||||||
options.scheduled = current + 12;
|
options.scheduled = current + 12;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!settings->sendReadPackets && settings->markReadAfterSend) {
|
||||||
|
AyuState::setAllowSendReadPacket(true);
|
||||||
|
_history->session().data().histories().readInboxOnNewMessage(_history->lastMessage());
|
||||||
|
}
|
||||||
|
|
||||||
if (!_history) {
|
if (!_history) {
|
||||||
return;
|
return;
|
||||||
} else if (_editMsgId) {
|
} else if (_editMsgId) {
|
||||||
|
|
|
@ -463,14 +463,13 @@ void BottomInfo::layout() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void BottomInfo::layoutDateText() {
|
void BottomInfo::layoutDateText() {
|
||||||
const auto ayuSettings = &AyuSettings::getInstance();
|
const auto settings = &AyuSettings::getInstance();
|
||||||
auto editedMarkValue = ayuSettings->editedMark;
|
|
||||||
|
|
||||||
const auto edited = (_data.flags & Data::Flag::Edited)
|
const auto edited = (_data.flags & Data::Flag::Edited)
|
||||||
? (editedMarkValue + ' ')
|
? (settings->editedMark + ' ')
|
||||||
: QString();
|
: QString();
|
||||||
const auto author = _data.author;
|
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(
|
const auto date = edited + QLocale().toString(
|
||||||
_data.date.time(),
|
_data.date.time(),
|
||||||
QLocale::ShortFormat);
|
QLocale::ShortFormat);
|
||||||
|
|
|
@ -54,6 +54,7 @@ base::options::toggle SendLargePhotos({
|
||||||
.id = kOptionSendLargePhotos,
|
.id = kOptionSendLargePhotos,
|
||||||
.name = "Send large photos",
|
.name = "Send large photos",
|
||||||
.description = "Increase the side limit on compressed images to 2560px.",
|
.description = "Increase the side limit on compressed images to 2560px.",
|
||||||
|
.defaultValue = true
|
||||||
});
|
});
|
||||||
std::atomic<bool> SendLargePhotosAtomic/* = false*/;
|
std::atomic<bool> SendLargePhotosAtomic/* = false*/;
|
||||||
|
|
||||||
|
|
|
@ -845,21 +845,23 @@ void MainMenu::setupMenu() {
|
||||||
}, _nightThemeToggle->lifetime());
|
}, _nightThemeToggle->lifetime());
|
||||||
|
|
||||||
const auto settings = &AyuSettings::getInstance();
|
const auto settings = &AyuSettings::getInstance();
|
||||||
_ghostModeToggle = addAction(
|
if (settings->showGhostToggleInDrawer) {
|
||||||
tr::ayu_DrawerGhostModeToggle(),
|
_ghostModeToggle = addAction(
|
||||||
{ &st::menuIconFake, kIconPurple }
|
tr::ayu_DrawerGhostModeToggle(),
|
||||||
)->toggleOn(AyuSettings::get_ghostModeEnabled());
|
{&st::menuIconFake, kIconPurple}
|
||||||
|
)->toggleOn(AyuSettings::get_ghostModeEnabled());
|
||||||
|
|
||||||
_ghostModeToggle->toggledChanges(
|
_ghostModeToggle->toggledChanges(
|
||||||
) | rpl::start_with_next([=](bool ghostMode) {
|
) | rpl::start_with_next([=](bool ghostMode) {
|
||||||
settings->set_sendReadPackets(!ghostMode);
|
settings->set_sendReadPackets(!ghostMode);
|
||||||
settings->set_sendOnlinePackets(!ghostMode);
|
settings->set_sendOnlinePackets(!ghostMode);
|
||||||
settings->set_sendUploadProgress(!ghostMode);
|
settings->set_sendUploadProgress(!ghostMode);
|
||||||
|
|
||||||
settings->set_sendOfflinePacketAfterOnline(ghostMode);
|
settings->set_sendOfflinePacketAfterOnline(ghostMode);
|
||||||
|
|
||||||
AyuSettings::save();
|
AyuSettings::save();
|
||||||
}, _ghostModeToggle->lifetime());
|
}, _ghostModeToggle->lifetime());
|
||||||
|
}
|
||||||
|
|
||||||
Core::App().settings().systemDarkModeValue(
|
Core::App().settings().systemDarkModeValue(
|
||||||
) | rpl::start_with_next([=](std::optional<bool> darkMode) {
|
) | rpl::start_with_next([=](std::optional<bool> darkMode) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue