From 8726c6d11f42ea95274c9d9cd1c738e7e5521565 Mon Sep 17 00:00:00 2001 From: DrKLO Date: Fri, 30 Oct 2020 20:44:29 +0300 Subject: [PATCH] Update to 7.2.1 (2135) --- TMessagesProj/build.gradle | 4 +-- .../org/telegram/messenger/BuildVars.java | 2 +- .../telegram/messenger/MediaController.java | 3 ++ .../telegram/messenger/MessagesStorage.java | 33 ++++++++++++++----- .../messenger/SendMessagesHelper.java | 26 +++++++++------ .../org/telegram/messenger/SharedConfig.java | 2 +- .../ui/Adapters/DialogsSearchAdapter.java | 3 ++ .../org/telegram/ui/Cells/DialogCell.java | 2 +- .../java/org/telegram/ui/ChatActivity.java | 10 ++++-- .../telegram/ui/Components/SlotsDrawable.java | 19 ++++++----- .../org/telegram/ui/LocationActivity.java | 5 ++- 11 files changed, 75 insertions(+), 34 deletions(-) diff --git a/TMessagesProj/build.gradle b/TMessagesProj/build.gradle index 476392910..dc56bb641 100644 --- a/TMessagesProj/build.gradle +++ b/TMessagesProj/build.gradle @@ -285,7 +285,7 @@ android { } } - defaultConfig.versionCode = 2134 + defaultConfig.versionCode = 2135 applicationVariants.all { variant -> variant.outputs.all { output -> @@ -304,7 +304,7 @@ android { defaultConfig { minSdkVersion 16 targetSdkVersion 28 - versionName "7.2.0" + versionName "7.2.1" vectorDrawables.generatedDensities = ['mdpi', 'hdpi', 'xhdpi', 'xxhdpi'] diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/BuildVars.java b/TMessagesProj/src/main/java/org/telegram/messenger/BuildVars.java index 7d2cd8109..a1d30e31a 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/BuildVars.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/BuildVars.java @@ -18,7 +18,7 @@ public class BuildVars { public static boolean LOGS_ENABLED = false; public static boolean USE_CLOUD_STRINGS = true; public static boolean CHECK_UPDATES = true; - public static int BUILD_VERSION = 2134; + public static int BUILD_VERSION = 2135; public static String BUILD_VERSION_STRING = "7.2.0"; public static int APP_ID = 4; public static String APP_HASH = "014b35b6184100b085b0d0572f9b5103"; diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/MediaController.java b/TMessagesProj/src/main/java/org/telegram/messenger/MediaController.java index 89af8527b..afe8df997 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/MediaController.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/MediaController.java @@ -3644,6 +3644,9 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, } public static void saveFilesFromMessages(Context context, AccountInstance accountInstance, ArrayList messageObjects, final MessagesStorage.IntCallback onSaved) { + if (messageObjects == null || messageObjects.isEmpty()) { + return; + } new MediaLoader(context, accountInstance, messageObjects, onSaved).start(); } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/MessagesStorage.java b/TMessagesProj/src/main/java/org/telegram/messenger/MessagesStorage.java index 743b9cac3..4fcdd5b75 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/MessagesStorage.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/MessagesStorage.java @@ -3064,7 +3064,6 @@ public class MessagesStorage extends BaseController { if (messagesOnly == 0 || messagesOnly == 3) { database.executeFast("DELETE FROM dialogs WHERE did = " + did).stepThis().dispose(); - database.executeFast("DELETE FROM chat_settings_v2 WHERE uid = " + did).stepThis().dispose(); database.executeFast("DELETE FROM chat_pinned_v2 WHERE uid = " + did).stepThis().dispose(); database.executeFast("DELETE FROM chat_pinned_count WHERE uid = " + did).stepThis().dispose(); database.executeFast("DELETE FROM channel_users_v2 WHERE did = " + did).stepThis().dispose(); @@ -3073,11 +3072,10 @@ public class MessagesStorage extends BaseController { int high_id = (int) (did >> 32); if (lower_id != 0) { if (lower_id < 0) { - //database.executeFast("DELETE FROM chats WHERE uid = " + (-lower_id)).stepThis().dispose(); + database.executeFast("DELETE FROM chat_settings_v2 WHERE uid = " + (-lower_id)).stepThis().dispose(); } } else { database.executeFast("DELETE FROM enc_chats WHERE uid = " + high_id).stepThis().dispose(); - //database.executeFast("DELETE FROM secret_holes WHERE uid = " + high_id).stepThis().dispose(); } } else if (messagesOnly == 2) { SQLiteCursor cursor = database.queryFinalized("SELECT last_mid_i, last_mid FROM dialogs WHERE did = " + did); @@ -3091,7 +3089,9 @@ public class MessagesStorage extends BaseController { NativeByteBuffer data = cursor2.byteBufferValue(0); if (data != null) { TLRPC.Message message = TLRPC.Message.TLdeserialize(data, data.readInt32(false), false); - message.readAttachPath(data, getUserConfig().clientUserId); + if (message != null) { + message.readAttachPath(data, getUserConfig().clientUserId); + } data.reuse(); if (message != null) { messageId = message.id; @@ -5009,14 +5009,21 @@ public class MessagesStorage extends BaseController { if (ids == null) { database.executeFast("DELETE FROM chat_pinned_v2 WHERE uid = " + dialogId).stepThis().dispose(); if (dialogId < 0) { - database.executeFast("UPDATE chat_settings_v2 SET pinned = " + 0 + " WHERE uid = " + dialogId).stepThis().dispose(); + database.executeFast(String.format(Locale.US, "UPDATE chat_settings_v2 SET pinned = 0 WHERE uid = %d", -dialogId)).stepThis().dispose(); } else { - database.executeFast("UPDATE user_settings SET pinned = " + 0 + " WHERE uid = " + dialogId).stepThis().dispose(); + database.executeFast(String.format(Locale.US, "UPDATE user_settings SET pinned = 0 WHERE uid = %d", dialogId)).stepThis().dispose(); } newCount = 0; endReached = true; } else { - database.executeFast(String.format("DELETE FROM chat_pinned_v2 WHERE uid = " + dialogId + " AND mid IN(%s)", TextUtils.join(",", ids))).stepThis().dispose(); + String idsStr = TextUtils.join(",", ids); + if (dialogId < 0) { + database.executeFast(String.format(Locale.US, "UPDATE chat_settings_v2 SET pinned = 0 WHERE uid = %d AND pinned IN (%s)", -dialogId, idsStr)).stepThis().dispose(); + } else { + database.executeFast(String.format(Locale.US, "UPDATE user_settings SET pinned = 0 WHERE uid = %d AND pinned IN (%s)", dialogId, idsStr)).stepThis().dispose(); + } + + database.executeFast(String.format(Locale.US, "DELETE FROM chat_pinned_v2 WHERE uid = %d AND mid IN(%s)", dialogId, idsStr)).stepThis().dispose(); SQLiteCursor cursor = database.queryFinalized("SELECT changes()"); int updatedCount = cursor.next() ? cursor.intValue(0) : 0; @@ -8990,6 +8997,14 @@ public class MessagesStorage extends BaseController { for (int a = 0, N = messagesByDialogs.size(); a < N; a++) { long did = messagesByDialogs.keyAt(a); ArrayList mids = messagesByDialogs.valueAt(a); + int lowerId = (int) did; + if (lowerId != 0) { + if (lowerId < 0) { + database.executeFast(String.format(Locale.US, "UPDATE chat_settings_v2 SET pinned = 0 WHERE uid = %d AND pinned IN (%s)", -lowerId, mids)).stepThis().dispose(); + } else { + database.executeFast(String.format(Locale.US, "UPDATE user_settings SET pinned = 0 WHERE uid = %d AND pinned IN (%s)", lowerId, mids)).stepThis().dispose(); + } + } database.executeFast(String.format(Locale.US, "DELETE FROM chat_pinned_v2 WHERE uid = %d AND mid IN(%s)", did, TextUtils.join(",", mids))).stepThis().dispose(); int updatedCount = 0; cursor = database.queryFinalized("SELECT changes()"); @@ -9332,7 +9347,9 @@ public class MessagesStorage extends BaseController { state.dispose(); } - database.executeFast(String.format(Locale.US, "DELETE FROM chat_pinned_v2 WHERE uid = %d AND mid <= %d", -channelId, maxMessageId)).stepThis().dispose(); + + database.executeFast(String.format(Locale.US, "UPDATE chat_settings_v2 SET pinned = 0 WHERE uid = %d AND pinned <= %d", channelId, maxMessageId)).stepThis().dispose(); + database.executeFast(String.format(Locale.US, "DELETE FROM chat_pinned_v2 WHERE uid = %d AND mid <= %d", channelId, maxMessageId)).stepThis().dispose(); int updatedCount = 0; cursor = database.queryFinalized("SELECT changes()"); if (cursor.next()) { diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/SendMessagesHelper.java b/TMessagesProj/src/main/java/org/telegram/messenger/SendMessagesHelper.java index 104a9a860..6a65e75e7 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/SendMessagesHelper.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/SendMessagesHelper.java @@ -5220,7 +5220,7 @@ public class SendMessagesHelper extends BaseController implements NotificationCe } } - private static boolean prepareSendingDocumentInternal(AccountInstance accountInstance, String path, String originalPath, Uri uri, String mime, long dialogId, MessageObject replyToMsg, MessageObject replyToTopMsg, CharSequence caption, final ArrayList entities, final MessageObject editingMessageObject, long[] groupId, boolean isGroupFinal, boolean forceDocument, boolean notify, int scheduleDate, Boolean[] withThumb) { + private static boolean prepareSendingDocumentInternal(AccountInstance accountInstance, String path, String originalPath, Uri uri, String mime, long dialogId, MessageObject replyToMsg, MessageObject replyToTopMsg, CharSequence caption, final ArrayList entities, final MessageObject editingMessageObject, long[] groupId, boolean isGroupFinal, boolean forceDocument, boolean notify, int scheduleDate, Integer[] docType) { if ((path == null || path.length() == 0) && uri == null) { return false; } @@ -5448,19 +5448,25 @@ public class SendMessagesHelper extends BaseController implements NotificationCe if (originalPath != null) { params.put("originalPath", originalPath); } - if (forceDocument) { + if (forceDocument && attributeAudio == null) { params.put("forceDocument", "1"); } if (parentFinal != null) { params.put("parentObject", parentFinal); } - Boolean prevWithThumb = false; - if (withThumb != null) { - prevWithThumb = withThumb[0]; - withThumb[0] = document.mime_type != null && (document.mime_type.toLowerCase().startsWith("image/") || document.mime_type.toLowerCase().startsWith("video/mp4")) || MessageObject.canPreviewDocument(document); + Integer prevType = 0; + if (docType != null) { + prevType = docType[0]; + if (document.mime_type != null && (document.mime_type.toLowerCase().startsWith("image/") || document.mime_type.toLowerCase().startsWith("video/mp4")) || MessageObject.canPreviewDocument(document)) { + docType[0] = 1; + } else if (attributeAudio != null) { + docType[0] = 2; + } else { + docType[0] = 0; + } } if (groupId != null) { - if (withThumb != null && prevWithThumb != null && prevWithThumb != withThumb[0]) { + if (docType != null && prevType != null && prevType != docType[0]) { finishGroup(accountInstance, groupId[0], scheduleDate); groupId[0] = Utilities.random.nextLong(); } @@ -5605,7 +5611,7 @@ public class SendMessagesHelper extends BaseController implements NotificationCe boolean error = false; long[] groupId = new long[1]; int mediaCount = 0; - Boolean[] withThumb = new Boolean[1]; + Integer[] docType = new Integer[1]; boolean isEncrypted = (int) dialogId == 0; int enryptedLayer = 0; @@ -5630,7 +5636,7 @@ public class SendMessagesHelper extends BaseController implements NotificationCe } mediaCount++; long prevGroupId = groupId[0]; - if (!prepareSendingDocumentInternal(accountInstance, paths.get(a), originalPaths.get(a), null, mime, dialogId, replyToMsg, replyToTopMsg, captionFinal, null, editingMessageObject, groupId, mediaCount == 10 || a == count - 1, true, notify, scheduleDate, withThumb)) { + if (!prepareSendingDocumentInternal(accountInstance, paths.get(a), originalPaths.get(a), null, mime, dialogId, replyToMsg, replyToTopMsg, captionFinal, null, editingMessageObject, groupId, mediaCount == 10 || a == count - 1, true, notify, scheduleDate, docType)) { error = true; } if (prevGroupId != groupId[0]) { @@ -5653,7 +5659,7 @@ public class SendMessagesHelper extends BaseController implements NotificationCe } mediaCount++; long prevGroupId = groupId[0]; - if (!prepareSendingDocumentInternal(accountInstance, null, null, uris.get(a), mime, dialogId, replyToMsg, replyToTopMsg, captionFinal, null, editingMessageObject, groupId, mediaCount == 10 || a == count - 1, true, notify, scheduleDate, withThumb)) { + if (!prepareSendingDocumentInternal(accountInstance, null, null, uris.get(a), mime, dialogId, replyToMsg, replyToTopMsg, captionFinal, null, editingMessageObject, groupId, mediaCount == 10 || a == count - 1, true, notify, scheduleDate, docType)) { error = true; } if (prevGroupId != groupId[0]) { diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/SharedConfig.java b/TMessagesProj/src/main/java/org/telegram/messenger/SharedConfig.java index 1ddd8f395..f55ff7f54 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/SharedConfig.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/SharedConfig.java @@ -199,7 +199,7 @@ public class SharedConfig { public static void loadConfig() { synchronized (sync) { - if (configLoaded) { + if (configLoaded || ApplicationLoader.applicationContext == null) { return; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/DialogsSearchAdapter.java b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/DialogsSearchAdapter.java index 6e7f66bb5..12130568f 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/DialogsSearchAdapter.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/DialogsSearchAdapter.java @@ -645,6 +645,9 @@ public class DialogsSearchAdapter extends RecyclerListView.SelectionAdapter { searchWas = false; lastSearchId = 0; waitingResponseCount = 0; + if (delegate != null) { + delegate.searchStateChanged(false, true); + } searchMessagesInternal(null, 0); notifyDataSetChanged(); localTipDates.clear(); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/DialogCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DialogCell.java index 4bd26912b..e39d1a0b0 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/DialogCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DialogCell.java @@ -2312,7 +2312,7 @@ public class DialogCell extends BaseCell { StatusDrawable statusDrawable = Theme.getChatStatusDrawable(printingStringType); if (statusDrawable != null) { canvas.save(); - int left = LocaleController.isRTL ? messageLeft + messageLayout.getWidth() - statusDrawable.getIntrinsicWidth() : messageLeft; + int left = (LocaleController.isRTL || messageLayout.isRtlCharAt(0)) ? messageLeft + messageLayout.getWidth() - statusDrawable.getIntrinsicWidth() : messageLeft; if (printingStringType == 1 || printingStringType == 4) { canvas.translate(left, messageTop + (printingStringType == 1 ? AndroidUtilities.dp(1) : 0)); } else { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java index 148ba7269..5af5e61cf 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java @@ -6632,7 +6632,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not private void searchUserMessages(TLRPC.User user, TLRPC.Chat chat) { searchingUserMessages = user; searchingChatMessages = chat; - if (searchingUserMessages == null && searchingChatMessages == null) { + if (searchItem == null || searchingUserMessages == null && searchingChatMessages == null) { return; } String name; @@ -6923,7 +6923,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (!inPreviewMode && chatActivityEnterView != null) { if (chatActivityEnterView.getAnimatedTop() != 0) { chatListViewPaddingTop += chatActivityEnterView.getHeightWithTopView() - AndroidUtilities.dp(51) - chatActivityEnterView.getAnimatedTop(); - } else { + } else if (!chatActivityEnterView.pannelAniamationInProgress()) { chatListViewPaddingTop -= chatListView.getTranslationY(); } } @@ -18081,6 +18081,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not messageObjects.add(selectedObject); } MediaController.saveFilesFromMessages(getParentActivity(), getAccountInstance(), messageObjects, (count) -> { + if (getParentActivity() == null) { + return; + } if (count > 0) { BulletinFactory.of(this).createDownloadBulletin(isMusic ? BulletinFactory.FileType.AUDIOS : BulletinFactory.FileType.UNKNOWNS, count).show(); } @@ -18104,6 +18107,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not path = FileLoader.getPathToMessage(selectedObject.messageOwner).toString(); } MediaController.saveFile(path, getParentActivity(), 2, fileName, selectedObject.getDocument() != null ? selectedObject.getDocument().mime_type : "", () -> { + if (getParentActivity() == null) { + return; + } final BulletinFactory.FileType fileType; if (photo) { fileType = BulletinFactory.FileType.PHOTO_TO_DOWNLOADS; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/SlotsDrawable.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/SlotsDrawable.java index 482f3e4b0..cdfdbce66 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/SlotsDrawable.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/SlotsDrawable.java @@ -35,6 +35,8 @@ public class SlotsDrawable extends RLottieDrawable { private int[] secondFrameCounts = new int[3]; private int[] secondFrameNums = new int[3]; + private boolean playWinAnimation; + public SlotsDrawable(String diceEmoji, int w, int h) { super(diceEmoji, w, h); @@ -82,7 +84,7 @@ public class SlotsDrawable extends RLottieDrawable { secondFrameNums[a] = secondFrameCounts[a] - 1; } } - if (autoRepeatPlayCount == 1) { + if (playWinAnimation) { if (frameNums[0] + 1 < frameCounts[0]) { frameNums[0]++; } else { @@ -92,10 +94,12 @@ public class SlotsDrawable extends RLottieDrawable { getFrame(nativePtrs[0], Math.max(frameNums[0], 0), backgroundBitmap, width, height, backgroundBitmap.getRowBytes(), true); for (int a = 0; a < secondNativePtrs.length; a++) { getFrame(secondNativePtrs[a], secondFrameNums[a] >= 0 ? secondFrameNums[a] : (secondFrameCounts[a] - 1), backgroundBitmap, width, height, backgroundBitmap.getRowBytes(), false); - if (secondFrameNums[a] + 1 < secondFrameCounts[a]) { - secondFrameNums[a]++; - } else { - secondFrameNums[a] = -1; + if (!nextFrameIsLast) { + if (secondFrameNums[a] + 1 < secondFrameCounts[a]) { + secondFrameNums[a]++; + } else { + secondFrameNums[a] = -1; + } } } result = getFrame(nativePtrs[4], frameNums[4], backgroundBitmap, width, height, backgroundBitmap.getRowBytes(), false); @@ -104,12 +108,11 @@ public class SlotsDrawable extends RLottieDrawable { } if (secondFrameNums[0] == -1 && secondFrameNums[1] == -1 && secondFrameNums[2] == -1) { nextFrameIsLast = true; + autoRepeatPlayCount++; } if (left == right && right == center) { if (secondFrameNums[0] == secondFrameCounts[0] - 100) { - if (autoRepeatPlayCount == 0) { - autoRepeatPlayCount++; - } + playWinAnimation = true; if (left == ReelValue.sevenWin) { Runnable runnable = onFinishCallback.get(); if (runnable != null) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LocationActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LocationActivity.java index f272c0a7c..03fc1113d 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LocationActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LocationActivity.java @@ -867,7 +867,7 @@ public class LocationActivity extends BaseFragment implements NotificationCenter proximityButton.setContentDescription(LocaleController.getString("AccDescrLocationNotify", R.string.AccDescrLocationNotify)); mapViewClip.addView(proximityButton, LayoutHelper.createFrame(Build.VERSION.SDK_INT >= 21 ? 40 : 44, Build.VERSION.SDK_INT >= 21 ? 40 : 44, Gravity.RIGHT | Gravity.TOP, 0, 12 + 50, 12, 0)); proximityButton.setOnClickListener(v -> { - if (getParentActivity() == null || myLocation == null || !checkGpsEnabled()) { + if (getParentActivity() == null || myLocation == null || !checkGpsEnabled() || googleMap == null) { return; } if (hintView != null) { @@ -1836,6 +1836,9 @@ public class LocationActivity extends BaseFragment implements NotificationCenter } private void createCircle(int meters) { + if (googleMap == null) { + return; + } List PATTERN_POLYGON_ALPHA = Arrays.asList(new Gap(20), new Dash(20)); CircleOptions circleOptions = new CircleOptions();