summaryrefslogtreecommitdiff
path: root/packages/taler-wallet-webextension/src/platform/chrome.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/taler-wallet-webextension/src/platform/chrome.ts')
-rw-r--r--packages/taler-wallet-webextension/src/platform/chrome.ts19
1 files changed, 18 insertions, 1 deletions
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;
}