You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
spa_instat_tv/src/features/SystemSettings/hooks.tsx

52 lines
1.0 KiB

import type { FormEvent } from 'react'
import {
ENV,
ENVType,
isValidEnv,
} from 'config/env'
import { SELECTED_API_KEY } from 'helpers/selectedApi'
import { useToggle } from 'hooks/useToggle'
import { useLocalStore } from 'hooks/useStorage'
import { removeRefreshToken, removeToken } from 'helpers'
import { removeCookie } from 'helpers/cookie'
type FormElement = HTMLFormElement & {
api: HTMLInputElement & {
value: ENVType,
},
}
export const useSystemSettings = () => {
const {
close,
isOpen,
open,
} = useToggle()
const [selectedApi, setSelectedApi] = useLocalStore({
defaultValue: ENV,
key: SELECTED_API_KEY,
validator: isValidEnv,
})
const onSubmit = (e: FormEvent<FormElement>) => {
e.preventDefault()
const { api } = e.currentTarget
setSelectedApi(api.value)
removeToken()
removeRefreshToken()
removeCookie('access_token')
window.location.reload()
}
return {
close,
isOpen,
onSubmit,
open,
selectedApi,
}
}