mirror of
https://github.com/spacedriveapp/spacedrive.git
synced 2026-04-28 02:18:01 -04:00
161 lines
4.8 KiB
TypeScript
161 lines
4.8 KiB
TypeScript
// import { Buffer } from 'buffer';
|
|
// import { Clipboard } from '@phosphor-icons/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 (
|
|
// <Dialog
|
|
// form={useZodForm()}
|
|
// dialog={useDialog(props)}
|
|
// title="View Key Values"
|
|
// description="Here you can view the values of your keys."
|
|
// ctaLabel="Done"
|
|
// >
|
|
// <KeyUpdater
|
|
// uuid={key}
|
|
// setKey={setKeyValue}
|
|
// setEncryptionAlgo={setEncryptionAlgo}
|
|
// setHashingAlgo={setHashingAlgo}
|
|
// setContentSalt={setContentSalt}
|
|
// />
|
|
|
|
// <div className="mb-3 mt-4 grid w-full gap-4">
|
|
// <div className="flex flex-col">
|
|
// <span className="text-xs font-bold">Key</span>
|
|
// <Select
|
|
// className="mt-2 grow"
|
|
// value={key}
|
|
// onChange={(e) => {
|
|
// setKey(e);
|
|
// }}
|
|
// >
|
|
// {keys.data && (
|
|
// <KeyListSelectOptions keys={keys.data.map((key) => key.uuid)} />
|
|
// )}
|
|
// </Select>
|
|
// </div>
|
|
// </div>
|
|
// <div className="mb-3 mt-4 grid w-full grid-cols-2 gap-4">
|
|
// <div className="flex flex-col">
|
|
// <span className="text-xs font-bold">Encryption</span>
|
|
// <Select
|
|
// className="mt-2 w-[150px] text-gray-300"
|
|
// value={encryptionAlgo}
|
|
// disabled
|
|
// onChange={() => {}}
|
|
// >
|
|
// <SelectOption value="XChaCha20Poly1305">XChaCha20-Poly1305</SelectOption>
|
|
// <SelectOption value="Aes256Gcm">AES-256-GCM</SelectOption>
|
|
// </Select>
|
|
// </div>
|
|
// <div className="flex flex-col">
|
|
// <span className="text-xs font-bold">Hashing</span>
|
|
// <Select
|
|
// className="mt-2 text-gray-300"
|
|
// value={hashingAlgo}
|
|
// disabled
|
|
// onChange={() => {}}
|
|
// >
|
|
// <SelectOption value="Argon2id-s">Argon2id (standard)</SelectOption>
|
|
// <SelectOption value="Argon2id-h">Argon2id (hardened)</SelectOption>
|
|
// <SelectOption value="Argon2id-p">Argon2id (paranoid)</SelectOption>
|
|
// <SelectOption value="BalloonBlake3-s">
|
|
// BLAKE3-Balloon (standard)
|
|
// </SelectOption>
|
|
// <SelectOption value="BalloonBlake3-h">
|
|
// BLAKE3-Balloon (hardened)
|
|
// </SelectOption>
|
|
// <SelectOption value="BalloonBlake3-p">
|
|
// BLAKE3-Balloon (paranoid)
|
|
// </SelectOption>
|
|
// </Select>
|
|
// </div>
|
|
// </div>
|
|
// <div className="mb-3 mt-4 grid w-full gap-4">
|
|
// <div className="flex flex-col">
|
|
// <span className="mb-2 text-xs font-bold">Content Salt (hex)</span>
|
|
// <Input
|
|
// value={contentSalt}
|
|
// disabled
|
|
// right={
|
|
// <Button
|
|
// type="button"
|
|
// onClick={() => {
|
|
// navigator.clipboard.writeText(contentSalt);
|
|
// }}
|
|
// size="icon"
|
|
// >
|
|
// <Clipboard className="h-4 w-4" />
|
|
// </Button>
|
|
// }
|
|
// />
|
|
// </div>
|
|
// </div>
|
|
// <div className="mb-3 mt-4 grid w-full gap-4">
|
|
// <div className="flex flex-col">
|
|
// <span className="mb-2 text-xs font-bold">Key Value</span>
|
|
// <Input
|
|
// value={keyValue}
|
|
// disabled
|
|
// right={
|
|
// <Button
|
|
// type="button"
|
|
// onClick={() => {
|
|
// navigator.clipboard.writeText(keyValue);
|
|
// }}
|
|
// size="icon"
|
|
// >
|
|
// <Clipboard className="h-4 w-4" />
|
|
// </Button>
|
|
// }
|
|
// />
|
|
// </div>
|
|
// </div>
|
|
// </Dialog>
|
|
// );
|
|
// };
|