'use client' import { ApiRoutes, GetApiRoute } from '@/ApiRoutes' import { httpService } from '@/services/HttpService' import { FormEvent, useEffect, useRef, useState } from 'react' import { CustomButton, CustomCheckbox, CustomEnumSelect, CustomInput, CustomRadioGroup } from '@/controls' import { GetAccountResponse, toCacheAccount } from '@/models/letsEncryptServer/account/responses/GetAccountResponse' import { deepCopy, enumToArray } from '../functions' import { CacheAccount } from '@/entities/CacheAccount' import { ChallengeTypes } from '@/entities/ChallengeTypes' import { FaPlus, FaTrash } from 'react-icons/fa' import { PageContainer } from '@/components/pageContainer' import { OffCanvas } from '@/components/offcanvas' import { AccountEdit } from '@/partials/accoutEdit' import { get } from 'http' export default function Page() { const [accounts, setAccounts] = useState([]) const [editingAccount, setEditingAccount] = useState( null ) const init = useRef(false) useEffect(() => { if (init.current) return console.log('Fetching accounts') const fetchAccounts = async () => { const newAccounts: CacheAccount[] = [] const gatAccountsResult = await httpService.get( GetApiRoute(ApiRoutes.ACCOUNTS) ) if (!gatAccountsResult.isSuccess) return gatAccountsResult.data?.forEach((account) => { newAccounts.push(toCacheAccount(account)) }) setAccounts(newAccounts) } fetchAccounts() init.current = true }, []) const handleAccountUpdate = (updatedAccount: CacheAccount) => { setAccounts( accounts.map((account) => account.accountId === updatedAccount.accountId ? updatedAccount : account ) ) } const deleteAccount = (accountId: string) => { setAccounts(accounts.filter((account) => account.accountId !== accountId)) setEditingAccount(null) } return ( <> {accounts.map((account) => (

Account: {account.accountId}

{ setEditingAccount(account) }} className="bg-blue-500 text-white px-3 py-1 rounded" > Edit

Description: {account.description}

Contacts:

    {account.contacts.map((contact) => (
  • {contact}
  • ))}

Hostnames:

    {account.hostnames?.map((hostname) => (
  • {hostname.hostname} - {hostname.expires.toDateString()} - {hostname.isUpcomingExpire ? 'Upcoming' : 'Not Upcoming'}
  • ))}
))}
setEditingAccount(null)} > {editingAccount && ( setEditingAccount(null)} onDelete={deleteAccount} onSubmit={(account) => { setEditingAccount(null) handleAccountUpdate(account) }} /> )} ) }