import { Buffer } from 'buffer'; import { Clipboard } from 'phosphor-react'; import { useState } from 'react'; import { slugFromHashingAlgo, useLibraryQuery } from '@sd/client'; import { Button, Dialog, Input, Select, SelectOption, UseDialogProps, useDialog } from '@sd/ui'; import { useZodForm } from '@sd/ui/src/forms'; import { KeyListSelectOptions } from '~/app/$libraryId/KeyManager/List'; export const KeyUpdater = (props: { uuid: string; setKey: (value: string) => void; setEncryptionAlgo: (value: string) => void; setHashingAlgo: (value: string) => void; setContentSalt: (value: string) => void; }) => { useLibraryQuery(['keys.getKey', props.uuid], { onSuccess: (data) => { props.setKey(data); } }); const keys = useLibraryQuery(['keys.list']); const key = keys.data?.find((key) => key.uuid == props.uuid); if (key) { props.setEncryptionAlgo(key?.algorithm); props.setHashingAlgo(slugFromHashingAlgo(key?.hashing_algorithm)); props.setContentSalt(Buffer.from(key.content_salt).toString('hex')); } return <>; }; export default (props: UseDialogProps) => { const keys = useLibraryQuery(['keys.list'], { onSuccess: (data) => { if (key === '' && data.length !== 0) { setKey(data[0]?.uuid ?? ''); } } }); const [key, setKey] = useState(''); const [keyValue, setKeyValue] = useState(''); const [contentSalt, setContentSalt] = useState(''); const [encryptionAlgo, setEncryptionAlgo] = useState(''); const [hashingAlgo, setHashingAlgo] = useState(''); return (
Key
Encryption
Hashing
Content Salt (hex) { navigator.clipboard.writeText(contentSalt); }} size="icon" > } />
Key Value { navigator.clipboard.writeText(keyValue); }} size="icon" > } />
); };