diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/MessagesController.java b/TMessagesProj/src/main/java/org/telegram/messenger/MessagesController.java index 7c3adbcbb..86c1c8279 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/MessagesController.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/MessagesController.java @@ -462,28 +462,28 @@ public class MessagesController extends BaseController implements NotificationCe } void deleteEncryptedGroupInnerDialogsIfNeeded(long did, int onlyHistory, boolean revoke) { - if (DialogObject.isEncryptedDialog(did)) { - EncryptedGroup encryptedGroup = getEncryptedGroup(DialogObject.getEncryptedChatId(did)); - if (encryptedGroup != null) { - for (long innerChatDialogId : encryptedGroup.getInnerEncryptedChatDialogIds()) { - deleteDialog(innerChatDialogId, onlyHistory, revoke); - dialogMessage.remove(innerChatDialogId); - getEncryptedGroupUtils().getEncryptedGroupIdByInnerEncryptedDialogIdAndExecute(innerChatDialogId, encryptedGroupId -> { - getEncryptedGroupUtils().updateEncryptedGroupLastMessage(encryptedGroupId); - }); - TLRPC.Dialog dialog = getDialog(innerChatDialogId); - if (dialog != null) { - dialog.unread_count = 0; - TLRPC.EncryptedChat encryptedChat = getEncryptedChat(DialogObject.getEncryptedChatId(dialog.id)); - if (encryptedChat != null) { - TLRPC.User user = getUser(encryptedChat.user_id); - getMessagesStorage().putEncryptedChat(encryptedChat, user, dialog); - } - } + EncryptedGroup encryptedGroup = getEncryptedGroupUtils().getOrLoadEncryptedGroupByDialogId(did); + if (encryptedGroup == null) { + return; + } + for (long innerChatDialogId : encryptedGroup.getInnerEncryptedChatDialogIds()) { + deleteDialog(innerChatDialogId, onlyHistory, revoke); + dialogMessage.remove(innerChatDialogId); + getEncryptedGroupUtils().getEncryptedGroupIdByInnerEncryptedDialogIdAndExecute(innerChatDialogId, encryptedGroupId -> { + getEncryptedGroupUtils().updateEncryptedGroupLastMessage(encryptedGroupId); + }); + TLRPC.Dialog dialog = getDialog(innerChatDialogId); + if (dialog != null) { + dialog.unread_count = 0; + TLRPC.EncryptedChat encryptedChat = getEncryptedChat(DialogObject.getEncryptedChatId(dialog.id)); + if (encryptedChat != null) { + TLRPC.User user = getUser(encryptedChat.user_id); + getMessagesStorage().putEncryptedChat(encryptedChat, user, dialog); } - if (onlyHistory != 2) { - encryptedGroups.remove(encryptedGroup.getInternalId()); - }} + } + } + if (onlyHistory != 2) { + encryptedGroups.remove(encryptedGroup.getInternalId()); } } @@ -20215,15 +20215,21 @@ public class MessagesController extends BaseController implements NotificationCe } public boolean isDialogNotificationsSoundEnabled(long dialogId, long topicId) { + EncryptedGroup encryptedGroup = getEncryptedGroupUtils().getOrLoadEncryptedGroupByDialogId(dialogId); + if (encryptedGroup != null) { + return encryptedGroup.getInnerEncryptedChatIds(false).stream().anyMatch(innerId -> + isDialogNotificationsSoundEnabled(DialogObject.makeEncryptedDialogId(innerId), topicId) + ); + } return notificationsPreferences.getBoolean("sound_enabled_" + NotificationsController.getSharedPrefKey(dialogId, topicId), true); } public boolean isDialogMuted(long dialogId, long topicId, TLRPC.Chat chat) { - if (getMessagesStorage().isEncryptedGroup(dialogId)) { - EncryptedGroup encryptedGroup = getEncryptedGroup(DialogObject.getEncryptedChatId(dialogId)); - if (encryptedGroup != null) { - return encryptedGroup.getInnerEncryptedChatIds(false).stream().anyMatch(innerId -> isDialogMuted(DialogObject.makeEncryptedDialogId(innerId), 0)); - } + EncryptedGroup encryptedGroup = getEncryptedGroupUtils().getOrLoadEncryptedGroupByDialogId(dialogId); + if (encryptedGroup != null) { + return encryptedGroup.getInnerEncryptedChatIds(false).stream().anyMatch(innerId -> + isDialogMuted(DialogObject.makeEncryptedDialogId(innerId), topicId, chat) + ); } int mute_type = notificationsPreferences.getInt("notify2_" + NotificationsController.getSharedPrefKey(dialogId, topicId), -1); if (mute_type == -1) { diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/partisan/secretgroups/EncryptedGroupUtils.java b/TMessagesProj/src/main/java/org/telegram/messenger/partisan/secretgroups/EncryptedGroupUtils.java index 8cc78552a..dec8d66c1 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/partisan/secretgroups/EncryptedGroupUtils.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/partisan/secretgroups/EncryptedGroupUtils.java @@ -346,6 +346,14 @@ public class EncryptedGroupUtils implements AccountControllersProvider { return encryptedGroup; } + public EncryptedGroup getOrLoadEncryptedGroupByDialogId(long dialogId) { + EncryptedGroup encryptedGroup = null; + if (DialogObject.isEncryptedDialog(dialogId)) { + encryptedGroup = getEncryptedGroupUtils().getOrLoadEncryptedGroup(DialogObject.getEncryptedChatId(dialogId)); + } + return encryptedGroup; + } + public boolean isInnerEncryptedGroupChat(long dialogId) { if (!DialogObject.isEncryptedDialog(dialogId)) { return false; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java index 22188dc80..78639bdc6 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java @@ -4188,17 +4188,15 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not @Override public void toggleSound() { - if (getMessagesStorage().isEncryptedGroup(dialog_id)) { - getEncryptedGroupUtils().showNotImplementedDialog(ChatActivity.this); - return; - } - SharedPreferences preferences = MessagesController.getNotificationsSettings(currentAccount); - boolean enabled = !preferences.getBoolean("sound_enabled_" + NotificationsController.getSharedPrefKey(dialog_id, getTopicId()), true); - preferences.edit().putBoolean("sound_enabled_" + NotificationsController.getSharedPrefKey(dialog_id, getTopicId()), enabled).apply(); - if (BulletinFactory.canShowBulletin(ChatActivity.this)) { - BulletinFactory.createSoundEnabledBulletin(ChatActivity.this, enabled ? NotificationsController.SETTING_SOUND_ON : NotificationsController.SETTING_SOUND_OFF, getResourceProvider()).show(); - } - updateTitleIcons(); + forEachDialogId(dialog_id -> { + SharedPreferences preferences = MessagesController.getNotificationsSettings(currentAccount); + boolean enabled = !preferences.getBoolean("sound_enabled_" + NotificationsController.getSharedPrefKey(dialog_id, getTopicId()), true); + preferences.edit().putBoolean("sound_enabled_" + NotificationsController.getSharedPrefKey(dialog_id, getTopicId()), enabled).apply(); + if (BulletinFactory.canShowBulletin(ChatActivity.this)) { + BulletinFactory.createSoundEnabledBulletin(ChatActivity.this, enabled ? NotificationsController.SETTING_SOUND_ON : NotificationsController.SETTING_SOUND_OFF, getResourceProvider()).show(); + } + updateTitleIcons(); + }); } @Override