import type { ClusterModel } from '@/bindings.gen'; import type { ButtonProps } from '@onelauncher/common/components'; import { KillMinecraft, NoAccountPopup, Overlay } from '@/components'; import { useIsRunning } from '@/hooks/useClusters'; import { useLaunchCluster } from '@/hooks/useLaunchCluster'; import { bindings } from '@/main'; import { useCommandSuspense } from '@onelauncher/common'; import { Button } from '@onelauncher/common/components'; import { useNavigate } from '@tanstack/react-router'; import { useState } from 'react'; import { tv } from 'tailwind-variants'; export type LaunchButtonProps = Omit & { cluster: ClusterModel; }; const launchButtonVariants = tv({ variants: { isRunning: { true: 'bg-success hover:bg-success-hover pressed:bg-success-pressed disabled:bg-success-disabled pending:bg-success-disabled', }, }, }); function PromptForOnboarding({ launch, setSkipPackagesCheck, cluster }: { launch: () => void; setSkipPackagesCheck: React.Dispatch>; cluster: ClusterModel }) { const navigate = useNavigate(); const onClickYes = () => { localStorage.setItem('selectedClusters', JSON.stringify([{ mc_version: cluster.mc_version, mc_loader: cluster.mc_loader }])); navigate({ to: `/onboarding/preferences/versionCategory` }); }; const onClickLaunch = () => { setSkipPackagesCheck(true); launch(); }; return ( Not Setup

It seems like you haven't setup this version

Do you want to setup this version?

); } export function LaunchButton({ cluster, isDisabled, className, ...rest }: LaunchButtonProps) { const { data: currentAccount } = useCommandSuspense(['getDefaultUser'], () => bindings.core.getDefaultUser(true)); const { data: installedPackages } = useCommandSuspense(['getLinkedPackages', cluster.id], () => bindings.core.getLinkedPackages(cluster.id)); const { launch: launchCluster, showDownloadWarning, setShowDownloadWarning, forceLaunch } = useLaunchCluster(cluster.id); const isRunning = useIsRunning(cluster.id); const [reason, setReason] = useState<'account' | 'packages' | 'kill' | null>(null); const [skipPackagesCheck, setSkipPackagesCheck] = useState(false); const launch = () => { if (isRunning) return setReason('kill'); if (!currentAccount) return setReason('account'); if (installedPackages.length === 0 && !skipPackagesCheck) return setReason('packages'); launchCluster(); setSkipPackagesCheck(false); setReason(null); }; return ( <> !open && setReason(null)}> {reason === 'kill' && setReason(null)} />} {reason === 'packages' && } {reason === 'account' && } Cluster is downloading

The cluster is currently downloading. Launching it now might cause issues or corruption. Are you sure you want to proceed?

setShowDownloadWarning(false) }, { color: 'primary', key: 'Proceed', children: 'Proceed Anyways', size: 'normal', onClick: forceLaunch, }, ]} />
); }