feat(pwa): add base
All checks were successful
/ build-web (push) Successful in 5m35s
/ build-desktop (linux) (push) Successful in 9m41s
/ build-mobile (push) Successful in 20m12s
/ release (push) Successful in 1m51s
Dependency builds / Build web (pull_request) Has been skipped
Dependency builds / Build desktop (pull_request) Has been skipped
Dependency builds / Build mobile (pull_request) Has been skipped

This commit is contained in:
Alois 2026-08-18 18:44:45 +02:00
commit 7b36218ffa
Signed by: alois
SSH key fingerprint: SHA256:GBzT2DXvAuGV9XIV5W3WrzVpjU54FThmxHXdbz95J24
40 changed files with 4014 additions and 922 deletions

View file

@ -4,10 +4,7 @@ import { getDatabaseEntry, setDatabaseEntry } from "@tensamin/shared/indexedDb";
export type SecureStorageStatus = {
backend:
| "electron-keyring"
| "application-storage"
| "webcrypto"
| "indexeddb";
"electron-keyring" | "application-storage" | "webcrypto" | "indexeddb";
secure: boolean;
reason?: string;
};
@ -71,7 +68,12 @@ async function getKey() {
if (!globalThis.crypto?.subtle || typeof indexedDB === "undefined") {
return null;
}
if (window.tensaminDesktop?.secureStorage) return loadElectronKey();
if (
typeof window !== "undefined" &&
window.tensaminDesktop?.secureStorage
) {
return loadElectronKey();
}
return loadBrowserKey();
})().catch(() => null);
return keyPromise;
@ -120,7 +122,10 @@ export async function decodeSecureValue(value: unknown): Promise<unknown> {
}
export async function getSecureStorageStatus(): Promise<SecureStorageStatus> {
const desktop = window.tensaminDesktop?.secureStorage;
const desktop =
typeof window === "undefined"
? undefined
: window.tensaminDesktop?.secureStorage;
if (desktop?.getStatus) {
const status = await desktop.getStatus();
if (status.available) return { backend: "electron-keyring", secure: true };