From e399b55877b873db5e2d8c460838c80f78b0716a Mon Sep 17 00:00:00 2001 From: Wing <44992537+wingio@users.noreply.github.com> Date: Tue, 13 Dec 2022 15:26:41 -0500 Subject: [PATCH] Add deeplink support (#3) Co-authored-by: wingio --- .gitignore | 7 +--- .idea/.gitignore | 3 -- .idea/.name | 1 - .idea/compiler.xml | 6 ---- .idea/discord.xml | 7 ---- .idea/gradle.xml | 20 ------------ .idea/misc.xml | 10 ------ .idea/vcs.xml | 6 ---- app/src/main/AndroidManifest.xml | 14 +++++++- .../dev/vendicated/vencord/MainActivity.java | 32 ++++++++++++++++++- 10 files changed, 45 insertions(+), 61 deletions(-) delete mode 100644 .idea/.gitignore delete mode 100644 .idea/.name delete mode 100644 .idea/compiler.xml delete mode 100644 .idea/discord.xml delete mode 100644 .idea/gradle.xml delete mode 100644 .idea/misc.xml delete mode 100644 .idea/vcs.xml diff --git a/.gitignore b/.gitignore index aa724b7..878c2cd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,12 +1,7 @@ *.iml .gradle /local.properties -/.idea/caches -/.idea/libraries -/.idea/modules.xml -/.idea/workspace.xml -/.idea/navEditor.xml -/.idea/assetWizardSettings.xml +.idea .DS_Store /build /captures diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 26d3352..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml diff --git a/.idea/.name b/.idea/.name deleted file mode 100644 index 3951b24..0000000 --- a/.idea/.name +++ /dev/null @@ -1 +0,0 @@ -VencordMobile \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml deleted file mode 100644 index fb7f4a8..0000000 --- a/.idea/compiler.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/discord.xml b/.idea/discord.xml deleted file mode 100644 index 30bab2a..0000000 --- a/.idea/discord.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml deleted file mode 100644 index a0de2a1..0000000 --- a/.idea/gradle.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 5c9f89f..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 94a25f7..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e852452..eaf0b26 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -15,11 +15,23 @@ + android:configChanges="orientation|keyboardHidden|screenSize|layoutDirection" + android:launchMode="singleTask"> + + + + + + + + + + + diff --git a/app/src/main/java/dev/vendicated/vencord/MainActivity.java b/app/src/main/java/dev/vendicated/vencord/MainActivity.java index ece5a12..480e838 100644 --- a/app/src/main/java/dev/vendicated/vencord/MainActivity.java +++ b/app/src/main/java/dev/vendicated/vencord/MainActivity.java @@ -11,9 +11,11 @@ import android.webkit.ValueCallback; import android.webkit.WebView; import java.io.IOException; +import java.util.Objects; public class MainActivity extends Activity { public static final int FILECHOOSER_RESULTCODE = 8485; + private boolean wvInitialized = false; private WebView wv; public ValueCallback filePathCallback; @@ -49,7 +51,15 @@ public class MainActivity extends Activity { return; } - wv.loadUrl("https://discord.com/app"); + Intent intent = getIntent(); + if (Objects.equals(intent.getAction(), Intent.ACTION_VIEW)) { + Uri data = intent.getData(); + if (data != null) handleUrl(intent.getData()); + } else { + wv.loadUrl("https://discord.com/app"); + } + + wvInitialized = true; } @Override @@ -98,4 +108,24 @@ public class MainActivity extends Activity { .build() ); } + + public void handleUrl(Uri url) { + if (url != null) { + if (!url.getAuthority().contains("discord")) return; + if (!wvInitialized) { + wv.loadUrl(url.toString()); + } else { + wv.evaluateJavascript("Vencord.Webpack.Common.NavigationRouter.transitionTo(\"" + url.getPath() + "\")", (result) -> { + }); + } + } + } + + @Override + protected void onNewIntent(Intent intent) { + super.onNewIntent(intent); + Uri data = intent.getData(); + if (data != null) handleUrl(data); + } + }