import {useState, useEffect} from 'react' import {cleanToken, grabToken, grabTokens, selectToken, storeToken} from "../functions/token"; export class Token { id!: string host!: string permissions!: string[] } export interface UseTokenInterface { token: Token|null tokens: Token[] switchToken(tokenId: string): void deleteToken(tokenId: string): void addToken(tokenId: string): void } export function useToken(): UseTokenInterface { const [token, setToken] = useState(null); const [tokens, setTokens] = useState([]); useEffect(() => { setToken(grabToken()?.payload) let tokens = grabTokens().map((tokenData) => tokenData.payload) setTokens(tokens) return () => { } }, []) const switchToken = (tokenId: string) => { selectToken(tokenId) setToken(grabToken()?.payload) } const deleteToken = (tokenId: string) => { cleanToken(tokenId) setToken(grabToken()?.payload) } const addToken = (token: string) => { storeToken(token) setToken(grabToken()?.payload) } return {token, tokens, switchToken, deleteToken, addToken} }