import { useContext } from 'react';
import Identicon from '@polkadot/react-identicon';
import 'primereact/resources/themes/md-dark-indigo/theme.css'
import 'primereact/resources/primereact.min.css'    
import { Dropdown } from 'primereact/dropdown'
import styles from '@/styles/Home.module.css'
import { usePolkadotExtensionWithContext } from '@/context/polkadotExtensionContext';

export const accountValueTemplate = (option: any, props: any) => {
    if ( option ) {
    return (
        <div className={ styles.accountOption }>
            <div>
                <Identicon
                    value={option?.address}
                    size={32}
                    theme='polkadot'
                />
                {option?.meta?.name }
            </div>
        </div>
    );
    }

    return <span>{props.placeholder}</span>;
};

export const accountOptionTemplate = (option: any) => {
    return (
        <div className={ styles.accountOption }>
            <div>
                <Identicon
                    value={option?.address}
                    size={32}
                    theme='polkadot'
                />
                {option?.meta?.name }
            </div>
        </div>
    );
};

export default function AccountSelector( ) {
    const { accounts, actingAccount, setActingAccountIdx } = usePolkadotExtensionWithContext()

    return (
        <Dropdown 
            options={ accounts ?? undefined }
            optionLabel="address" 
            placeholder="Select Account"
            className={ styles.dropdown }
            value={ actingAccount }
            itemTemplate={ accountOptionTemplate }
            valueTemplate={ accountValueTemplate }
            onChange={(event) => {
                const accountIdx = accounts ? accounts.findIndex((account) => account.address === event.target.value.address) : 0
                setActingAccountIdx(accountIdx)
            }}
        />
    )
}