Files
backrest/webui/src/api.ts
T
Gareth 6e0c201025
Build Snapshot Release / build (push) Has been cancelled
Release Please / release-please (push) Has been cancelled
Test / test-nix (push) Has been cancelled
Test / test-win (push) Has been cancelled
feat: multihost sync ui (#825)
2025-06-29 17:34:02 -07:00

42 lines
1.2 KiB
TypeScript

import { useMemo } from "react";
import { createConnectTransport } from "@connectrpc/connect-web";
import { createClient } from "@connectrpc/connect";
import { Authentication } from "../gen/ts/v1/authentication_pb";
import { Backrest } from "../gen/ts/v1/service_pb";
import { BackrestSyncStateService } from "../gen/ts/v1/syncservice_pb";
import { backendUrl } from "./state/buildcfg";
const tokenKey = "backrest-ui-authToken";
export const setAuthToken = (token: string) => {
localStorage.setItem(tokenKey, token);
};
const fetch = (
input: RequestInfo | URL,
init?: RequestInit,
): Promise<Response> => {
const headers = new Headers(init?.headers);
let token = localStorage.getItem(tokenKey);
if (token && token !== "") {
headers.set("Authorization", "Bearer " + token);
}
init = { ...init, headers };
return window.fetch(input, init);
};
const transport = createConnectTransport({
baseUrl: backendUrl,
useBinaryFormat: true,
fetch: fetch as typeof globalThis.fetch,
});
export const authenticationService = createClient(
Authentication,
transport,
);
export const backrestService = createClient(Backrest, transport);
export const syncStateService = createClient(BackrestSyncStateService, transport);