From 053c8992b6ff0cfe6eb390951b0b59f3f836fad9 Mon Sep 17 00:00:00 2001 From: Carl Poole Date: Fri, 3 Jun 2022 17:04:31 -0500 Subject: [PATCH 1/4] further android changes for federated capacitor for live-updates --- .../java/com/getcapacitor/ProcessedRoute.java | 6 ++++++ .../java/com/getcapacitor/RouteProcessor.java | 3 ++- .../java/com/getcapacitor/WebViewLocalServer.java | 15 +++++++++++---- cli/src/declarations.ts | 7 ++++++- 4 files changed, 25 insertions(+), 6 deletions(-) create mode 100644 android/capacitor/src/main/java/com/getcapacitor/ProcessedRoute.java diff --git a/android/capacitor/src/main/java/com/getcapacitor/ProcessedRoute.java b/android/capacitor/src/main/java/com/getcapacitor/ProcessedRoute.java new file mode 100644 index 0000000000..25bf38e603 --- /dev/null +++ b/android/capacitor/src/main/java/com/getcapacitor/ProcessedRoute.java @@ -0,0 +1,6 @@ +package com.getcapacitor; + +public class ProcessedRoute { + public String path; + public boolean isAsset; +} diff --git a/android/capacitor/src/main/java/com/getcapacitor/RouteProcessor.java b/android/capacitor/src/main/java/com/getcapacitor/RouteProcessor.java index 077c20c6a7..edf9a94bad 100644 --- a/android/capacitor/src/main/java/com/getcapacitor/RouteProcessor.java +++ b/android/capacitor/src/main/java/com/getcapacitor/RouteProcessor.java @@ -4,5 +4,6 @@ * An interface used in the processing of routes */ public interface RouteProcessor { - String process(String path); + ProcessedRoute process(String basePath, String path); } + diff --git a/android/capacitor/src/main/java/com/getcapacitor/WebViewLocalServer.java b/android/capacitor/src/main/java/com/getcapacitor/WebViewLocalServer.java index 36ddb6bb37..de88088222 100755 --- a/android/capacitor/src/main/java/com/getcapacitor/WebViewLocalServer.java +++ b/android/capacitor/src/main/java/com/getcapacitor/WebViewLocalServer.java @@ -256,7 +256,9 @@ private WebResourceResponse handleLocalRequest(WebResourceRequest request, PathH try { String startPath = this.basePath + "/index.html"; if (bridge.getRouteProcessor() != null) { - startPath = this.basePath + bridge.getRouteProcessor().process("/index.html"); + ProcessedRoute processedRoute = bridge.getRouteProcessor().process(this.basePath, "/index.html"); + startPath = processedRoute.path; + isAsset = processedRoute.isAsset; } if (isAsset) { @@ -474,16 +476,21 @@ public InputStream handle(Uri url) { // Pass path to routeProcessor if present RouteProcessor routeProcessor = bridge.getRouteProcessor(); if (routeProcessor != null) { - path = bridge.getRouteProcessor().process(path); + ProcessedRoute processedRoute = bridge.getRouteProcessor().process("", path); + path = processedRoute.path; + isAsset = processedRoute.isAsset; } try { if (path.startsWith(capacitorContentStart)) { stream = protocolHandler.openContentUrl(url); - } else if (path.startsWith(capacitorFileStart) || !isAsset) { - if (!path.startsWith(capacitorFileStart)) { + } else if (path.startsWith(capacitorFileStart)) { + stream = protocolHandler.openFile(path); + } else if (!isAsset) { + if (routeProcessor == null) { path = basePath + url.getPath(); } + stream = protocolHandler.openFile(path); } else { stream = protocolHandler.openAsset(assetPath + path); diff --git a/cli/src/declarations.ts b/cli/src/declarations.ts index 0c12bbb761..90a1d1d419 100644 --- a/cli/src/declarations.ts +++ b/cli/src/declarations.ts @@ -485,7 +485,12 @@ export interface CapacitorConfig { export interface Portal { name: string; webDir: string; - appId?: string; + liveUpdateConfig?: { + appId: string; + channel: string; + autoUpdateMethod: "none" | "background"; + maxVersions?: number; + }; } export interface PluginsConfig { From 9998d00324586e75d4d40da7dbac7a8596942ed6 Mon Sep 17 00:00:00 2001 From: Carl Poole Date: Mon, 6 Jun 2022 15:17:35 -0500 Subject: [PATCH 2/4] cleaned new class --- .../java/com/getcapacitor/ProcessedRoute.java | 26 +++++++++++++++++-- .../com/getcapacitor/WebViewLocalServer.java | 8 +++--- 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/android/capacitor/src/main/java/com/getcapacitor/ProcessedRoute.java b/android/capacitor/src/main/java/com/getcapacitor/ProcessedRoute.java index 25bf38e603..cf28e009c7 100644 --- a/android/capacitor/src/main/java/com/getcapacitor/ProcessedRoute.java +++ b/android/capacitor/src/main/java/com/getcapacitor/ProcessedRoute.java @@ -1,6 +1,28 @@ package com.getcapacitor; +/** + * An data class used in conjunction with RouteProcessor. + * + * @see com.getcapacitor.RouteProcessor + */ public class ProcessedRoute { - public String path; - public boolean isAsset; + + private String path; + private boolean isAsset; + + public String getPath() { + return path; + } + + public void setPath(String path) { + this.path = path; + } + + public boolean isAsset() { + return isAsset; + } + + public void setAsset(boolean asset) { + isAsset = asset; + } } diff --git a/android/capacitor/src/main/java/com/getcapacitor/WebViewLocalServer.java b/android/capacitor/src/main/java/com/getcapacitor/WebViewLocalServer.java index de88088222..c891016b6c 100755 --- a/android/capacitor/src/main/java/com/getcapacitor/WebViewLocalServer.java +++ b/android/capacitor/src/main/java/com/getcapacitor/WebViewLocalServer.java @@ -257,8 +257,8 @@ private WebResourceResponse handleLocalRequest(WebResourceRequest request, PathH String startPath = this.basePath + "/index.html"; if (bridge.getRouteProcessor() != null) { ProcessedRoute processedRoute = bridge.getRouteProcessor().process(this.basePath, "/index.html"); - startPath = processedRoute.path; - isAsset = processedRoute.isAsset; + startPath = processedRoute.getPath(); + isAsset = processedRoute.isAsset(); } if (isAsset) { @@ -477,8 +477,8 @@ public InputStream handle(Uri url) { RouteProcessor routeProcessor = bridge.getRouteProcessor(); if (routeProcessor != null) { ProcessedRoute processedRoute = bridge.getRouteProcessor().process("", path); - path = processedRoute.path; - isAsset = processedRoute.isAsset; + path = processedRoute.getPath(); + isAsset = processedRoute.isAsset(); } try { From 923e9b3244e262a6ad278535ee1ab4db1d31363a Mon Sep 17 00:00:00 2001 From: Carl Poole Date: Mon, 6 Jun 2022 15:23:13 -0500 Subject: [PATCH 3/4] match type definition with plugin --- cli/src/declarations.ts | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/cli/src/declarations.ts b/cli/src/declarations.ts index 90a1d1d419..9d79b2c317 100644 --- a/cli/src/declarations.ts +++ b/cli/src/declarations.ts @@ -485,14 +485,18 @@ export interface CapacitorConfig { export interface Portal { name: string; webDir: string; - liveUpdateConfig?: { - appId: string; - channel: string; - autoUpdateMethod: "none" | "background"; - maxVersions?: number; - }; + liveUpdateConfig?: LiveUpdateConfig; +} + +export interface LiveUpdateConfig { + appId: string; + channel: string; + autoUpdateMethod: AutoUpdateMethod; + maxVersions?: number; } +export type AutoUpdateMethod = 'none' | 'background'; + export interface PluginsConfig { /** * Plugin configuration by class name. From 7730c53c85360d1057a2b8fbd3b7899ef3d53669 Mon Sep 17 00:00:00 2001 From: Carl Poole Date: Mon, 6 Jun 2022 15:27:11 -0500 Subject: [PATCH 4/4] android lint fixes --- .../src/main/java/com/getcapacitor/RouteProcessor.java | 1 - .../src/main/java/com/getcapacitor/WebViewLocalServer.java | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/android/capacitor/src/main/java/com/getcapacitor/RouteProcessor.java b/android/capacitor/src/main/java/com/getcapacitor/RouteProcessor.java index edf9a94bad..670c8bc6bd 100644 --- a/android/capacitor/src/main/java/com/getcapacitor/RouteProcessor.java +++ b/android/capacitor/src/main/java/com/getcapacitor/RouteProcessor.java @@ -6,4 +6,3 @@ public interface RouteProcessor { ProcessedRoute process(String basePath, String path); } - diff --git a/android/capacitor/src/main/java/com/getcapacitor/WebViewLocalServer.java b/android/capacitor/src/main/java/com/getcapacitor/WebViewLocalServer.java index c891016b6c..fb363bcafa 100755 --- a/android/capacitor/src/main/java/com/getcapacitor/WebViewLocalServer.java +++ b/android/capacitor/src/main/java/com/getcapacitor/WebViewLocalServer.java @@ -257,7 +257,7 @@ private WebResourceResponse handleLocalRequest(WebResourceRequest request, PathH String startPath = this.basePath + "/index.html"; if (bridge.getRouteProcessor() != null) { ProcessedRoute processedRoute = bridge.getRouteProcessor().process(this.basePath, "/index.html"); - startPath = processedRoute.getPath(); + startPath = processedRoute.getPath(); isAsset = processedRoute.isAsset(); } @@ -477,7 +477,7 @@ public InputStream handle(Uri url) { RouteProcessor routeProcessor = bridge.getRouteProcessor(); if (routeProcessor != null) { ProcessedRoute processedRoute = bridge.getRouteProcessor().process("", path); - path = processedRoute.getPath(); + path = processedRoute.getPath(); isAsset = processedRoute.isAsset(); }