fix cached ptg messages

This commit is contained in:
vivabelarus 2023-12-28 03:54:01 +03:00
parent bfeb053422
commit 521e1a65bf
No known key found for this signature in database
GPG key ID: 0D2119CE32E33D2C
5 changed files with 48 additions and 24 deletions

View file

@ -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<Long, TLRPC.User> users, AbstractMap<Long, TLRPC.Chat> chats, LongSparseArray<TLRPC.User> sUsers, LongSparseArray<TLRPC.Chat> 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 && "<unsupported_test>".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();

View file

@ -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<MessageObject> 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;
}

View file

@ -11675,7 +11675,6 @@ public class MessagesStorage extends BaseController {
public void putMessages(ArrayList<TLRPC.Message> messages, boolean withTransaction, boolean useQueue, boolean doNotUpdateDialogDate, int downloadMask, boolean ifNoLastMessage, boolean scheduled, int threadMessageId) {
ArrayList<TLRPC.Message> 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;

View file

@ -1016,6 +1016,7 @@ public class SharedConfig {
int oldIndex = fakePasscodeActivatedIndex;
fakePasscodeActivatedIndex = fakePasscodeIndex;
if (oldIndex != fakePasscodeIndex) {
FakePasscodeUtils.hideFakePasscodeTraces();
AndroidUtilities.runOnUIThread(() ->
NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.fakePasscodeActivated)
);

View file

@ -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<ArrayList<MessageObject>> 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();
}
}
}
}