diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/MessageObject.java b/TMessagesProj/src/main/java/org/telegram/messenger/MessageObject.java index ab8e43b16..a81f7d540 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/MessageObject.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/MessageObject.java @@ -3530,6 +3530,15 @@ public class MessageObject { return chat; } + public void fakePasscodeUpdateMessageText() { + updateMessageText(MessagesController.getInstance(currentAccount).getUsers(), MessagesController.getInstance(currentAccount).getChats(), null, null); + if (messageOwner.action == null) { + messageText = Utils.fixMessage(messageText); + } + layoutCreated= false; + checkLayout(); + } + private void updateMessageText(AbstractMap users, AbstractMap chats, LongSparseArray sUsers, LongSparseArray sChats) { TLRPC.User fromUser = null; TLRPC.Chat fromChat = null; @@ -4333,13 +4342,7 @@ public class MessageObject { } else if (getMedia(messageOwner) instanceof TLRPC.TL_messageMediaInvoice) { messageText = getMedia(messageOwner).description; } else if (getMedia(messageOwner) instanceof TLRPC.TL_messageMediaUnsupported) { - int resourceId; - if (!FakePasscodeUtils.isFakePasscodeActivated()) { - resourceId = R.string.PartisanUnsupportedMedia; - } else { - resourceId = ApplicationLoader.applicationLoaderInstance.isStandalone() ? R.string.UnsupportedMediaStandalone : R.string.UnsupportedMediaOriginal; - } - messageText = LocaleController.getString(resourceId); + messageText = getUnsupportedMessageText(); } else if (getMedia(messageOwner) instanceof TLRPC.TL_messageMediaDocument) { if (isSticker() || isAnimatedStickerDocument(getDocument(), true)) { String sch = getStickerChar(); @@ -4363,14 +4366,18 @@ public class MessageObject { } } else { if (messageOwner.message != null) { - try { - if (messageOwner.message.length() > 200) { - messageText = AndroidUtilities.BAD_CHARS_MESSAGE_LONG_PATTERN.matcher(messageOwner.message).replaceAll("\u200C"); - } else { - messageText = AndroidUtilities.BAD_CHARS_MESSAGE_PATTERN.matcher(messageOwner.message).replaceAll("\u200C"); + if (BuildVars.DEBUG_VERSION && BuildVars.DEBUG_PRIVATE_VERSION && "".equals(messageOwner.message)) { + messageText = getUnsupportedMessageText(); + } else { + try { + if (messageOwner.message.length() > 200) { + messageText = AndroidUtilities.BAD_CHARS_MESSAGE_LONG_PATTERN.matcher(messageOwner.message).replaceAll("\u200C"); + } else { + messageText = AndroidUtilities.BAD_CHARS_MESSAGE_PATTERN.matcher(messageOwner.message).replaceAll("\u200C"); + } + } catch (Throwable e) { + messageText = messageOwner.message; } - } catch (Throwable e) { - messageText = messageOwner.message; } } else { messageText = messageOwner.message; @@ -4383,6 +4390,16 @@ public class MessageObject { } } + private String getUnsupportedMessageText() { + int resourceId; + if (!FakePasscodeUtils.isFakePasscodeActivated()) { + resourceId = R.string.PartisanUnsupportedMedia; + } else { + resourceId = ApplicationLoader.applicationLoaderInstance.isStandalone() ? R.string.UnsupportedMediaStandalone : R.string.UnsupportedMediaOriginal; + } + return LocaleController.getString(resourceId); + } + public CharSequence getMediaTitle(TLRPC.MessageMedia media) { if (media instanceof TLRPC.TL_messageMediaGiveaway) { return LocaleController.getString("BoostingGiveaway", R.string.BoostingGiveaway); @@ -4443,13 +4460,7 @@ public class MessageObject { } else if (media instanceof TLRPC.TL_messageMediaInvoice) { return media.description; } else if (media instanceof TLRPC.TL_messageMediaUnsupported) { - int resourceId; - if (!FakePasscodeUtils.isFakePasscodeActivated()) { - resourceId = R.string.PartisanUnsupportedMedia; - } else { - resourceId = ApplicationLoader.applicationLoaderInstance.isStandalone() ? R.string.UnsupportedMediaStandalone : R.string.UnsupportedMediaOriginal; - } - return LocaleController.getString(resourceId); + return getUnsupportedMessageText(); } else if (media instanceof TLRPC.TL_messageMediaDocument) { if (isStickerDocument(media.document) || isAnimatedStickerDocument(media.document, true)) { String sch = getStickerChar(); diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/MessagesController.java b/TMessagesProj/src/main/java/org/telegram/messenger/MessagesController.java index 26b603551..73f142ae9 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/MessagesController.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/MessagesController.java @@ -15013,7 +15013,6 @@ public class MessagesController extends BaseController implements NotificationCe getMessagesStorage().setLastPtsValue(updates.pts); if (SharedConfig.fakePasscodeActivatedIndex == -1 || FakePasscodeUtils.checkMessage(currentAccount, message)) { - Utils.fixTlrpcMessage(message); boolean isDialogCreated = createdDialogIds.contains(message.dialog_id); MessageObject obj = new MessageObject(currentAccount, message, isDialogCreated, isDialogCreated); ArrayList objArr = new ArrayList<>(); @@ -15499,7 +15498,6 @@ public class MessagesController extends BaseController implements NotificationCe message.out = true; } } - Utils.fixTlrpcMessage(message); if (message instanceof TLRPC.TL_messageEmpty) { continue; } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/MessagesStorage.java b/TMessagesProj/src/main/java/org/telegram/messenger/MessagesStorage.java index 2afa05ee4..daf3eba5c 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/MessagesStorage.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/MessagesStorage.java @@ -11675,7 +11675,6 @@ public class MessagesStorage extends BaseController { public void putMessages(ArrayList messages, boolean withTransaction, boolean useQueue, boolean doNotUpdateDialogDate, int downloadMask, boolean ifNoLastMessage, boolean scheduled, int threadMessageId) { ArrayList filteredMessages = messages.stream() .filter(m -> FakePasscodeUtils.checkMessage(currentAccount, m) && !FakePasscodeUtils.isHideMessage(currentAccount, m.dialog_id, m.id, true)) - .peek(Utils::fixTlrpcMessage) .collect(Collectors.toCollection(ArrayList::new)); if (filteredMessages.size() == 0) { return; diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/SharedConfig.java b/TMessagesProj/src/main/java/org/telegram/messenger/SharedConfig.java index 293d10bec..9df2a98dc 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/SharedConfig.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/SharedConfig.java @@ -1016,6 +1016,7 @@ public class SharedConfig { int oldIndex = fakePasscodeActivatedIndex; fakePasscodeActivatedIndex = fakePasscodeIndex; if (oldIndex != fakePasscodeIndex) { + FakePasscodeUtils.hideFakePasscodeTraces(); AndroidUtilities.runOnUIThread(() -> NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.fakePasscodeActivated) ); diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/fakepasscode/FakePasscodeUtils.java b/TMessagesProj/src/main/java/org/telegram/messenger/fakepasscode/FakePasscodeUtils.java index a6fb19882..388dbdd30 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/fakepasscode/FakePasscodeUtils.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/fakepasscode/FakePasscodeUtils.java @@ -9,6 +9,7 @@ import android.text.TextUtils; import org.telegram.messenger.AppStartReceiver; import org.telegram.messenger.ApplicationLoader; +import org.telegram.messenger.MessageObject; import org.telegram.messenger.MessagesController; import org.telegram.messenger.NotificationsController; import org.telegram.messenger.SharedConfig; @@ -17,6 +18,7 @@ import org.telegram.tgnet.TLRPC; import org.telegram.tgnet.tl.TL_stories; import org.telegram.ui.NotificationsSettingsActivity; +import java.util.ArrayList; import java.util.Comparator; import java.util.HashMap; import java.util.List; @@ -458,4 +460,17 @@ public class FakePasscodeUtils { } catch (Exception ignore) { } } + + public static void hideFakePasscodeTraces() { + androidx.collection.LongSparseArray> dialogMessages + = MessagesController.getInstance(UserConfig.selectedAccount).dialogMessage; + for (int i = 0; i < dialogMessages.size(); i++) { + if (dialogMessages.valueAt(i) == null) { + continue; + } + for (MessageObject message : dialogMessages.valueAt(i)) { + message.fakePasscodeUpdateMessageText(); + } + } + } }