diff options
| author | Adam Soltys <[email protected]> | 2026-03-09 08:30:41 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2026-03-09 08:30:41 -0700 |
| commit | b83110a8dccb9615ff56787e4358323151ffc453 (patch) | |
| tree | db1b938d208b767b06dac33456e9a189a83f05f4 | |
| parent | c7f142e1bd9fcb3dcd9552fb2a1dc7958054965f (diff) | |
| download | coinos-ui-b83110a8dccb9615ff56787e4358323151ffc453.tar.gz coinos-ui-b83110a8dccb9615ff56787e4358323151ffc453.zip | |
use JavascriptInterface for HCE instead of Capacitor plugin
| -rw-r--r-- | android/app/src/main/java/io/coinos/MainActivity.java | 20 | ||||
| -rw-r--r-- | src/routes/(app)/fund/[id]/+page.svelte | 6 |
2 files changed, 23 insertions, 3 deletions
diff --git a/android/app/src/main/java/io/coinos/MainActivity.java b/android/app/src/main/java/io/coinos/MainActivity.java index 3a5654a3..83b731a3 100644 --- a/android/app/src/main/java/io/coinos/MainActivity.java +++ b/android/app/src/main/java/io/coinos/MainActivity.java @@ -5,6 +5,8 @@ import android.view.View; import android.view.WindowInsets; import android.view.WindowManager; import androidx.core.view.ViewCompat; +import androidx.webkit.WebSettingsCompat; +import androidx.webkit.WebViewFeature; import com.getcapacitor.BridgeActivity; import com.getcapacitor.Bridge; @@ -25,6 +27,8 @@ import java.util.Arrays; import io.coinos.nfcwriter.NfcWriterPlugin; import io.coinos.hce.HcePlugin; +import io.coinos.hce.HceApduService; +import android.webkit.JavascriptInterface; public class MainActivity extends BridgeActivity { private NfcAdapter nfcAdapter; @@ -52,6 +56,22 @@ public class MainActivity extends BridgeActivity { }); } + // Enable WebAuthn/passkey support in WebView + if (WebViewFeature.isFeatureSupported(WebViewFeature.WEB_AUTHENTICATION)) { + WebSettingsCompat.setWebAuthenticationSupport( + webView.getSettings(), + WebSettingsCompat.WEB_AUTHENTICATION_SUPPORT_FOR_APP + ); + } + + // Expose HCE control to JavaScript + webView.addJavascriptInterface(new Object() { + @JavascriptInterface + public void setUrl(String url) { HceApduService.setUrl(url); } + @JavascriptInterface + public String getUrl() { return HceApduService.getUrl(); } + }, "CoinosHce"); + // Other app setup CookieManager cookieManager = CookieManager.getInstance(); cookieManager.setAcceptCookie(true); diff --git a/src/routes/(app)/fund/[id]/+page.svelte b/src/routes/(app)/fund/[id]/+page.svelte index fc3e9bc8..8bd8489a 100644 --- a/src/routes/(app)/fund/[id]/+page.svelte +++ b/src/routes/(app)/fund/[id]/+page.svelte @@ -16,7 +16,7 @@ import { copy, sats, loc, post } from "$lib/utils"; import { loginRedirect } from "$lib/store"; - const Hce = (window as any).Capacitor?.registerPlugin?.("Hce"); + const Hce = (window as any).CoinosHce; let { data }: any = $props(); @@ -43,14 +43,14 @@ function enableHce() { if (!Hce) return; const url = `${$page.url.origin}/api/lnurlw/${id}`; - Hce.setUrl({ url }); + Hce.setUrl(url); hceActive = true; toast.push("NFC armed — ready to tap"); } function disableHce() { if (!Hce) return; - Hce.setUrl({ url: "https://coinos.io" }); + Hce.setUrl("https://coinos.io"); hceActive = false; } |
