Add Tauri compatibility fallback and switch to localStorage for web environments
- Updated `useApi` to detect Tauri runtime and dynamically import Tauri-specific modules. - Refactored `useStore` to use `localStorage` fallback when not in Tauri. - Improved runtime checks with `isTauri` utility to handle platform-specific logic.
This commit is contained in:
@@ -1,4 +1,3 @@
|
||||
import { fetch } from '@tauri-apps/plugin-http';
|
||||
import { useStore } from './useStore.ts';
|
||||
import { useCrypto } from './useCrypto.ts';
|
||||
|
||||
@@ -9,6 +8,9 @@ type Settings = {
|
||||
password: string;
|
||||
};
|
||||
|
||||
const isTauri = () =>
|
||||
typeof window !== 'undefined' && Boolean((window as typeof window & { __TAURI__?: unknown }).__TAURI__);
|
||||
|
||||
async function buildAuthHeader(): Promise<string | undefined> {
|
||||
const {decrypt} = useCrypto();
|
||||
const { getValue } = useStore();
|
||||
@@ -36,10 +38,15 @@ export function useApi() {
|
||||
...options.headers,
|
||||
} as Record<string, string>;
|
||||
|
||||
const response = await fetch(url, {
|
||||
...options,
|
||||
headers,
|
||||
});
|
||||
const response = isTauri()
|
||||
? await (await import('@tauri-apps/plugin-http')).fetch(url, {
|
||||
...options,
|
||||
headers,
|
||||
})
|
||||
: await fetch(url, {
|
||||
...options,
|
||||
headers,
|
||||
});
|
||||
|
||||
if (!response.ok) {
|
||||
throw new Error(`API call failed: ${response.statusText}`);
|
||||
|
||||
Reference in New Issue
Block a user