import { Component, createSignal, For } from 'solid-js'; import PersonIcon from '@suid/icons-material/Person'; import style from './Account.module.css'; import { Box, Button, DialogActions, IconButton, InputLabel, NativeSelect, TextField, } from '@suid/material'; import { useI18n } from '@solid-primitives/i18n'; import Dialog from '../dialog'; import dispatch from '../../workers/dispatcher-main'; import { cloneDeep } from 'lodash'; import { getAccountById } from '../../db/account'; const Account: Component<{}> = (props) => { const [t] = useI18n(); const [open, setOpen] = createSignal(false); const [settings, setSettings] = createSignal(); const [accounts, setAccounts] = createSignal(); const [account, setAccount] = createSignal({}); const handleClickOpen = async () => { setOpen(true); const newSettings: any = await dispatch({ action: 'getSettings', }); setSettings(newSettings || {}); const newAccounts: any = await dispatch({ action: 'getAccounts', }); setAccounts([{ id: '--new--', name: t('newAccount') }, ...newAccounts]); setAccount( cloneDeep(getAccountById(accounts(), settings().currentAccountId)) ); console.log({ caller: 'Account / handleClickOpen', settings: settings(), accounts: accounts(), }); }; const handleClose = (event: any, reason?: string) => { console.log({ caller: 'Account / handleClose', event, reason, }); if (reason === undefined) { setOpen(false); } }; const changeAccountHandler = (event: any) => { const selectedAccountId = event.target.value; setAccount(cloneDeep(getAccountById(accounts(), selectedAccountId))); console.log({ caller: 'Account / changeAccountHandler', event, selectedAccountId: selectedAccountId, account: account(), }); }; const changeHandlerFactory = (path: string) => (event: any) => { const value = event.target.value; const newAccount = cloneDeep(account()); newAccount[path] = value; setAccount(newAccount); console.log({ caller: 'Account / changeHandlerFactory / ' + path, event, value, account: account(), }); }; const saveHandler = async () => { const updatedAccount = account(); if (updatedAccount.id === '--new--') { updatedAccount.id = updatedAccount.name; } await dispatch({ action: 'putAccount', params: { id: updatedAccount.id, account: updatedAccount }, }); const updatedSettings = { ...settings(), currentAccountId: updatedAccount.id, }; await dispatch({ action: 'putSettings', params: { settings: updatedSettings }, }); console.log({ caller: 'Account / saveHandler', account: account(), updatedAccount, settings: settings(), updatedSettings, }); handleClose(); location.reload(); }; const isValid = () => { if (!account().localDb) { return false; } //TODO: add more tests return true; }; return ( <>
{t('accountChooser')} {(account: any) => ( )} ); }; export default Account;