aboutsummaryrefslogtreecommitdiff
path: root/packages/merchant-backend-ui/src/hooks/instance.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/merchant-backend-ui/src/hooks/instance.ts')
-rw-r--r--packages/merchant-backend-ui/src/hooks/instance.ts187
1 files changed, 0 insertions, 187 deletions
diff --git a/packages/merchant-backend-ui/src/hooks/instance.ts b/packages/merchant-backend-ui/src/hooks/instance.ts
deleted file mode 100644
index 14ab8de9c..000000000
--- a/packages/merchant-backend-ui/src/hooks/instance.ts
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- This file is part of GNU Taler
- (C) 2021 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 { MerchantBackend } from '../declaration';
-import { useBackendContext } from '../context/backend';
-import { fetcher, HttpError, HttpResponse, HttpResponseOk, request, SwrError } from './backend';
-import useSWR, { mutate } from 'swr';
-import { useInstanceContext } from '../context/instance';
-
-
-interface InstanceAPI {
- updateInstance: (data: MerchantBackend.Instances.InstanceReconfigurationMessage) => Promise<void>;
- deleteInstance: () => Promise<void>;
- clearToken: () => Promise<void>;
- setNewToken: (token: string) => Promise<void>;
-}
-
-export function useManagementAPI(instanceId: string) : InstanceAPI {
- const { url, token } = useBackendContext()
-
- const updateInstance = async (instance: MerchantBackend.Instances.InstanceReconfigurationMessage): Promise<void> => {
- await request(`${url}/management/instances/${instanceId}`, {
- method: 'patch',
- token,
- data: instance
- })
-
- mutate([`/private/`, token, url], null)
- };
-
- const deleteInstance = async (): Promise<void> => {
- await request(`${url}/management/instances/${instanceId}`, {
- method: 'delete',
- token,
- })
-
- mutate([`/private/`, token, url], null)
- }
-
- const clearToken = async (): Promise<void> => {
- await request(`${url}/management/instances/${instanceId}/auth`, {
- method: 'post',
- token,
- data: { method: 'external' }
- })
-
- mutate([`/private/`, token, url], null)
- }
-
- const setNewToken = async (newToken: string): Promise<void> => {
- await request(`${url}/management/instances/${instanceId}/auth`, {
- method: 'post',
- token,
- data: { method: 'token', token: newToken }
- })
-
- mutate([`/private/`, token, url], null)
- }
-
- return { updateInstance, deleteInstance, setNewToken, clearToken }
-}
-
-export function useInstanceAPI(): InstanceAPI {
- const { url: baseUrl, token: adminToken } = useBackendContext()
- const { token: instanceToken, id, admin } = useInstanceContext()
-
- const { url, token } = !admin ? {
- url: baseUrl, token: adminToken
- } : {
- url: `${baseUrl}/instances/${id}`, token: instanceToken
- };
-
- const updateInstance = async (instance: MerchantBackend.Instances.InstanceReconfigurationMessage): Promise<void> => {
- await request(`${url}/private/`, {
- method: 'patch',
- token,
- data: instance
- })
-
- if (adminToken) mutate(['/private/instances', adminToken, baseUrl], null)
- mutate([`/private/`, token, url], null)
- };
-
- const deleteInstance = async (): Promise<void> => {
- await request(`${url}/private/`, {
- method: 'delete',
- token: adminToken,
- })
-
- if (adminToken) mutate(['/private/instances', adminToken, baseUrl], null)
- mutate([`/private/`, token, url], null)
- }
-
- const clearToken = async (): Promise<void> => {
- await request(`${url}/private/auth`, {
- method: 'post',
- token,
- data: { method: 'external' }
- })
-
- mutate([`/private/`, token, url], null)
- }
-
- const setNewToken = async (newToken: string): Promise<void> => {
- await request(`${url}/private/auth`, {
- method: 'post',
- token,
- data: { method: 'token', token: newToken }
- })
-
- mutate([`/private/`, token, url], null)
- }
-
- return { updateInstance, deleteInstance, setNewToken, clearToken }
-}
-
-
-export function useInstanceDetails(): HttpResponse<MerchantBackend.Instances.QueryInstancesResponse> {
- const { url: baseUrl, token: baseToken } = useBackendContext();
- const { token: instanceToken, id, admin } = useInstanceContext();
-
- const { url, token } = !admin ? {
- url: baseUrl, token: baseToken
- } : {
- url: `${baseUrl}/instances/${id}`, token: instanceToken
- }
-
- const { data, error, isValidating } = useSWR<HttpResponseOk<MerchantBackend.Instances.QueryInstancesResponse>, HttpError>([`/private/`, token, url], fetcher, {
- refreshInterval:0,
- refreshWhenHidden: false,
- revalidateOnFocus: false,
- revalidateOnReconnect: false,
- refreshWhenOffline: false,
- errorRetryCount: 0,
- errorRetryInterval: 1,
- shouldRetryOnError: false,
- })
-
- if (isValidating) return {loading:true, data: data?.data}
- if (data) return data
- if (error) return error
- return {loading: true}
-}
-
-export function useManagedInstanceDetails(instanceId: string): HttpResponse<MerchantBackend.Instances.QueryInstancesResponse> {
- const { url, token } = useBackendContext();
-
- const { data, error, isValidating } = useSWR<HttpResponseOk<MerchantBackend.Instances.QueryInstancesResponse>, HttpError>([`/management/instances/${instanceId}`, token, url], fetcher, {
- refreshInterval:0,
- refreshWhenHidden: false,
- revalidateOnFocus: false,
- revalidateOnReconnect: false,
- refreshWhenOffline: false,
- errorRetryCount: 0,
- errorRetryInterval: 1,
- shouldRetryOnError: false,
- })
-
- if (isValidating) return {loading:true, data: data?.data}
- if (data) return data
- if (error) return error
- return {loading: true}
-}
-
-export function useBackendInstances(): HttpResponse<MerchantBackend.Instances.InstancesResponse> {
- const { url } = useBackendContext()
- const { token } = useInstanceContext();
-
- const { data, error, isValidating } = useSWR<HttpResponseOk<MerchantBackend.Instances.InstancesResponse>, HttpError>(['/management/instances', token, url], fetcher)
-
- if (isValidating) return {loading:true, data: data?.data}
- if (data) return data
- if (error) return error
- return {loading: true}
-}