Files
api/web/store/unraidApiSettings.ts

52 lines
1.5 KiB
TypeScript

import { useLazyQuery, useMutation } from "@vue/apollo-composable";
import type { SetupRemoteAccessInput } from "~/composables/gql/graphql";
import {
GET_ALLOWED_ORIGINS,
GET_REMOTE_ACCESS,
SETUP_REMOTE_ACCESS,
SET_ADDITIONAL_ALLOWED_ORIGINS,
} from "~/store/unraidApiSettings.fragment";
export const useUnraidApiSettingsStore = defineStore(
"unraidApiSettings",
() => {
const { load: loadOrigins, result: origins } =
useLazyQuery(GET_ALLOWED_ORIGINS);
const { mutate: mutateOrigins } = useMutation(
SET_ADDITIONAL_ALLOWED_ORIGINS
);
const { load: loadRemoteAccess, result: remoteAccessResult } =
useLazyQuery(GET_REMOTE_ACCESS);
const { mutate: setupRemoteAccessMutation } =
useMutation(SETUP_REMOTE_ACCESS);
const getAllowedOrigins = async () => {
await loadOrigins();
return origins?.value?.extraAllowedOrigins ?? [];
};
const setAllowedOrigins = async (origins: string[]) => {
const result = await mutateOrigins({ input: { origins } });
return result?.data?.setAdditionalAllowedOrigins;
};
const getRemoteAccess = async () => {
await loadRemoteAccess();
return remoteAccessResult?.value?.remoteAccess;
};
const setupRemoteAccess = async (input: SetupRemoteAccessInput) => {
const response = await setupRemoteAccessMutation({ input });
return response?.data?.setupRemoteAccess;
};
return {
getAllowedOrigins,
setAllowedOrigins,
getRemoteAccess,
setupRemoteAccess,
};
}
);