aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-wallet-webextension/src/platform
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2022-04-28 13:26:29 -0300
committerSebastian <sebasjm@gmail.com>2022-04-28 13:26:29 -0300
commitb239ae1029eef5a68bf98d21e81acd317abb0673 (patch)
treef0e7657a35e92a7a4f75222ff6aa247e578e9af2 /packages/taler-wallet-webextension/src/platform
parent451c9884dcd20e7e886ed32e5ef93913d29e36ff (diff)
downloadwallet-core-b239ae1029eef5a68bf98d21e81acd317abb0673.tar.xz
keep alive manifest v3
Diffstat (limited to 'packages/taler-wallet-webextension/src/platform')
-rw-r--r--packages/taler-wallet-webextension/src/platform/api.ts4
-rw-r--r--packages/taler-wallet-webextension/src/platform/chrome.ts19
-rw-r--r--packages/taler-wallet-webextension/src/platform/dev.ts1
3 files changed, 23 insertions, 1 deletions
diff --git a/packages/taler-wallet-webextension/src/platform/api.ts b/packages/taler-wallet-webextension/src/platform/api.ts
index cee628a6f..4713d5d00 100644
--- a/packages/taler-wallet-webextension/src/platform/api.ts
+++ b/packages/taler-wallet-webextension/src/platform/api.ts
@@ -57,6 +57,10 @@ export interface WalletVersion {
*/
export interface PlatformAPI {
/**
+ * Garantee that the
+ */
+ keepAlive(cb: VoidFunction): void;
+ /**
* FIXME: should not be needed
*
* check if the platform is firefox
diff --git a/packages/taler-wallet-webextension/src/platform/chrome.ts b/packages/taler-wallet-webextension/src/platform/chrome.ts
index d295168bf..900470dff 100644
--- a/packages/taler-wallet-webextension/src/platform/chrome.ts
+++ b/packages/taler-wallet-webextension/src/platform/chrome.ts
@@ -15,7 +15,7 @@
TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-import { classifyTalerUri, CoreApiResponse, TalerUriType } from "@gnu-taler/taler-util";
+import { classifyTalerUri, CoreApiResponse, Logger, TalerUriType } from "@gnu-taler/taler-util";
import { CrossBrowserPermissionsApi, MessageFromBackend, Permissions, PlatformAPI } from "./api.js";
const api: PlatformAPI = {
@@ -38,10 +38,27 @@ const api: PlatformAPI = {
sendMessageToWalletBackground,
useServiceWorkerAsBackgroundProcess,
containsTalerHeaderListener,
+ keepAlive,
}
export default api;
+const logger = new Logger("chrome.ts");
+
+function keepAlive(callback: any): void {
+ if (chrome.runtime && chrome.runtime.getManifest().manifest_version === 3) {
+ chrome.alarms.create("wallet-worker", { periodInMinutes: 1 })
+
+ chrome.alarms.onAlarm.addListener((a) => {
+ logger.trace(`kee p alive alarm: ${a.name}`)
+ callback()
+ })
+ } else {
+ callback();
+ }
+
+}
+
function isFirefox(): boolean {
return false;
}
diff --git a/packages/taler-wallet-webextension/src/platform/dev.ts b/packages/taler-wallet-webextension/src/platform/dev.ts
index e05ff29e9..59e6738c5 100644
--- a/packages/taler-wallet-webextension/src/platform/dev.ts
+++ b/packages/taler-wallet-webextension/src/platform/dev.ts
@@ -21,6 +21,7 @@ const frames = ["popup", "wallet"]
const api: PlatformAPI = ({
isFirefox: () => false,
+ keepAlive: (cb: VoidFunction) => cb(),
findTalerUriInActiveTab: async () => undefined,
containsTalerHeaderListener: () => { return true },
getPermissionsApi: () => ({