split foreground and background api
This commit is contained in:
parent
f4e1e8e6e7
commit
590cda1dd3
@ -23,7 +23,7 @@
|
||||
/**
|
||||
* Imports.
|
||||
*/
|
||||
import { platform, setupPlatform } from "./platform/api.js";
|
||||
import { platform, setupPlatform } from "./platform/background.js";
|
||||
import devAPI from "./platform/dev.js";
|
||||
import { wxMain } from "./wxBackend.js";
|
||||
|
||||
|
@ -23,7 +23,7 @@
|
||||
/**
|
||||
* Imports.
|
||||
*/
|
||||
import { platform, setupPlatform } from "./platform/api.js";
|
||||
import { platform, setupPlatform } from "./platform/background.js";
|
||||
import chromeAPI from "./platform/chrome.js";
|
||||
import firefoxAPI from "./platform/firefox.js";
|
||||
import { wxMain } from "./wxBackend.js";
|
||||
|
@ -14,7 +14,7 @@
|
||||
GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
|
||||
*/
|
||||
|
||||
import { platform } from "./platform/api.js";
|
||||
import { platform } from "./platform/background.js";
|
||||
|
||||
/**
|
||||
* Polyfill for requestAnimationFrame, which
|
||||
|
@ -21,7 +21,7 @@
|
||||
|
||||
import { createContext, h, VNode } from "preact";
|
||||
import { useContext } from "preact/hooks";
|
||||
import { platform } from "../platform/api.js";
|
||||
import { platform } from "../platform/foreground.js";
|
||||
|
||||
interface Type {
|
||||
findTalerUriInActiveTab: () => Promise<string | undefined>;
|
||||
|
@ -18,7 +18,7 @@ import { TalerError } from "@gnu-taler/taler-wallet-core";
|
||||
import { useEffect, useState } from "preact/hooks";
|
||||
import { useBackendContext } from "../context/backend.js";
|
||||
import { ToggleHandler } from "../mui/handlers.js";
|
||||
import { platform } from "../platform/api.js";
|
||||
import { platform } from "../platform/foreground.js";
|
||||
|
||||
export function useAutoOpenPermissions(): ToggleHandler {
|
||||
const api = useBackendContext();
|
||||
|
@ -18,7 +18,7 @@ import { TalerError } from "@gnu-taler/taler-wallet-core";
|
||||
import { useEffect, useState } from "preact/hooks";
|
||||
import { useBackendContext } from "../context/backend.js";
|
||||
import { ToggleHandler } from "../mui/handlers.js";
|
||||
import { platform } from "../platform/api.js";
|
||||
import { platform } from "../platform/foreground.js";
|
||||
|
||||
export function useClipboardPermissions(): ToggleHandler {
|
||||
const [enabled, setEnabled] = useState(false);
|
||||
|
@ -85,7 +85,7 @@ export interface WalletWebExVersion {
|
||||
* Compatibility helpers needed for browsers that don't implement
|
||||
* WebExtension APIs consistently.
|
||||
*/
|
||||
export interface PlatformAPI {
|
||||
export interface BackgroundPlatformAPI {
|
||||
/**
|
||||
* Guarantee that the service workers don't die
|
||||
*/
|
||||
@ -97,61 +97,35 @@ export interface PlatformAPI {
|
||||
*/
|
||||
isFirefox(): boolean;
|
||||
|
||||
/**
|
||||
* Permission API for checking and add a listener
|
||||
*/
|
||||
getPermissionsApi(): CrossBrowserPermissionsApi;
|
||||
registerOnInstalled(callback: () => void): void;
|
||||
|
||||
/**
|
||||
* Backend API
|
||||
*
|
||||
* Check if background process run as service worker. This is used from the
|
||||
* wallet use different http api and crypto worker.
|
||||
*/
|
||||
useServiceWorkerAsBackgroundProcess(): boolean;
|
||||
/**
|
||||
*
|
||||
* Open a page into the wallet UI
|
||||
* @param page
|
||||
*/
|
||||
openWalletPage(page: string): void;
|
||||
/**
|
||||
*
|
||||
* Register a callback to be called when the wallet is ready to start
|
||||
* @param callback
|
||||
*/
|
||||
notifyWhenAppIsReady(callback: () => void): void;
|
||||
|
||||
/**
|
||||
* Popup API
|
||||
*
|
||||
* Used when an TalerURI is found and open up from the popup UI.
|
||||
* Closes the popup and open the URI into the wallet UI.
|
||||
*
|
||||
* @param talerUri
|
||||
*/
|
||||
openWalletURIFromPopup(talerUri: string): void;
|
||||
|
||||
/**
|
||||
* Backend API
|
||||
*
|
||||
* Open a page into the wallet UI
|
||||
* @param page
|
||||
*/
|
||||
openWalletPage(page: string): void;
|
||||
|
||||
/**
|
||||
* Popup API
|
||||
*
|
||||
* Open a page into the wallet UI and closed the popup
|
||||
* @param page
|
||||
*/
|
||||
openWalletPageFromPopup(page: string): void;
|
||||
|
||||
/**
|
||||
* Backend API
|
||||
*
|
||||
* When a tab has been detected to have a Taler action the background process
|
||||
* can use this function to redirect the tab to the wallet UI
|
||||
*
|
||||
* @param tabId
|
||||
* @param page
|
||||
*/
|
||||
redirectTabToWalletPage(tabId: number, page: string): void;
|
||||
|
||||
/**
|
||||
* Get the wallet version from manifest
|
||||
*/
|
||||
getWalletWebExVersion(): WalletWebExVersion;
|
||||
|
||||
/**
|
||||
* Frontend API
|
||||
*/
|
||||
containsTalerHeaderListener(): boolean;
|
||||
/**
|
||||
* Backend API
|
||||
*/
|
||||
@ -166,22 +140,75 @@ export interface PlatformAPI {
|
||||
registerTalerHeaderListener(
|
||||
onHeader: (tabId: number, url: string) => void,
|
||||
): void;
|
||||
|
||||
/**
|
||||
* Frontend API
|
||||
* Permission API for checking and add a listener
|
||||
*/
|
||||
containsTalerHeaderListener(): boolean;
|
||||
getPermissionsApi(): CrossBrowserPermissionsApi;
|
||||
/**
|
||||
* Backend API
|
||||
*/
|
||||
registerOnInstalled(callback: () => void): void;
|
||||
* Used by the wallet backend to send notification about new information
|
||||
* @param message
|
||||
*/
|
||||
sendMessageToAllChannels(message: MessageFromBackend): void;
|
||||
|
||||
/**
|
||||
* Backend API
|
||||
*
|
||||
* Check if background process run as service worker. This is used from the
|
||||
* wallet use different http api and crypto worker.
|
||||
* When a tab has been detected to have a Taler action the background process
|
||||
* can use this function to redirect the tab to the wallet UI
|
||||
*
|
||||
* @param tabId
|
||||
* @param page
|
||||
*/
|
||||
useServiceWorkerAsBackgroundProcess(): boolean;
|
||||
redirectTabToWalletPage(tabId: number, page: string): void;
|
||||
/**
|
||||
* Use by the wallet backend to receive operations from frontend (popup & wallet)
|
||||
* and send a response back.
|
||||
*
|
||||
* @param onNewMessage
|
||||
*/
|
||||
listenToAllChannels(
|
||||
notifyNewMessage: <Op extends WalletOperations | BackgroundOperations>(
|
||||
message: MessageFromFrontend<Op> & { id: string },
|
||||
) => Promise<MessageResponse>,
|
||||
): void;
|
||||
}
|
||||
export interface ForegroundPlatformAPI {
|
||||
/**
|
||||
* FIXME: should not be needed
|
||||
*
|
||||
* check if the platform is firefox
|
||||
*/
|
||||
isFirefox(): boolean;
|
||||
|
||||
/**
|
||||
* Permission API for checking and add a listener
|
||||
*/
|
||||
getPermissionsApi(): CrossBrowserPermissionsApi;
|
||||
|
||||
/**
|
||||
* Popup API
|
||||
*
|
||||
* Used when an TalerURI is found and open up from the popup UI.
|
||||
* Closes the popup and open the URI into the wallet UI.
|
||||
*
|
||||
* @param talerUri
|
||||
*/
|
||||
openWalletURIFromPopup(talerUri: string): void;
|
||||
|
||||
|
||||
/**
|
||||
* Popup API
|
||||
*
|
||||
* Open a page into the wallet UI and closed the popup
|
||||
* @param page
|
||||
*/
|
||||
openWalletPageFromPopup(page: string): void;
|
||||
|
||||
/**
|
||||
* Get the wallet version from manifest
|
||||
*/
|
||||
getWalletWebExVersion(): WalletWebExVersion;
|
||||
|
||||
/**
|
||||
* Popup API
|
||||
@ -222,26 +249,4 @@ export interface PlatformAPI {
|
||||
listener: (message: MessageFromBackend) => void,
|
||||
): () => void;
|
||||
|
||||
/**
|
||||
* Use by the wallet backend to receive operations from frontend (popup & wallet)
|
||||
* and send a response back.
|
||||
*
|
||||
* @param onNewMessage
|
||||
*/
|
||||
listenToAllChannels(
|
||||
notifyNewMessage: <Op extends WalletOperations | BackgroundOperations>(
|
||||
message: MessageFromFrontend<Op> & { id: string },
|
||||
) => Promise<MessageResponse>,
|
||||
): void;
|
||||
|
||||
/**
|
||||
* Used by the wallet backend to send notification about new information
|
||||
* @param message
|
||||
*/
|
||||
sendMessageToAllChannels(message: MessageFromBackend): void;
|
||||
}
|
||||
|
||||
export let platform: PlatformAPI = undefined as any;
|
||||
export function setupPlatform(impl: PlatformAPI): void {
|
||||
platform = impl;
|
||||
}
|
||||
|
@ -0,0 +1,22 @@
|
||||
/*
|
||||
This file is part of GNU Taler
|
||||
(C) 2022 Taler Systems S.A.
|
||||
|
||||
GNU Taler is free software; you can redistribute it and/or modify it under the
|
||||
terms of the GNU General Public License as published by the Free Software
|
||||
Foundation; either version 3, or (at your option) any later version.
|
||||
|
||||
GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along with
|
||||
GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
|
||||
*/
|
||||
|
||||
import { BackgroundPlatformAPI } from "./api.js";
|
||||
|
||||
export let platform: BackgroundPlatformAPI = undefined as any;
|
||||
export function setupPlatform(impl: BackgroundPlatformAPI): void {
|
||||
platform = impl;
|
||||
}
|
@ -15,23 +15,19 @@
|
||||
*/
|
||||
|
||||
import {
|
||||
classifyTalerUri,
|
||||
CoreApiResponse,
|
||||
Logger,
|
||||
TalerUriType,
|
||||
classifyTalerUri, Logger,
|
||||
TalerUriType
|
||||
} from "@gnu-taler/taler-util";
|
||||
import { WalletOperations } from "@gnu-taler/taler-wallet-core";
|
||||
import { BackgroundOperations } from "../wxApi.js";
|
||||
import {
|
||||
CrossBrowserPermissionsApi,
|
||||
MessageFromBackend,
|
||||
BackgroundPlatformAPI, CrossBrowserPermissionsApi, ForegroundPlatformAPI, MessageFromBackend,
|
||||
MessageFromFrontend,
|
||||
MessageResponse,
|
||||
Permissions,
|
||||
PlatformAPI,
|
||||
Permissions
|
||||
} from "./api.js";
|
||||
|
||||
const api: PlatformAPI = {
|
||||
const api: BackgroundPlatformAPI & ForegroundPlatformAPI = {
|
||||
isFirefox,
|
||||
findTalerUriInActiveTab,
|
||||
findTalerUriInClipboard,
|
||||
@ -310,16 +306,28 @@ function openWalletPageFromPopup(page: string): void {
|
||||
});
|
||||
}
|
||||
|
||||
let i = 0;
|
||||
|
||||
let nextMessageIndex = 0;
|
||||
|
||||
/**
|
||||
* To be used by the foreground
|
||||
* @param message
|
||||
* @returns
|
||||
*/
|
||||
async function sendMessageToBackground<
|
||||
Op extends WalletOperations | BackgroundOperations,
|
||||
>(message: MessageFromFrontend<Op>): Promise<MessageResponse> {
|
||||
const messageWithId = { ...message, id: `id_${i++ % 1000}` };
|
||||
const messageWithId = { ...message, id: `id_${nextMessageIndex++ % 1000}` };
|
||||
|
||||
return new Promise<any>((resolve, reject) => {
|
||||
logger.trace("send operation to the wallet background", message);
|
||||
let timedout = false
|
||||
setTimeout(() => {
|
||||
timedout = true
|
||||
reject("timedout")
|
||||
}, 2000);
|
||||
chrome.runtime.sendMessage(messageWithId, (backgroundResponse) => {
|
||||
if (timedout) return false
|
||||
if (chrome.runtime.lastError) {
|
||||
reject(chrome.runtime.lastError.message);
|
||||
} else {
|
||||
@ -331,6 +339,9 @@ async function sendMessageToBackground<
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* To be used by the foreground
|
||||
*/
|
||||
let notificationPort: chrome.runtime.Port | undefined;
|
||||
function listenToWalletBackground(listener: (m: any) => void): () => void {
|
||||
if (notificationPort === undefined) {
|
||||
@ -347,6 +358,7 @@ function listenToWalletBackground(listener: (m: any) => void): () => void {
|
||||
|
||||
const allPorts: chrome.runtime.Port[] = [];
|
||||
|
||||
|
||||
function sendMessageToAllChannels(message: MessageFromBackend): void {
|
||||
for (const notif of allPorts) {
|
||||
// const message: MessageFromBackend = { type: msg.type };
|
||||
@ -566,26 +578,26 @@ function setAlertedIcon(): void {
|
||||
|
||||
interface OffscreenCanvasRenderingContext2D
|
||||
extends CanvasState,
|
||||
CanvasTransform,
|
||||
CanvasCompositing,
|
||||
CanvasImageSmoothing,
|
||||
CanvasFillStrokeStyles,
|
||||
CanvasShadowStyles,
|
||||
CanvasFilters,
|
||||
CanvasRect,
|
||||
CanvasDrawPath,
|
||||
CanvasUserInterface,
|
||||
CanvasText,
|
||||
CanvasDrawImage,
|
||||
CanvasImageData,
|
||||
CanvasPathDrawingStyles,
|
||||
CanvasTextDrawingStyles,
|
||||
CanvasPath {
|
||||
CanvasTransform,
|
||||
CanvasCompositing,
|
||||
CanvasImageSmoothing,
|
||||
CanvasFillStrokeStyles,
|
||||
CanvasShadowStyles,
|
||||
CanvasFilters,
|
||||
CanvasRect,
|
||||
CanvasDrawPath,
|
||||
CanvasUserInterface,
|
||||
CanvasText,
|
||||
CanvasDrawImage,
|
||||
CanvasImageData,
|
||||
CanvasPathDrawingStyles,
|
||||
CanvasTextDrawingStyles,
|
||||
CanvasPath {
|
||||
readonly canvas: OffscreenCanvas;
|
||||
}
|
||||
declare const OffscreenCanvasRenderingContext2D: {
|
||||
prototype: OffscreenCanvasRenderingContext2D;
|
||||
new (): OffscreenCanvasRenderingContext2D;
|
||||
new(): OffscreenCanvasRenderingContext2D;
|
||||
};
|
||||
|
||||
interface OffscreenCanvas extends EventTarget {
|
||||
@ -598,7 +610,7 @@ interface OffscreenCanvas extends EventTarget {
|
||||
}
|
||||
declare const OffscreenCanvas: {
|
||||
prototype: OffscreenCanvas;
|
||||
new (width: number, height: number): OffscreenCanvas;
|
||||
new(width: number, height: number): OffscreenCanvas;
|
||||
};
|
||||
|
||||
function createCanvas(size: number): OffscreenCanvas {
|
||||
|
@ -18,15 +18,16 @@ import { CoreApiResponse } from "@gnu-taler/taler-util";
|
||||
import { WalletOperations } from "@gnu-taler/taler-wallet-core";
|
||||
import { BackgroundOperations } from "../wxApi.js";
|
||||
import {
|
||||
BackgroundPlatformAPI,
|
||||
ForegroundPlatformAPI,
|
||||
MessageFromBackend,
|
||||
MessageFromFrontend,
|
||||
MessageResponse,
|
||||
PlatformAPI,
|
||||
} from "./api.js";
|
||||
|
||||
const frames = ["popup", "wallet"];
|
||||
|
||||
const api: PlatformAPI = {
|
||||
const api: BackgroundPlatformAPI & ForegroundPlatformAPI = {
|
||||
isFirefox: () => false,
|
||||
keepAlive: (cb: VoidFunction) => cb(),
|
||||
findTalerUriInActiveTab: async () => undefined,
|
||||
|
@ -14,7 +14,7 @@
|
||||
GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
|
||||
*/
|
||||
|
||||
import { CrossBrowserPermissionsApi, Permissions, PlatformAPI } from "./api.js";
|
||||
import { BackgroundPlatformAPI, CrossBrowserPermissionsApi, ForegroundPlatformAPI, Permissions } from "./api.js";
|
||||
import chromePlatform, {
|
||||
containsHostPermissions as chromeHostContains,
|
||||
removeHostPermissions as chromeHostRemove,
|
||||
@ -24,7 +24,7 @@ import chromePlatform, {
|
||||
requestClipboardPermissions as chromeClipRequest,
|
||||
} from "./chrome.js";
|
||||
|
||||
const api: PlatformAPI = {
|
||||
const api: BackgroundPlatformAPI & ForegroundPlatformAPI = {
|
||||
...chromePlatform,
|
||||
isFirefox,
|
||||
getPermissionsApi,
|
||||
|
@ -0,0 +1,22 @@
|
||||
/*
|
||||
This file is part of GNU Taler
|
||||
(C) 2022 Taler Systems S.A.
|
||||
|
||||
GNU Taler is free software; you can redistribute it and/or modify it under the
|
||||
terms of the GNU General Public License as published by the Free Software
|
||||
Foundation; either version 3, or (at your option) any later version.
|
||||
|
||||
GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along with
|
||||
GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
|
||||
*/
|
||||
|
||||
import { ForegroundPlatformAPI } from "./api.js";
|
||||
|
||||
export let platform: ForegroundPlatformAPI = undefined as any;
|
||||
export function setupPlatform(impl: ForegroundPlatformAPI): void {
|
||||
platform = impl;
|
||||
}
|
@ -35,7 +35,7 @@ import {
|
||||
} from "../context/translation.js";
|
||||
import { useTalerActionURL } from "../hooks/useTalerActionURL.js";
|
||||
import { PopupNavBarOptions, Pages, PopupNavBar } from "../NavigationBar.js";
|
||||
import { platform } from "../platform/api.js";
|
||||
import { platform } from "../platform/foreground.js";
|
||||
import { BackupPage } from "../wallet/BackupPage.js";
|
||||
import { ProviderDetailPage } from "../wallet/ProviderDetailPage.js";
|
||||
import { BalancePage } from "./BalancePage.js";
|
||||
|
@ -24,7 +24,7 @@ import { Fragment, h, VNode } from "preact";
|
||||
import { Title } from "../components/styled/index.js";
|
||||
import { useTranslationContext } from "../context/translation.js";
|
||||
import { Button } from "../mui/Button.js";
|
||||
import { platform } from "../platform/api.js";
|
||||
import { platform } from "../platform/foreground.js";
|
||||
|
||||
export interface Props {
|
||||
url: string;
|
||||
|
@ -23,7 +23,7 @@
|
||||
import { setupI18n } from "@gnu-taler/taler-util";
|
||||
import { h, render } from "preact";
|
||||
import { strings } from "./i18n/strings.js";
|
||||
import { setupPlatform } from "./platform/api.js";
|
||||
import { setupPlatform } from "./platform/foreground.js";
|
||||
import devAPI from "./platform/dev.js";
|
||||
import { Application } from "./popup/Application.js";
|
||||
|
||||
|
@ -23,7 +23,7 @@
|
||||
import { setupI18n } from "@gnu-taler/taler-util";
|
||||
import { h, render } from "preact";
|
||||
import { strings } from "./i18n/strings.js";
|
||||
import { setupPlatform } from "./platform/api.js";
|
||||
import { setupPlatform } from "./platform/foreground.js";
|
||||
import chromeAPI from "./platform/chrome.js";
|
||||
import firefoxAPI from "./platform/firefox.js";
|
||||
import { Application } from "./popup/Application.js";
|
||||
|
@ -20,7 +20,7 @@
|
||||
*/
|
||||
import { setupI18n } from "@gnu-taler/taler-util";
|
||||
import { parseGroupImport } from "@gnu-taler/web-util/lib/index.browser";
|
||||
import { setupPlatform } from "./platform/api.js";
|
||||
import { setupPlatform } from "./platform/foreground.js";
|
||||
import chromeAPI from "./platform/chrome.js";
|
||||
import { renderNodeOrBrowser } from "./test-utils.js";
|
||||
|
||||
|
@ -16,7 +16,7 @@
|
||||
import { classifyTalerUri, TalerUriType } from "@gnu-taler/taler-util";
|
||||
import { Fragment, h, VNode } from "preact";
|
||||
import { useState } from "preact/hooks";
|
||||
import { platform } from "../platform/api.js";
|
||||
import { platform } from "../platform/foreground.js";
|
||||
import { InputWithLabel } from "../components/styled/index.js";
|
||||
import { useTranslationContext } from "../context/translation.js";
|
||||
import { Button } from "../mui/Button.js";
|
||||
|
@ -52,7 +52,7 @@ import {
|
||||
WithdrawPageFromURI,
|
||||
} from "../cta/Withdraw/index.js";
|
||||
import { WalletNavBarOptions, Pages, WalletNavBar } from "../NavigationBar.js";
|
||||
import { platform } from "../platform/api.js";
|
||||
import { platform } from "../platform/foreground.js";
|
||||
import { AddBackupProviderPage } from "./AddBackupProvider/index.js";
|
||||
import { BackupPage } from "./BackupPage.js";
|
||||
import { DepositPage } from "./DepositPage/index.js";
|
||||
|
@ -43,7 +43,7 @@ import { useBackupDeviceName } from "../hooks/useBackupDeviceName.js";
|
||||
import { useClipboardPermissions } from "../hooks/useClipboardPermissions.js";
|
||||
import { ToggleHandler } from "../mui/handlers.js";
|
||||
import { Pages } from "../NavigationBar.js";
|
||||
import { platform } from "../platform/api.js";
|
||||
import { platform } from "../platform/foreground.js";
|
||||
|
||||
const GIT_HASH = typeof __GIT_HASH__ !== "undefined" ? __GIT_HASH__ : undefined;
|
||||
|
||||
|
@ -28,7 +28,7 @@ import { useTranslationContext } from "../context/translation.js";
|
||||
import { useDiagnostics } from "../hooks/useDiagnostics.js";
|
||||
import { useAutoOpenPermissions } from "../hooks/useAutoOpenPermissions.js";
|
||||
import { ToggleHandler } from "../mui/handlers.js";
|
||||
import { platform } from "../platform/api.js";
|
||||
import { platform } from "../platform/foreground.js";
|
||||
|
||||
export function WelcomePage(): VNode {
|
||||
const permissionToggle = useAutoOpenPermissions();
|
||||
|
@ -23,7 +23,7 @@
|
||||
import { setupI18n } from "@gnu-taler/taler-util";
|
||||
import { h, render } from "preact";
|
||||
import { strings } from "./i18n/strings.js";
|
||||
import { setupPlatform } from "./platform/api.js";
|
||||
import { setupPlatform } from "./platform/foreground.js";
|
||||
import devAPI from "./platform/dev.js";
|
||||
import { Application } from "./wallet/Application.js";
|
||||
|
||||
|
@ -23,7 +23,7 @@
|
||||
import { setupI18n } from "@gnu-taler/taler-util";
|
||||
import { h, render } from "preact";
|
||||
import { strings } from "./i18n/strings.js";
|
||||
import { setupPlatform } from "./platform/api.js";
|
||||
import { setupPlatform } from "./platform/foreground.js";
|
||||
import chromeAPI from "./platform/chrome.js";
|
||||
import firefoxAPI from "./platform/firefox.js";
|
||||
import { Application } from "./wallet/Application.js";
|
||||
|
@ -34,12 +34,10 @@ import {
|
||||
WalletCoreRequestType,
|
||||
WalletCoreResponseType,
|
||||
} from "@gnu-taler/taler-wallet-core";
|
||||
import { MessageFromBackend, MessageFromFrontendBackground, MessageFromFrontendWallet } from "./platform/api.js";
|
||||
import {
|
||||
MessageFromBackend,
|
||||
MessageFromFrontendBackground,
|
||||
MessageFromFrontendWallet,
|
||||
platform,
|
||||
} from "./platform/api.js";
|
||||
} from "./platform/foreground.js";
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -46,11 +46,13 @@ import {
|
||||
WalletStoresV1,
|
||||
} from "@gnu-taler/taler-wallet-core";
|
||||
import { BrowserHttpLib } from "./browserHttpLib.js";
|
||||
import {
|
||||
platform,
|
||||
} from "./platform/background.js";
|
||||
import {
|
||||
MessageFromBackend,
|
||||
MessageFromFrontend,
|
||||
MessageResponse,
|
||||
platform,
|
||||
} from "./platform/api.js";
|
||||
import { SynchronousCryptoWorkerFactory } from "./serviceWorkerCryptoWorkerFactory.js";
|
||||
import { ServiceWorkerHttpLib } from "./serviceWorkerHttpLib.js";
|
||||
|
Loading…
Reference in New Issue
Block a user