fix: use window.location.href for nostrsigner: URLs instead of window.open(_system)

window.open(_system) was stripping query parameters from the nostrsigner:
URL, causing Amber to receive a request with no type parameter and
rejecting it as malformed.

window.location.href works correctly in Capacitor WebView — Android
intercepts nostrsigner: scheme via intent-filter with full URL intact.

Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
This commit is contained in:
shakespeare.diy 2026-06-18 23:02:33 +07:00
parent 55856e2935
commit fdebfc0d37

View file

@ -290,18 +290,14 @@ function buildCallbackUrl(): string {
/**
* Navigate to an Amber nostrsigner: URL.
* In Capacitor WebViews, window.location.href causes a "malformed request"
* error because the WebView tries to navigate instead of firing an intent.
* Use window.open() with _system target to hand off to Android properly.
*
* Use window.location.href for all platforms — Android handles the
* nostrsigner: custom scheme via intent-filter regardless of whether
* we're in a WebView or browser. window.open(_system) was stripping
* query parameters causing Amber to receive a malformed request.
*/
function openAmberUrl(url: string): void {
// Capacitor / Android WebView: use _system to fire the intent
const isCapacitor = !!(window as unknown as { Capacitor?: { isNativePlatform?: () => boolean } }).Capacitor?.isNativePlatform?.();
if (isCapacitor) {
window.open(url, '_system');
} else {
window.location.href = url;
}
window.location.href = url;
}
/**