import { CheckCircle, XCircle } from '@phosphor-icons/react'; import { Suspense, useMemo } from 'react'; import { auth, CloudInstance, CloudLibrary, HardwareModel, useLibraryContext, useLibraryMutation, useLibraryQuery } from '@sd/client'; import { Button, Card, Loader, tw } from '@sd/ui'; import { Icon } from '~/components'; import { AuthRequiredOverlay } from '~/components/AuthRequiredOverlay'; import { LoginButton } from '~/components/LoginButton'; import { useLocale, useRouteTitle } from '~/hooks'; import { hardwareModelToIcon } from '~/util/hardware'; const DataBox = tw.div`max-w-[300px] rounded-md border border-app-line/50 bg-app-lightBox/20 p-2`; const Count = tw.div`min-w-[20px] flex h-[20px] px-1 items-center justify-center rounded-full border border-app-button/40 text-[9px]`; export const Component = () => { useRouteTitle('Cloud'); const authState = auth.useStateSnapshot(); const authSensitiveChild = () => { if (authState.status === 'loggedIn') return ; if (authState.status === 'notLoggedIn' || authState.status === 'loggingIn') return (

To access cloud related features, please login

); return null; }; return
{authSensitiveChild()}
; }; // million-ignore function Authenticated() { const { library } = useLibraryContext(); const cloudLibrary = useLibraryQuery(['cloud.library.get'], { suspense: true, retry: false }); const createLibrary = useLibraryMutation(['cloud.library.create']); const { t } = useLocale(); const thisInstance = useMemo(() => { if (!cloudLibrary.data) return undefined; return cloudLibrary.data.instances.find( (instance) => instance.uuid === library.instance_id ); }, [cloudLibrary.data, library.instance_id]); return ( } > {cloudLibrary.data ? (
{thisInstance && }
) : (

{t('cloud_connect_description')}

)}
); } // million-ignore const Instances = ({ instances }: { instances: CloudInstance[] }) => { const { library } = useLibraryContext(); const filteredInstances = instances.filter((instance) => instance.uuid !== library.instance_id); return (

Instances

{filteredInstances.length}
{filteredInstances.map((instance) => (

{instance.metadata.name}

Id:{' '} {instance.id}

UUID:{' '} {instance.uuid}

Public Key:{' '} {instance.identity}

))}
); }; interface LibraryProps { cloudLibrary: CloudLibrary; thisInstance: CloudInstance | undefined; } // million-ignore const Library = ({ thisInstance, cloudLibrary }: LibraryProps) => { const syncLibrary = useLibraryMutation(['cloud.library.sync']); return (

Library

Name: {cloudLibrary.name}

); }; interface ThisInstanceProps { instance: CloudInstance; } // million-ignore const ThisInstance = ({ instance }: ThisInstanceProps) => { return (

This Instance

{instance.metadata.name}

Id: {instance.id}

UUID: {instance.uuid}

Public Key:{' '} {instance.identity}

); };