diff --git a/TMessagesProj/build.gradle b/TMessagesProj/build.gradle index 9cc55c8bb..e2e9b3a71 100644 --- a/TMessagesProj/build.gradle +++ b/TMessagesProj/build.gradle @@ -15,7 +15,7 @@ apply plugin: "io.sentry.android.gradle" //} def verName = "10.14.5" -def verCode = 1186 +def verCode = 1187 def officialVer = "10.14.5" diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatActivityEnterView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatActivityEnterView.java index 0bef7c860..a84687eef 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatActivityEnterView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatActivityEnterView.java @@ -217,6 +217,7 @@ import kotlin.text.StringsKt; import tw.nekomimi.nekogram.NekoConfig; import tw.nekomimi.nekogram.cc.CCConverter; import tw.nekomimi.nekogram.cc.CCTarget; +import tw.nekomimi.nekogram.helpers.remote.ChatExtraButtonsHelper; import tw.nekomimi.nekogram.transtale.TranslateDb; import tw.nekomimi.nekogram.transtale.Translator; import tw.nekomimi.nekogram.transtale.TranslatorKt; @@ -4358,6 +4359,20 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific ActionBarMenuSubItem cell = new ActionBarMenuSubItem(getContext(), true, false); int dlps = delegate.getDisableLinkPreviewStatus(); + long _chatId = -1; + if (parentFragment != null) { + TLRPC.Chat chat = parentFragment.getCurrentChat(); + TLRPC.User user = parentFragment.getCurrentUser(); + if (chat != null) { + _chatId = chat.id; + } else if (user != null) { + _chatId = user.id; + } else { + _chatId = -1; + } + } + final long chatId = _chatId; + if (!isInInput) { cell.setTextAndIcon(LocaleController.getString("ChatAttachEnterMenuRecordAudio", R.string.ChatAttachEnterMenuRecordAudio), R.drawable.input_mic); @@ -4451,18 +4466,6 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific } - TLRPC.Chat chat = parentFragment.getCurrentChat(); - TLRPC.User user = parentFragment.getCurrentUser(); - - long chatId; - if (chat != null) { - chatId = chat.id; - } else if (user != null) { - chatId = user.id; - } else { - chatId = -1; - } - cell.setTextAndIcon(LocaleController.getString("Translate", R.string.Translate), R.drawable.ic_translate); cell.setOnClickListener(v -> { if (menuPopupWindow != null && menuPopupWindow.isShowing()) { @@ -4560,6 +4563,8 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific menuPopupLayout.addView(cell, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT, 0, 48 * a++, 0, 0)); } + addChatExtraButtons(chatId, a, menuPopupLayout); + menuPopupLayout.setupRadialSelectors(Theme.getColor(Theme.key_dialogButtonSelector)); menuPopupWindow = new ActionBarPopupWindow(menuPopupLayout, LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT); @@ -4596,6 +4601,44 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific } + private int addChatExtraButtons(long chatId, int a, ActionBarPopupWindow.ActionBarPopupWindowLayout menuPopupLayout) { + ArrayList buttonInfos = ChatExtraButtonsHelper.getInstance().getChatExtraButtons(chatId); + if (buttonInfos == null) { + return a; + } + for (ChatExtraButtonsHelper.ChatExtraButtonInfo info : buttonInfos) { + ActionBarMenuSubItem cell = new ActionBarMenuSubItem(getContext(), false, true); + + switch (info.type) { + case ChatExtraButtonsHelper.CHAT_BUTTON_TYPE_LINK: + cell.setTextAndIcon( + info.name.isEmpty() ? LocaleController.getString("OpenUrlTitle", R.string.OpenUrlTitle) : info.name, + R.drawable.msg_openin + ); + break; + case ChatExtraButtonsHelper.CHAT_BUTTON_TYPE_SEARCH: + cell.setTextAndIcon( + info.name.isEmpty() ? LocaleController.getString("Search", R.string.Search) : info.name, + R.drawable.msg_search + ); + break; + } + + cell.setOnClickListener(v -> { + if (menuPopupWindow != null && menuPopupWindow.isShowing()) { + menuPopupWindow.dismiss(); + } + if (parentActivity != null) { + Browser.openUrl(parentActivity, Uri.parse(info.url), true, true); + } + }); + + cell.setMinimumWidth(AndroidUtilities.dp(196)); + menuPopupLayout.addView(cell, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT, 0, 48 * a++, 0, 0)); + } + return a; + } + private ActionBarMenuSubItem actionScheduleButton; private boolean onSendLongClick(View view) { if (isInScheduleMode() || parentFragment != null && parentFragment.getChatMode() == ChatActivity.MODE_QUICK_REPLIES) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java index 81075ade7..e05410b71 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java @@ -230,6 +230,7 @@ import kotlin.Unit; import kotlin.text.StringsKt; import tw.nekomimi.nekogram.InternalUpdater; import tw.nekomimi.nekogram.helpers.SettingsHelper; +import tw.nekomimi.nekogram.helpers.remote.ChatExtraButtonsHelper; import tw.nekomimi.nekogram.helpers.remote.EmojiHelper; import tw.nekomimi.nekogram.helpers.remote.PagePreviewRulesHelper; import tw.nekomimi.nekogram.helpers.remote.PeerColorHelper; @@ -1077,6 +1078,7 @@ public class LaunchActivity extends BasePermissionsActivity implements INavigati WallpaperHelper.getInstance().checkWallPaper(); PeerColorHelper.getInstance().checkPeerColor(); PagePreviewRulesHelper.getInstance().checkPagePreviewRules(); + ChatExtraButtonsHelper.getInstance().checkChatExtraButtons(); BackupAgent.requestBackup(this); RestrictedLanguagesSelectActivity.checkRestrictedLanguages(false); diff --git a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/helpers/CloudSettingsHelper.java b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/helpers/CloudSettingsHelper.java index 985bf01c4..05dd2058f 100644 --- a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/helpers/CloudSettingsHelper.java +++ b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/helpers/CloudSettingsHelper.java @@ -185,7 +185,7 @@ public class CloudSettingsHelper { private void syncToCloud(Utilities.Callback2 callback) { try { - String setting = NekoSettingsActivity.backupSettingsJson(); + String setting = NekoSettingsActivity.backupSettingsJson(0); // 分块存储 int chunkSize = 4000; // 每个分块的最大长度 int numChunks = (int) Math.ceil((double) setting.length() / chunkSize); // 计算总分块数 diff --git a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/helpers/remote/ChatExtraButtonsHelper.java b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/helpers/remote/ChatExtraButtonsHelper.java new file mode 100644 index 000000000..df93b3c6f --- /dev/null +++ b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/helpers/remote/ChatExtraButtonsHelper.java @@ -0,0 +1,188 @@ +package tw.nekomimi.nekogram.helpers.remote; + +import android.text.TextUtils; +import android.util.Base64; + +import org.json.JSONException; +import org.json.JSONObject; +import org.telegram.messenger.FileLog; +import org.telegram.tgnet.AbstractSerializedData; +import org.telegram.tgnet.SerializedData; + +import java.util.ArrayList; +import java.util.HashMap; + +public class ChatExtraButtonsHelper extends BaseRemoteHelper { + private static final String CHAT_EXTRA_BUTTONS_TAG = "chatButtonsV1"; + private static volatile ChatExtraButtonsHelper Instance; + private final ArrayList buttons = new ArrayList<>(); + private final HashMap> buttonsMap = new HashMap<>(); + private boolean loading = false; + + public static ChatExtraButtonsHelper getInstance() { + ChatExtraButtonsHelper localInstance = Instance; + if (localInstance == null) { + synchronized (ChatExtraButtonsHelper.class) { + localInstance = Instance; + if (localInstance == null) { + Instance = localInstance = new ChatExtraButtonsHelper(); + } + return localInstance; + } + } + return localInstance; + } + + @Override + protected void onError(String text, Delegate delegate) { + + } + + @Override + protected String getTag() { + return CHAT_EXTRA_BUTTONS_TAG; + } + + @Override + protected void onLoadSuccess(ArrayList responses, Delegate delegate) { + var tag = getTag(); + var json = !responses.isEmpty() ? responses.get(0) : null; + if (json == null) { + preferences.edit() + .remove(tag + "_update_time") + .remove(tag) + .apply(); + return; + } + + try { + ArrayList buttonInfo = new ArrayList<>(); + var array = json.getJSONArray("buttons"); + + for (int i = 0; i < array.length(); i++) { + var obj = array.getJSONObject(i); + int type = obj.getInt("type"); + long chatId = obj.getLong("chat_id"); + String name = obj.getString("name"); + String url = obj.getString("url"); + var info = new ChatExtraButtonInfo( + type, + chatId, + name, + url + ); + buttonInfo.add(info); + } + + buttons.clear(); + buttons.addAll(buttonInfo); + buttonsMap.clear(); + for (ChatExtraButtonInfo info : buttons) { + putToMap(info); + } + saveChatExtraButtons(); + } catch (JSONException e) { + FileLog.e(e); + } + } + + private void putToMap(ChatExtraButtonInfo info) { + ArrayList arrayList = buttonsMap.get(info.chatId); + if (arrayList == null) { + arrayList = new ArrayList<>(); + } + arrayList.add(info); + buttonsMap.put(info.chatId, arrayList); + } + + public ArrayList getChatExtraButtons(long chatId) { + return buttonsMap.get(chatId); + } + + public void loadPagePreviewRules() { + var tag = getTag(); + String list = preferences.getString(tag, ""); + buttons.clear(); + buttonsMap.clear(); + if (!TextUtils.isEmpty(list)) { + byte[] bytes = Base64.decode(list, Base64.DEFAULT); + SerializedData data = new SerializedData(bytes); + int count = data.readInt32(false); + for (int a = 0; a < count; a++) { + ChatExtraButtonInfo info = ChatExtraButtonInfo.deserialize(data); + buttons.add(info); + putToMap(info); + } + data.cleanup(); + } + } + + public void saveChatExtraButtons() { + var tag = getTag(); + SerializedData serializedData = new SerializedData(); + serializedData.writeInt32(buttons.size()); + for (ChatExtraButtonInfo info : buttons) { + info.serializeToStream(serializedData); + } + preferences.edit() + .putLong(tag + "_update_time", System.currentTimeMillis()) + .putString(tag, Base64.encodeToString(serializedData.toByteArray(), Base64.NO_WRAP | Base64.NO_PADDING)) + .apply(); + serializedData.cleanup(); + } + + public boolean needUpdate() { + var tag = getTag(); + long oldTime = preferences.getLong(tag + "_update_time", 0L); + long nowTime = System.currentTimeMillis(); + int TTL = 15 * 60; + return oldTime + TTL <= nowTime; + } + + public void checkChatExtraButtons() { + if (loading) { + return; + } + loading = true; + loadPagePreviewRules(); + if (needUpdate()) { + load(); + } + loading = false; + } + + public static final int CHAT_BUTTON_TYPE_LINK = 1; + public static final int CHAT_BUTTON_TYPE_SEARCH = 2; + + public static class ChatExtraButtonInfo { + public int type; + public long chatId; + public String name; + public String url; + + public ChatExtraButtonInfo() {} + + public ChatExtraButtonInfo(int type, long chatId, String name, String url) { + this.type = type; + this.chatId = chatId; + this.name = name; + this.url = url; + } + + public static ChatExtraButtonInfo deserialize(AbstractSerializedData stream) { + ChatExtraButtonInfo chatExtraButtonInfo = new ChatExtraButtonInfo(); + chatExtraButtonInfo.type = stream.readInt32(false); + chatExtraButtonInfo.chatId = stream.readInt64(false); + chatExtraButtonInfo.name = stream.readString(false); + chatExtraButtonInfo.url = stream.readString(false); + return chatExtraButtonInfo; + } + + public void serializeToStream(AbstractSerializedData serializedData) { + serializedData.writeInt32(type); + serializedData.writeInt64(chatId); + serializedData.writeString(name); + serializedData.writeString(url); + } + } +} diff --git a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/helpers/remote/UpdateHelper.java b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/helpers/remote/UpdateHelper.java index 575230e8b..dc986cfd2 100644 --- a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/helpers/remote/UpdateHelper.java +++ b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/helpers/remote/UpdateHelper.java @@ -5,7 +5,6 @@ import android.os.Build; import org.json.JSONException; import org.json.JSONObject; import org.telegram.messenger.BuildConfig; -import org.telegram.messenger.BuildVars; import org.telegram.tgnet.TLObject; import org.telegram.tgnet.TLRPC; @@ -17,7 +16,7 @@ import java.util.Map; import tw.nekomimi.nekogram.NekoXConfig; public class UpdateHelper extends BaseRemoteHelper { - public static final String UPDATE_TAG = NekoXConfig.autoUpdateReleaseChannel == 2 ? "updatetest" : "updatev1"; + public static final String UPDATE_TAG = NekoXConfig.autoUpdateReleaseChannel == 2 ? "updatetest" : "updatev2"; private static final class InstanceHolder { private static final UpdateHelper instance = new UpdateHelper(); @@ -81,7 +80,6 @@ public class UpdateHelper extends BaseRemoteHelper { string.getInt("sticker"), string.getInt("message"), jsonToMap(string.getJSONObject("gcm")), - jsonToMap(string.getJSONObject("nogcm")), string.getString("url") ); break; @@ -188,17 +186,15 @@ public class UpdateHelper extends BaseRemoteHelper { public Integer sticker; public Integer message; public Map gcm; - public Map nogcm; public String url; - public Update(Boolean canNotSkip, String version, int versionCode, int sticker, int message, Map gcm, Map nogcm, String url) { + public Update(Boolean canNotSkip, String version, int versionCode, int sticker, int message, Map gcm, String url) { this.canNotSkip = canNotSkip; this.version = version; this.versionCode = versionCode; this.sticker = sticker; this.message = message; this.gcm = gcm; - this.nogcm = nogcm; this.url = url; } } diff --git a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/settings/NekoSettingsActivity.java b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/settings/NekoSettingsActivity.java index f96c3bc92..d7652d852 100644 --- a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/settings/NekoSettingsActivity.java +++ b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/settings/NekoSettingsActivity.java @@ -453,6 +453,10 @@ public class NekoSettingsActivity extends BaseFragment { } public static String backupSettingsJson() throws JSONException { + return backupSettingsJson(4); + } + + public static String backupSettingsJson(int indentSpaces) throws JSONException { JSONObject configJson = new JSONObject(); @@ -529,7 +533,7 @@ public class NekoSettingsActivity extends BaseFragment { spToJSON("nkmrcfg", configJson, null); spToJSON("nekodialogconfig", configJson, null); - return configJson.toString(4); + return configJson.toString(indentSpaces); } private static void spToJSON(String sp, JSONObject object, Function filter) throws JSONException { diff --git a/TMessagesProj/src/main/res/values-ar-rSA/strings_na.xml b/TMessagesProj/src/main/res/values-ar-rSA/strings_na.xml index 73688113e..a2e79bb82 100644 --- a/TMessagesProj/src/main/res/values-ar-rSA/strings_na.xml +++ b/TMessagesProj/src/main/res/values-ar-rSA/strings_na.xml @@ -158,4 +158,5 @@ انقر فوق وقت الرسالة لعرض التفاصيل قناة النقر فوق هاشتاج صفحة البحث الافتراضية صفحة البحث الافتراضية للدردشة بنقرة هاشتاج + url regex للقفز من مشاهدة الويب البوت diff --git a/TMessagesProj/src/main/res/values-cs-rCZ/strings_na.xml b/TMessagesProj/src/main/res/values-cs-rCZ/strings_na.xml index d89fe70d0..e853e70db 100644 --- a/TMessagesProj/src/main/res/values-cs-rCZ/strings_na.xml +++ b/TMessagesProj/src/main/res/values-cs-rCZ/strings_na.xml @@ -158,4 +158,5 @@ Pro zobrazení podrobností klikněte na čas zprávy Výchozí vyhledávací stránka Hashtag kliknutím na kanál Výchozí stránka hledání kliknutím na hashtag + Url regex pro skok z webového zobrazení bota diff --git a/TMessagesProj/src/main/res/values-da-rDK/strings_na.xml b/TMessagesProj/src/main/res/values-da-rDK/strings_na.xml index 99fc2b097..5e6108c3b 100644 --- a/TMessagesProj/src/main/res/values-da-rDK/strings_na.xml +++ b/TMessagesProj/src/main/res/values-da-rDK/strings_na.xml @@ -158,4 +158,5 @@ Klik på beskedtid for at vise detaljer Kanal Klik Hashtag Standard Søgeside Chat Klik Hashtag Standard Søgeside + Url regex til at hoppe ud af bot webview diff --git a/TMessagesProj/src/main/res/values-de-rDE/strings_na.xml b/TMessagesProj/src/main/res/values-de-rDE/strings_na.xml index ee1d51562..bd1d12fda 100644 --- a/TMessagesProj/src/main/res/values-de-rDE/strings_na.xml +++ b/TMessagesProj/src/main/res/values-de-rDE/strings_na.xml @@ -158,4 +158,5 @@ Nachrichtenzeit anklicken, um Details anzuzeigen Kanal Klick auf Hashtag Standard-Suchseite Chat Klick auf Hashtag Standard-Suchseite + Url regex um aus dem Bot Webview zu springen diff --git a/TMessagesProj/src/main/res/values-el-rGR/strings_na.xml b/TMessagesProj/src/main/res/values-el-rGR/strings_na.xml index cfaa31c6c..60330836b 100644 --- a/TMessagesProj/src/main/res/values-el-rGR/strings_na.xml +++ b/TMessagesProj/src/main/res/values-el-rGR/strings_na.xml @@ -158,4 +158,5 @@ Κάντε κλικ στο μήνυμα για να εμφανίσετε λεπτομέρειες Κανάλι Κάντε Κλικ Hashtag Προεπιλεγμένη Σελίδα Αναζήτησης Chat Click Hashtag Προεπιλεγμένη Σελίδα Αναζήτησης + Url regex για να πηδήξει έξω από bot προβολή webview diff --git a/TMessagesProj/src/main/res/values-es-rES/strings_na.xml b/TMessagesProj/src/main/res/values-es-rES/strings_na.xml index 3f32fbdfd..c6de4f032 100644 --- a/TMessagesProj/src/main/res/values-es-rES/strings_na.xml +++ b/TMessagesProj/src/main/res/values-es-rES/strings_na.xml @@ -158,4 +158,5 @@ Haga clic en la hora del mensaje para mostrar los detalles Canal haga clic en Hashtag por defecto página de búsqueda Chatear Hashtag página de búsqueda predeterminada + Url regex para saltar de la vista web del bot diff --git a/TMessagesProj/src/main/res/values-fi-rFI/strings_na.xml b/TMessagesProj/src/main/res/values-fi-rFI/strings_na.xml index 6da6c94ad..76a80d9cb 100644 --- a/TMessagesProj/src/main/res/values-fi-rFI/strings_na.xml +++ b/TMessagesProj/src/main/res/values-fi-rFI/strings_na.xml @@ -158,4 +158,5 @@ Valitse viestin aika näyttääksesi tiedot Kanavan Napsauta Hashtag Oletus Hakusivu Chatti Klikkaa Hashtag Oletus Hakusivu + Url regex hypätä ulos bottinäytöstä diff --git a/TMessagesProj/src/main/res/values-fr-rFR/strings_na.xml b/TMessagesProj/src/main/res/values-fr-rFR/strings_na.xml index e1b0561b2..396117650 100644 --- a/TMessagesProj/src/main/res/values-fr-rFR/strings_na.xml +++ b/TMessagesProj/src/main/res/values-fr-rFR/strings_na.xml @@ -158,4 +158,5 @@ Cliquez sur l\'heure du message pour afficher les détails Page de recherche par défaut du canal cliqué sur Hashtag Page de recherche par défaut pour les clics de chat + Url regex pour sortir du site web du bot diff --git a/TMessagesProj/src/main/res/values-it-rIT/strings_na.xml b/TMessagesProj/src/main/res/values-it-rIT/strings_na.xml index 5de05e6dd..5b98f99c4 100644 --- a/TMessagesProj/src/main/res/values-it-rIT/strings_na.xml +++ b/TMessagesProj/src/main/res/values-it-rIT/strings_na.xml @@ -158,4 +158,5 @@ Fare clic sull\'ora del messaggio per visualizzare i dettagli Pagina Di Ricerca Predefinita Hashtag Click Canale Clicca Su Hashtag Pagina Di Ricerca Predefinita + Url regex per saltare fuori dal bot webview diff --git a/TMessagesProj/src/main/res/values-ja-rJP/strings_na.xml b/TMessagesProj/src/main/res/values-ja-rJP/strings_na.xml index d8938f57c..dd091b0fb 100644 --- a/TMessagesProj/src/main/res/values-ja-rJP/strings_na.xml +++ b/TMessagesProj/src/main/res/values-ja-rJP/strings_na.xml @@ -158,4 +158,5 @@ 詳細を表示するメッセージ時間をクリックしてください Channel Click Hashtag Default Search Page チャットクリック ハッシュタグ デフォルト検索ページ + ボットのWebビューから飛び出すURL正規表現 diff --git a/TMessagesProj/src/main/res/values-nl-rNL/strings_na.xml b/TMessagesProj/src/main/res/values-nl-rNL/strings_na.xml index a6373edd2..2387a84f3 100644 --- a/TMessagesProj/src/main/res/values-nl-rNL/strings_na.xml +++ b/TMessagesProj/src/main/res/values-nl-rNL/strings_na.xml @@ -158,4 +158,5 @@ Klik op berichttijd om details weer te geven Kanaal klik op Hashtag standaard zoekpagina Chat klik op Hashtag standaard zoekpagina + Url regex om uit bot webview te springen diff --git a/TMessagesProj/src/main/res/values-no-rNO/strings_na.xml b/TMessagesProj/src/main/res/values-no-rNO/strings_na.xml index 8498f289f..a0362c21d 100644 --- a/TMessagesProj/src/main/res/values-no-rNO/strings_na.xml +++ b/TMessagesProj/src/main/res/values-no-rNO/strings_na.xml @@ -158,4 +158,5 @@ Klikk meldings-tid for å vise detaljer Kanal klikk Hashtag standard søkeside Chat Klikk Hashtag som standard søkeside + Url regex til å hoppe ut av bot webview diff --git a/TMessagesProj/src/main/res/values-pl-rPL/strings_na.xml b/TMessagesProj/src/main/res/values-pl-rPL/strings_na.xml index d6e080f95..05da0cab5 100644 --- a/TMessagesProj/src/main/res/values-pl-rPL/strings_na.xml +++ b/TMessagesProj/src/main/res/values-pl-rPL/strings_na.xml @@ -158,4 +158,5 @@ Kliknij czas wiadomości aby wyświetlić szczegóły Kliknięcie kanału Hashtag domyślna strona wyszukiwania Domyślna strona wyszukiwania Hashtag + Adres URL regex do wyskakania z widoku bota diff --git a/TMessagesProj/src/main/res/values-pt-rBR/strings_na.xml b/TMessagesProj/src/main/res/values-pt-rBR/strings_na.xml index bb42dd1cd..8c582410d 100644 --- a/TMessagesProj/src/main/res/values-pt-rBR/strings_na.xml +++ b/TMessagesProj/src/main/res/values-pt-rBR/strings_na.xml @@ -158,4 +158,5 @@ Clique no horário da mensagem para exibir detalhes Página Padrão de Pesquisa no Hashtag do Canal Página de pesquisa padrão do Click Chat Hashtag + Regex Url para saltar do webview do bot diff --git a/TMessagesProj/src/main/res/values-pt-rPT/strings_na.xml b/TMessagesProj/src/main/res/values-pt-rPT/strings_na.xml index bb42dd1cd..8c582410d 100644 --- a/TMessagesProj/src/main/res/values-pt-rPT/strings_na.xml +++ b/TMessagesProj/src/main/res/values-pt-rPT/strings_na.xml @@ -158,4 +158,5 @@ Clique no horário da mensagem para exibir detalhes Página Padrão de Pesquisa no Hashtag do Canal Página de pesquisa padrão do Click Chat Hashtag + Regex Url para saltar do webview do bot diff --git a/TMessagesProj/src/main/res/values-ro-rRO/strings_na.xml b/TMessagesProj/src/main/res/values-ro-rRO/strings_na.xml index e44cf274a..74b0daaa5 100644 --- a/TMessagesProj/src/main/res/values-ro-rRO/strings_na.xml +++ b/TMessagesProj/src/main/res/values-ro-rRO/strings_na.xml @@ -158,4 +158,5 @@ Apasă pe timpul mesajului pentru a afișa detaliile Pagina de căutare implicită a Hashtag-ului pentru Canal Pagina Implicită Căutare Hashtag Conversație + Url regex pentru a sări din webview bot diff --git a/TMessagesProj/src/main/res/values-ru-rRU/strings_na.xml b/TMessagesProj/src/main/res/values-ru-rRU/strings_na.xml index 4aac6b923..4c78c07de 100644 --- a/TMessagesProj/src/main/res/values-ru-rRU/strings_na.xml +++ b/TMessagesProj/src/main/res/values-ru-rRU/strings_na.xml @@ -158,4 +158,5 @@ Показывать подробную информацию при нажатии на время сообщения Страница поиска по умолчанию при нажатии на хештеги каналов Страница поиска по умолчанию при нажатии на хештеги чатов + Регулярное выражение URL для перехода из веб-бота diff --git a/TMessagesProj/src/main/res/values-sv-rSE/strings_na.xml b/TMessagesProj/src/main/res/values-sv-rSE/strings_na.xml index b97bb66b7..d72c48bc1 100644 --- a/TMessagesProj/src/main/res/values-sv-rSE/strings_na.xml +++ b/TMessagesProj/src/main/res/values-sv-rSE/strings_na.xml @@ -158,4 +158,5 @@ Klicka på meddelandetid för att visa detaljer Kanal Klicka på Hashtag standard söksida Chatt Klicka Hashtag standard söksida + Url regex att hoppa ut ur bot webview diff --git a/TMessagesProj/src/main/res/values-tr-rTR/strings_na.xml b/TMessagesProj/src/main/res/values-tr-rTR/strings_na.xml index 27bcdaa30..b437ac92b 100644 --- a/TMessagesProj/src/main/res/values-tr-rTR/strings_na.xml +++ b/TMessagesProj/src/main/res/values-tr-rTR/strings_na.xml @@ -158,4 +158,5 @@ Click message time to display details Channel Click Hashtag Default Search Page Chat Click Hashtag Default Search Page + Url regex to jump out of bot webview diff --git a/TMessagesProj/src/main/res/values-uk-rUA/strings_na.xml b/TMessagesProj/src/main/res/values-uk-rUA/strings_na.xml index f81fa5227..6c326d0d8 100644 --- a/TMessagesProj/src/main/res/values-uk-rUA/strings_na.xml +++ b/TMessagesProj/src/main/res/values-uk-rUA/strings_na.xml @@ -158,4 +158,5 @@ Натисніть час повідомлення для відображення подробиць Знайти сторінку пошуку по каналу натисніть хештеґ за замовчуванням Знайти сторінку пошуку при чаті натисніть хештеґ за замовчуванням + Перестрибнути з веб-перегляду ботів diff --git a/TMessagesProj/src/main/res/values-uz-rUZ/strings_na.xml b/TMessagesProj/src/main/res/values-uz-rUZ/strings_na.xml index e7c77b3e9..a58950dfb 100644 --- a/TMessagesProj/src/main/res/values-uz-rUZ/strings_na.xml +++ b/TMessagesProj/src/main/res/values-uz-rUZ/strings_na.xml @@ -158,4 +158,5 @@ Click message time to display details Channel Click Hashtag Default Search Page Chat Click Hashtag Default Search Page + Url regex to jump out of bot webview diff --git a/TMessagesProj/src/main/res/values-vi-rVN/strings_na.xml b/TMessagesProj/src/main/res/values-vi-rVN/strings_na.xml index 2eb078bb1..c6a1ab896 100644 --- a/TMessagesProj/src/main/res/values-vi-rVN/strings_na.xml +++ b/TMessagesProj/src/main/res/values-vi-rVN/strings_na.xml @@ -158,4 +158,5 @@ Bấm vào thời gian tin nhắn để hiển thị thông tin chi tiết Bấm vào nhãn trên kênh để tìm trang tìm kiếm mặc định Nhấp vào nhãn trong các cuộc hội thoại khác để mặc định trang tìm kiếm + Chỉ định Url Regex để thoát khỏi chế độ xem web của bot diff --git a/TMessagesProj/src/main/res/values-zh-rTW/strings_na.xml b/TMessagesProj/src/main/res/values-zh-rTW/strings_na.xml index 30c1ba80b..1f2444f16 100644 --- a/TMessagesProj/src/main/res/values-zh-rTW/strings_na.xml +++ b/TMessagesProj/src/main/res/values-zh-rTW/strings_na.xml @@ -158,4 +158,5 @@ 點擊消息時間顯示詳細信息 Channel Click Hashtag Default Search Page Chat Click Hashtag Default Search Page + Url regex to jump out of bot webview