diff --git a/Telegram/Resources/icons/dialogs/dialogs_deleted.png b/Telegram/Resources/icons/dialogs/dialogs_deleted.png new file mode 100644 index 000000000..3957a8f6c Binary files /dev/null and b/Telegram/Resources/icons/dialogs/dialogs_deleted.png differ diff --git a/Telegram/Resources/icons/dialogs/dialogs_deleted@2x.png b/Telegram/Resources/icons/dialogs/dialogs_deleted@2x.png new file mode 100644 index 000000000..12b9148e3 Binary files /dev/null and b/Telegram/Resources/icons/dialogs/dialogs_deleted@2x.png differ diff --git a/Telegram/Resources/icons/dialogs/dialogs_deleted@3x.png b/Telegram/Resources/icons/dialogs/dialogs_deleted@3x.png new file mode 100644 index 000000000..4661e30e2 Binary files /dev/null and b/Telegram/Resources/icons/dialogs/dialogs_deleted@3x.png differ diff --git a/Telegram/Resources/langs/rewrites/en.json b/Telegram/Resources/langs/rewrites/en.json index d2b471270..520c4532f 100644 --- a/Telegram/Resources/langs/rewrites/en.json +++ b/Telegram/Resources/langs/rewrites/en.json @@ -27,6 +27,7 @@ "ktg_outdated_now": "So that Kotatogram Desktop can update to newer versions.", "ktg_mac_menu_show": "Show Kotatogram", "ktg_settings_kotato": "Kotatogram Settings", + "ktg_user_status_unaccessible": "account inaccessible", "ktg_settings_chats": "Chats", "ktg_settings_sticker_height": "Sticker height: {pixels}px", "ktg_settings_sticker_scale_both": "Apply to sticker width", diff --git a/Telegram/SourceFiles/boxes/peer_list_box.cpp b/Telegram/SourceFiles/boxes/peer_list_box.cpp index dca4a065b..89439e7c4 100644 --- a/Telegram/SourceFiles/boxes/peer_list_box.cpp +++ b/Telegram/SourceFiles/boxes/peer_list_box.cpp @@ -7,6 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #include "boxes/peer_list_box.h" +#include "kotato/kotato_lang.h" #include "history/history.h" // chatListNameSortKey. #include "main/session/session_show.h" #include "main/main_session.h" @@ -27,6 +28,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "storage/file_download.h" #include "data/data_peer_values.h" #include "data/data_chat.h" +#include "data/data_user.h" #include "data/data_session.h" #include "data/data_changes.h" #include "base/unixtime.h" @@ -587,6 +589,8 @@ void PeerListRow::refreshStatus() { if (auto user = peer()->asUser()) { if (!_savedMessagesStatus.isEmpty()) { setStatusText(_savedMessagesStatus); + } else if (user->isInaccessible()) { + setStatusText(ktr("ktg_user_status_unaccessible")); } else { auto time = base::unixtime::now(); setStatusText(Data::OnlineText(user, time)); diff --git a/Telegram/SourceFiles/data/data_peer_values.cpp b/Telegram/SourceFiles/data/data_peer_values.cpp index 60a1c5f43..6f6e6591b 100644 --- a/Telegram/SourceFiles/data/data_peer_values.cpp +++ b/Telegram/SourceFiles/data/data_peer_values.cpp @@ -7,6 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #include "data/data_peer_values.h" +#include "kotato/kotato_lang.h" #include "lang/lang_keys.h" #include "data/data_channel.h" #include "data/data_chat.h" @@ -48,7 +49,9 @@ int OnlinePhraseChangeInSeconds(LastseenStatus status, TimeId now) { } std::optional OnlineTextSpecial(not_null user) { - if (user->isNotificationsUser()) { + if (user->isInaccessible()) { + return ktr("ktg_user_status_unaccessible"); + } else if (user->isNotificationsUser()) { return tr::lng_status_service_notifications(tr::now); } else if (user->isSupport()) { return tr::lng_status_support(tr::now); diff --git a/Telegram/SourceFiles/dialogs/dialogs.style b/Telegram/SourceFiles/dialogs/dialogs.style index 3ee37b6f9..97e63f72d 100644 --- a/Telegram/SourceFiles/dialogs/dialogs.style +++ b/Telegram/SourceFiles/dialogs/dialogs.style @@ -344,6 +344,11 @@ dialogsForumIcon: ThreeStateIcon { over: icon {{ "dialogs/dialogs_forum", dialogsChatIconFgOver, point(1px, 4px) }}; active: icon {{ "dialogs/dialogs_forum", dialogsChatIconFgActive, point(1px, 4px) }}; } +dialogsDeletedIcon: ThreeStateIcon { + icon: icon {{ "dialogs/dialogs_deleted", dialogsChatIconFg, point(1px, 4px) }}; + over: icon {{ "dialogs/dialogs_deleted", dialogsChatIconFgOver, point(1px, 4px) }}; + active: icon {{ "dialogs/dialogs_deleted", dialogsChatIconFgActive, point(1px, 4px) }}; +} dialogsArchiveUserpic: icon {{ "archive_userpic", historyPeerUserpicFg }}; dialogsRepliesUserpic: icon {{ "replies_userpic", historyPeerUserpicFg }}; dialogsInaccessibleUserpic: icon {{ "dialogs/inaccessible_userpic", historyPeerUserpicFg }}; diff --git a/Telegram/SourceFiles/dialogs/ui/dialogs_layout.cpp b/Telegram/SourceFiles/dialogs/ui/dialogs_layout.cpp index f7cbff178..793175b2a 100644 --- a/Telegram/SourceFiles/dialogs/ui/dialogs_layout.cpp +++ b/Telegram/SourceFiles/dialogs/ui/dialogs_layout.cpp @@ -703,7 +703,12 @@ const style::icon *ChatTypeIcon( not_null peer, const PaintContext &context) { if (const auto user = peer->asUser()) { - if (ShowUserBotIcon(user)) { + if (user->isInaccessible()) { + return &ThreeStateIcon( + st::dialogsDeletedIcon, + context.active, + context.selected); + } else if (ShowUserBotIcon(user)) { return &ThreeStateIcon( st::dialogsBotIcon, context.active, diff --git a/Telegram/SourceFiles/profile/profile_block_group_members.cpp b/Telegram/SourceFiles/profile/profile_block_group_members.cpp index e155a19f9..a93a4731f 100644 --- a/Telegram/SourceFiles/profile/profile_block_group_members.cpp +++ b/Telegram/SourceFiles/profile/profile_block_group_members.cpp @@ -7,6 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #include "profile/profile_block_group_members.h" +#include "kotato/kotato_lang.h" #include "api/api_chat_participants.h" #include "styles/style_profile.h" #include "ui/widgets/labels.h" @@ -175,7 +176,9 @@ void GroupMembersWidget::updateItemStatusText(Item *item) { auto member = getMember(item); auto user = member->user(); if (member->statusText.isEmpty() || (member->onlineTextTill <= _now)) { - if (user->isBot()) { + if (user->isInaccessible()) { + member->statusText = ktr("ktg_user_status_unaccessible"); + } else if (user->isBot()) { const auto seesAllMessages = user->botInfo->readsAllHistory || member->rank.has_value(); member->statusText = seesAllMessages diff --git a/Telegram/SourceFiles/settings/settings_privacy_controllers.cpp b/Telegram/SourceFiles/settings/settings_privacy_controllers.cpp index b3829efeb..0b28cc4a7 100644 --- a/Telegram/SourceFiles/settings/settings_privacy_controllers.cpp +++ b/Telegram/SourceFiles/settings/settings_privacy_controllers.cpp @@ -7,6 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #include "settings/settings_privacy_controllers.h" +#include "kotato/kotato_lang.h" #include "api/api_global_privacy.h" #include "api/api_peer_photo.h" #include "apiwrap.h" @@ -453,6 +454,8 @@ std::unique_ptr BlockedBoxController::createRow( const auto user = peer->asUser(); if (!user) { return tr::lng_group_status(tr::now); + } else if (user->isInaccessible()) { + return ktr("ktg_user_status_unaccessible"); } else if (!user->phone().isEmpty()) { return Ui::FormatPhone(user->phone()); } else if (!user->username().isEmpty()) {