diff --git a/TMessagesProj/src/main/java/org/telegram/ui/bots/BotWebViewContainer.java b/TMessagesProj/src/main/java/org/telegram/ui/bots/BotWebViewContainer.java
index 4cf055d8d8..4f70c14bf9 100644
--- a/TMessagesProj/src/main/java/org/telegram/ui/bots/BotWebViewContainer.java
+++ b/TMessagesProj/src/main/java/org/telegram/ui/bots/BotWebViewContainer.java
@@ -100,6 +100,9 @@
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.regex.Pattern;
+
+import xyz.nextalone.nagram.NaConfig;
public abstract class BotWebViewContainer extends FrameLayout implements NotificationCenter.NotificationCenterDelegate {
private final static String DURGER_KING_USERNAME = "DurgerKingBot";
@@ -1983,6 +1986,19 @@ public boolean onRenderProcessGone(WebView view, RenderProcessGoneDetail detail)
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Uri uriNew = Uri.parse(url);
+
+ // ----- Nagram Hook start -----
+ String urlPatternStr = NaConfig.INSTANCE.getOpenUrlOutBotWebViewRegex().String();
+ if (botWebViewContainer != null && !urlPatternStr.isEmpty()) {
+ Pattern urlPattern = Pattern.compile(urlPatternStr, Pattern.MULTILINE | Pattern.CASE_INSENSITIVE);
+ if (urlPattern.matcher(url).find()) {
+ botWebViewContainer.onOpenUri(uriNew);
+ d("shouldOverrideUrlLoading("+url+") = true");
+ return true;
+ }
+ }
+ // ----- Nagram Hook end -----
+
if (botWebViewContainer != null && Browser.isInternalUri(uriNew, null)) {
if (MessagesController.getInstance(botWebViewContainer.currentAccount).webAppAllowedProtocols != null &&
MessagesController.getInstance(botWebViewContainer.currentAccount).webAppAllowedProtocols.contains(uriNew.getScheme())) {
diff --git a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/settings/NekoExperimentalSettingsActivity.java b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/settings/NekoExperimentalSettingsActivity.java
index e7182eaa02..8311089006 100644
--- a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/settings/NekoExperimentalSettingsActivity.java
+++ b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/settings/NekoExperimentalSettingsActivity.java
@@ -45,6 +45,7 @@
import java.io.File;
import java.io.FileInputStream;
import java.util.ArrayList;
+import java.util.regex.Pattern;
import kotlin.Unit;
@@ -108,6 +109,16 @@ public class NekoExperimentalSettingsActivity extends BaseNekoXSettingsActivity
private final AbstractConfigCell regexFiltersEnableInChatsRow = cellGroup.appendCell(new ConfigCellTextCheck(NaConfig.INSTANCE.getRegexFiltersEnableInChats()));
private final AbstractConfigCell disableChatActionRow = cellGroup.appendCell(new ConfigCellTextCheck(NekoConfig.disableChatAction));
private final AbstractConfigCell disableChoosingStickerRow = cellGroup.appendCell(new ConfigCellTextCheck(NekoConfig.disableChoosingSticker));
+ private final AbstractConfigCell openUrlOutBotWebViewRegexRow = cellGroup.appendCell(new ConfigCellTextInput(null, NaConfig.INSTANCE.getOpenUrlOutBotWebViewRegex(),
+ null, null,
+ (input) -> {
+ try {
+ Pattern.compile(input, Pattern.MULTILINE | Pattern.CASE_INSENSITIVE);
+ return input;
+ } catch (Exception ignored) {
+ return "";
+ }
+ }));
private final AbstractConfigCell divider1 = cellGroup.appendCell(new ConfigCellDivider());
// Story
diff --git a/TMessagesProj/src/main/kotlin/xyz/nextalone/nagram/NaConfig.kt b/TMessagesProj/src/main/kotlin/xyz/nextalone/nagram/NaConfig.kt
index 23e6e9494c..1dae2d16d0 100644
--- a/TMessagesProj/src/main/kotlin/xyz/nextalone/nagram/NaConfig.kt
+++ b/TMessagesProj/src/main/kotlin/xyz/nextalone/nagram/NaConfig.kt
@@ -638,6 +638,12 @@ object NaConfig {
ConfigItem.configTypeInt,
0
)
+ val openUrlOutBotWebViewRegex =
+ addConfig(
+ "OpenUrlOutBotWebViewRegex",
+ ConfigItem.configTypeString,
+ ""
+ )
private fun addConfig(
k: String,
diff --git a/TMessagesProj/src/main/res/values-zh-rCN/strings_na.xml b/TMessagesProj/src/main/res/values-zh-rCN/strings_na.xml
index b1e4506a15..7a8dfbcc1b 100644
--- a/TMessagesProj/src/main/res/values-zh-rCN/strings_na.xml
+++ b/TMessagesProj/src/main/res/values-zh-rCN/strings_na.xml
@@ -158,4 +158,5 @@
点击消息时间显示详细信息
在频道点击标签默认搜索页面
在其他对话点击标签默认搜索页面
+ 指定 URL Regex 跳出 bot webview
diff --git a/TMessagesProj/src/main/res/values/strings_na.xml b/TMessagesProj/src/main/res/values/strings_na.xml
index 75e83dff0e..ff20d0c523 100644
--- a/TMessagesProj/src/main/res/values/strings_na.xml
+++ b/TMessagesProj/src/main/res/values/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