diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/DownloadController.java b/TMessagesProj/src/main/java/org/telegram/messenger/DownloadController.java index 2b3fa3359..11ded715b 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/DownloadController.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/DownloadController.java @@ -25,6 +25,7 @@ import java.util.ArrayList; import java.util.HashMap; import cn.hutool.core.util.StrUtil; +import tw.nekomimi.nekogram.NekoConfig; public class DownloadController extends BaseController implements NotificationCenter.NotificationCenterDelegate { @@ -576,8 +577,13 @@ public class DownloadController extends BaseController implements NotificationCe public boolean canDownloadMedia(MessageObject messageObject) { if (messageObject.getDocument() != null) { String documentName = messageObject.getDocument().file_name; - if (StrUtil.endWithAny(documentName, ".cmd", ".bat", ".exe", ".lha", ".lzh", ".apk", ".zip", ".7z")) { - return false; + if (StrUtil.isNotBlank(documentName)) { + if ((NekoConfig.disableAutoDownloadingWin32Executable && + documentName.toLowerCase().matches(".*\\.(cmd|bat|com|exe|lnk|msi|ps1|reg|vb|vbe|vbs|vbscript)") + ) || (NekoConfig.disableAutoDownloadingArchive && + documentName.toLowerCase().matches(".*\\.(apk|zip|7z|tar|gz|zst|iso|xz|lha|lzh)") + ) + ) return false; } } return canDownloadMedia(messageObject.messageOwner) == 1; diff --git a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/NekoConfig.java b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/NekoConfig.java index c9335c899..1b8b3d6de 100644 --- a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/NekoConfig.java +++ b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/NekoConfig.java @@ -137,6 +137,9 @@ public class NekoConfig { public static boolean avatarBackgroundDarken; public static boolean disableTrending; + public static boolean disableAutoDownloadingWin32Executable; + public static boolean disableAutoDownloadingArchive; + public static String getOpenPGPAppName() { if (StrUtil.isNotBlank(openPGPApp)) { @@ -222,8 +225,8 @@ public class NekoConfig { hideKeyboardOnChatScroll = preferences.getBoolean("hideKeyboardOnChatScroll", false); avatarAsDrawerBackground = preferences.getBoolean("avatarAsDrawerBackground", true); avatarBackgroundBlur = preferences.getBoolean("avatarBackgroundBlur", false); - avatarBackgroundDarken = preferences.getBoolean("avatarBackgroundDarken", false); - useSystemEmoji = preferences.getBoolean("useSystemEmoji", false); + avatarBackgroundDarken = preferences.getBoolean("avatarBackgroundDarken", false); + useSystemEmoji = preferences.getBoolean("useSystemEmoji", false); showTabsOnForward = preferences.getBoolean("showTabsOnForward", false); rearVideoMessages = preferences.getBoolean("rearVideoMessages", false); hideAllTab = preferences.getBoolean("hideAllTab", false); @@ -291,6 +294,9 @@ public class NekoConfig { acceptSecretChat = preferences.getBoolean("acceptSecretChat", true); disableTrending = preferences.getBoolean("disableTrending", true); + disableAutoDownloadingWin32Executable = preferences.getBoolean("disableAutoDownloadingWin32Executable", true); + disableAutoDownloadingArchive = preferences.getBoolean("disableAutoDownloadingArchive", true); + } public static void toggleShowAddToSavedMessages() { @@ -743,6 +749,14 @@ public class NekoConfig { preferences.edit().putBoolean("disableTrending", disableTrending = !disableTrending).apply(); } + public static void toggleDisableAutoDownloadingWin32Executable() { + preferences.edit().putBoolean("disableAutoDownloadingWin32Executable", disableAutoDownloadingWin32Executable = !disableAutoDownloadingWin32Executable).apply(); + } + + public static void toggleDisableAutoDownloadingArchive() { + preferences.edit().putBoolean("disableAutoDownloadingArchive", disableAutoDownloadingArchive = !disableAutoDownloadingArchive).apply(); + } + private static final String EMOJI_FONT_AOSP = "NotoColorEmoji.ttf"; public static Typeface getSystemEmojiTypeface() { diff --git a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/settings/NekoChatSettingsActivity.java b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/settings/NekoChatSettingsActivity.java index e8e562956..4853fd985 100644 --- a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/settings/NekoChatSettingsActivity.java +++ b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/settings/NekoChatSettingsActivity.java @@ -79,6 +79,11 @@ public class NekoChatSettingsActivity extends BaseFragment implements Notificati private int messageMenuRow; private int chat2Row; + private int downloadRow; + private int win32Row; + private int archiveRow; + private int download2Row; + private int foldersRow; private int showTabsOnForwardRow; private int hideAllTabRow; @@ -257,6 +262,16 @@ public class NekoChatSettingsActivity extends BaseFragment implements Notificati if (view instanceof TextCheckCell) { ((TextCheckCell) view).setChecked(NekoConfig.disableTrending); } + } else if (position == win32Row) { + NekoConfig.toggleDisableAutoDownloadingWin32Executable(); + if (view instanceof TextCheckCell) { + ((TextCheckCell) view).setChecked(!NekoConfig.disableAutoDownloadingWin32Executable); + } + } else if (position == archiveRow) { + NekoConfig.toggleDisableAutoDownloadingArchive(); + if (view instanceof TextCheckCell) { + ((TextCheckCell) view).setChecked(!NekoConfig.disableAutoDownloadingArchive); + } } }); @@ -299,6 +314,11 @@ public class NekoChatSettingsActivity extends BaseFragment implements Notificati messageMenuRow = rowCount++; chat2Row = rowCount++; + downloadRow = rowCount++; + win32Row = rowCount++; + archiveRow = rowCount++; + download2Row = rowCount++; + foldersRow = rowCount++; showTabsOnForwardRow = rowCount++; hideAllTabRow = rowCount++; @@ -636,6 +656,10 @@ public class NekoChatSettingsActivity extends BaseFragment implements Notificati textCell.setTextAndCheck(LocaleController.getString("DisableProximityEvents", R.string.DisableProximityEvents), NekoConfig.disableProximityEvents, true); } else if (position == disableTrendingRow) { textCell.setTextAndCheck(LocaleController.getString("DisableTrending", R.string.DisableTrending), NekoConfig.disableTrending, true); + } else if (position == win32Row) { + textCell.setTextAndCheck(LocaleController.getString("Win32ExecutableFiles", R.string.Win32ExecutableFiles), !NekoConfig.disableAutoDownloadingWin32Executable, true); + } else if (position == archiveRow) { + textCell.setTextAndCheck(LocaleController.getString("ArchiveFiles", R.string.ArchiveFiles), !NekoConfig.disableAutoDownloadingArchive, false); } break; } @@ -645,6 +669,8 @@ public class NekoChatSettingsActivity extends BaseFragment implements Notificati headerCell.setText(LocaleController.getString("Chat", R.string.Chat)); } else if (position == foldersRow) { headerCell.setText(LocaleController.getString("Folder", R.string.Folder)); + } else if (position == downloadRow) { + headerCell.setText(LocaleController.getString("AutoDownload", R.string.AutoDownload)); } else if (position == stickerSizeHeaderRow) { headerCell.setText(LocaleController.getString("StickerSize", R.string.StickerSize)); } @@ -702,11 +728,11 @@ public class NekoChatSettingsActivity extends BaseFragment implements Notificati @Override public int getItemViewType(int position) { - if (position == chat2Row || position == folders2Row || position == stickerSize2Row) { + if (position == chat2Row || position == folders2Row || position == download2Row || position == stickerSize2Row) { return 1; } else if (position == mapPreviewRow || position == messageMenuRow || position == tabsTitleTypeRow) { return 2; - } else if (position == chatRow || position == foldersRow || position == stickerSizeHeaderRow) { + } else if (position == chatRow || position == foldersRow || position == downloadRow || position == stickerSizeHeaderRow) { return 4; } else if (position == stickerSizeRow) { return 8; diff --git a/TMessagesProj/src/main/res/values/strings_nekox.xml b/TMessagesProj/src/main/res/values/strings_nekox.xml index 57026cef2..83f4ad7e6 100644 --- a/TMessagesProj/src/main/res/values/strings_nekox.xml +++ b/TMessagesProj/src/main/res/values/strings_nekox.xml @@ -274,9 +274,14 @@ Origin Replace Use regex + Disable Trending Hide device model Device model will be uploaded the second time the app starts after logging in. You can change this in the settings later. + AutoDownload + Win32 executable files + Archive files + \ No newline at end of file