diff --git a/apps/onelauncher/frontend/src/components/overlay/popups/AccountPopup.tsx b/apps/onelauncher/frontend/src/components/overlay/popups/AccountPopup.tsx index 7af01da0..954ed90d 100644 --- a/apps/onelauncher/frontend/src/components/overlay/popups/AccountPopup.tsx +++ b/apps/onelauncher/frontend/src/components/overlay/popups/AccountPopup.tsx @@ -1,17 +1,18 @@ +import type { MinecraftCredentials } from '@/bindings.gen'; import PlayerHead from '@/components/content/PlayerHead'; -import {useCommand} from '@onelauncher/common'; -import { Button, Menu } from '@onelauncher/common/components'; import { bindings } from '@/main'; +import { useCommand } from '@onelauncher/common'; +import { Button, Menu } from '@onelauncher/common/components'; import { PlusIcon, Settings01Icon } from '@untitled-theme/icons-react'; import { Separator } from 'react-aria-components'; import { twMerge } from 'tailwind-merge'; function AccountPopup() { - const users = useCommand('getUsers', bindings.commands.getUsers); - const defaultUser = useCommand('getDefaultUser', () => bindings.commands.getDefaultUser(false)); + const users = useCommand('getUsers', bindings.core.get_users); + const defaultUser = useCommand('getDefaultUser', () => bindings.core.get_default_user(false)); - const setDefaultUser = (user: bindings.MinecraftCredentials) => { - bindings.commands.setDefaultUser(user.id); + const setDefaultUser = (user: MinecraftCredentials) => { + bindings.core.set_default_user(user.id); }; return ( @@ -64,7 +65,7 @@ function AccountEntry({ loggedIn = false, }: { onClick: () => void; - user: bindings.MinecraftCredentials; + user: MinecraftCredentials; loggedIn?: boolean; }) { return ( diff --git a/apps/onelauncher/frontend/src/hooks/useCluster.ts b/apps/onelauncher/frontend/src/hooks/useCluster.ts index 634b1346..3c764a98 100644 --- a/apps/onelauncher/frontend/src/hooks/useCluster.ts +++ b/apps/onelauncher/frontend/src/hooks/useCluster.ts @@ -1,7 +1,7 @@ import type { Model } from '@/bindings.gen'; import { bindings } from '@/main'; +import { useCommand } from '@onelauncher/common'; import { useEffect, useState } from 'react'; -import useCommand from './useCommand'; function useRecentCluster() { const result = useCommand('getClusters', bindings.core.get_clusters); diff --git a/apps/onelauncher/frontend/src/routes/app/browser/index.tsx b/apps/onelauncher/frontend/src/routes/app/browser/index.tsx index d5a45078..19fb84ef 100644 --- a/apps/onelauncher/frontend/src/routes/app/browser/index.tsx +++ b/apps/onelauncher/frontend/src/routes/app/browser/index.tsx @@ -1,5 +1,5 @@ -import { Button, TextField } from '@onelauncher/common/components'; import Modal from '@/components/overlay/Modal'; +import { Button, TextField } from '@onelauncher/common/components'; import { createFileRoute } from '@tanstack/react-router'; export const Route = createFileRoute('/app/browser/')({ diff --git a/apps/onelauncher/frontend/src/routes/app/cluster/index.tsx b/apps/onelauncher/frontend/src/routes/app/cluster/index.tsx index efe0e46e..096b860b 100644 --- a/apps/onelauncher/frontend/src/routes/app/cluster/index.tsx +++ b/apps/onelauncher/frontend/src/routes/app/cluster/index.tsx @@ -3,8 +3,8 @@ import type { Dispatch, SetStateAction } from 'react'; import LoaderIcon from '@/components/launcher/LoaderIcon'; import ScrollableContainer from '@/components/ScrollableContainer'; import SettingsRow from '@/components/SettingsRow'; -import useCommand from '@/hooks/useCommand'; import { bindings } from '@/main'; +import { useCommand } from '@onelauncher/common'; import { Button, Show, TextField } from '@onelauncher/common/components'; import { createFileRoute } from '@tanstack/react-router'; import { Edit02Icon, FolderIcon, ImagePlusIcon, Share07Icon, Tool02Icon, Trash01Icon } from '@untitled-theme/icons-react'; @@ -21,7 +21,7 @@ function RouteComponent() { const [newName, setNewName] = useState(''); // dumbass fix ik - const cluster = useCommand('getClusterById', () => bindings.commands.getClusterById(Number(id.toString()) as unknown as bigint)); + const cluster = useCommand('getClusterById', () => bindings.core.get_cluster(Number(id.toString()) as unknown as bigint)); return ( @@ -119,17 +119,19 @@ function Banner(props: BannerProps) { // props.setNewCover(selected); // } + const { setNewName, editMode, cluster } = props; + function updateName(name: string) { if (name.length > 30 || name.length <= 0) return; - props.setNewName(name); + setNewName(name); } return (
- +
{props.cluster?.name} +

{cluster?.name}

} - when={props.editMode} + when={editMode} > updateName(e.target.value)} - placeholder={props.cluster?.name} + placeholder={cluster?.name} />
- {props.cluster?.mc_version} - {props.cluster?.mc_loader || 'unknown'} - {props.cluster?.mc_loader_version && {props.cluster.mc_loader_version}} + {cluster?.mc_version} + {cluster?.mc_loader || 'unknown'} + {cluster?.mc_loader_version && {cluster.mc_loader_version}} Played for {' '} - {props.cluster?.overall_played || 0} + {cluster?.overall_played || 0} .
diff --git a/apps/onelauncher/frontend/src/routes/app/cluster/route.tsx b/apps/onelauncher/frontend/src/routes/app/cluster/route.tsx index 9a5c0515..fd79613c 100644 --- a/apps/onelauncher/frontend/src/routes/app/cluster/route.tsx +++ b/apps/onelauncher/frontend/src/routes/app/cluster/route.tsx @@ -1,52 +1,52 @@ -import { createFileRoute, Outlet } from '@tanstack/react-router' -import Sidebar from '../settings/route' -import { EyeIcon, File06Icon, Globe04Icon, Image03Icon, PackagePlusIcon, Settings04Icon } from '@untitled-theme/icons-react' -import useCommand from '@/hooks/useCommand' -import { bindings } from '@/main' +import { bindings } from '@/main'; +import { useCommand } from '@onelauncher/common'; +import { createFileRoute, Outlet } from '@tanstack/react-router'; +import { EyeIcon, File06Icon, Globe04Icon, Image03Icon, PackagePlusIcon, Settings04Icon } from '@untitled-theme/icons-react'; +import Sidebar from '../settings/route'; -type ClusterSearch = { - id: bigint +interface ClusterSearch { + id: bigint; } export const Route = createFileRoute('/app/cluster')({ - component: RouteComponent, - validateSearch: (search: Record): ClusterSearch => { - return { - id: BigInt(search.id as string), - } - }, -}) + component: RouteComponent, + validateSearch: (search: Record): ClusterSearch => { + return { + id: BigInt(search.id as string), + }; + }, +}); function RouteComponent() { - const { id } = Route.useSearch() + const { id } = Route.useSearch(); - const cluster = useCommand("getClusterById", () => bindings.commands.getClusterById(Number(id.toString()) as unknown as bigint)) + const cluster = useCommand('getClusterById', () => bindings.core.get_cluster(Number(id.toString()) as unknown as bigint)); - const isModded = cluster.data?.mc_loader != "vanilla" + const isModded = cluster.data?.mc_loader !== 'vanilla'; - return ( -
-
- , 'Overview', '/?id=' + id], - (isModded ? [, 'Mods', '/mods?id=' + id] : undefined), - [, 'Screenshots', '/screenshots?id=' + id], - [, 'Worlds', '/worlds?id=' + id], - [, 'Logs', '/logs?id=' + id], - [, 'Game Settings', '/settings?id=' + id], - ], - }} - /> - {/* */} -
+ return ( +
+
+ , 'Overview', `/?id=${id}`], + (isModded ? [, 'Mods', `/mods?id=${id}`] : undefined), + [, 'Screenshots', `/screenshots?id=${id}`], + [, 'Worlds', `/worlds?id=${id}`], + [, 'Logs', `/logs?id=${id}`], + [, 'Game Settings', `/settings?id=${id}`], + ], + }} + /> + {/* */} +
-
- -
-
- ) +
+ +
+
+ ); } diff --git a/apps/onelauncher/frontend/src/routes/app/cluster/screenshots.tsx b/apps/onelauncher/frontend/src/routes/app/cluster/screenshots.tsx index b1da46fc..f90d6f7c 100644 --- a/apps/onelauncher/frontend/src/routes/app/cluster/screenshots.tsx +++ b/apps/onelauncher/frontend/src/routes/app/cluster/screenshots.tsx @@ -1,46 +1,48 @@ -import { createFileRoute } from '@tanstack/react-router' -import Sidebar from '../settings/route'; import ScrollableContainer from '@/components/ScrollableContainer'; -import { Show } from '@/components/base/Show'; +import { Show } from '@onelauncher/common/components'; +import { createFileRoute } from '@tanstack/react-router'; +import Sidebar from '../settings/route'; export const Route = createFileRoute('/app/cluster/screenshots')({ - component: RouteComponent, -}) + component: RouteComponent, +}); function RouteComponent() { - const arr = [1, 2, 3, 4, 5, 6] - return ( - -

Screenshots

- -
- No screenshots found. Press F2 in game to take a screenshot!
} - when={true} - > -
- {arr.map((data) => ( - - ))} -
- -
- - - ) + const arr = [1, 2, 3, 4, 5, 6]; + return ( + +

Screenshots

+ +
+ No screenshots found. Press F2 in game to take a screenshot!
} + when + > +
+ {arr.map(data => ( + + ))} +
+
+
+ + + ); } function ScreenshotEntry(props: { path: string; cluster_path: string }) { - function onClick() { - //screen shot viewer overlay - } + function onClick() { + // screen shot viewer overlay + } - return ( -
- {props.path} -
- ); + const { path } = props; + + return ( +
+ {path} +
+ ); } diff --git a/apps/onelauncher/frontend/src/routes/app/cluster/settings.tsx b/apps/onelauncher/frontend/src/routes/app/cluster/settings.tsx index dabbeaa3..8acc1a3e 100644 --- a/apps/onelauncher/frontend/src/routes/app/cluster/settings.tsx +++ b/apps/onelauncher/frontend/src/routes/app/cluster/settings.tsx @@ -1,35 +1,33 @@ -import { createFileRoute } from '@tanstack/react-router' -import Sidebar from '../settings/route' -import ScrollableContainer from '@/components/ScrollableContainer' -import useCommand from '@/hooks/useCommand' -import { bindings } from '@/main' -import { GameSettings, ProcessSettings } from '../settings/minecraft' +import ScrollableContainer from '@/components/ScrollableContainer'; +import { bindings } from '@/main'; +import { useCommand } from '@onelauncher/common'; +import { createFileRoute } from '@tanstack/react-router'; +import { GameSettings, ProcessSettings } from '../settings/minecraft'; +import Sidebar from '../settings/route'; export const Route = createFileRoute('/app/cluster/settings')({ - component: RouteComponent, -}) + component: RouteComponent, +}); function RouteComponent() { - const { id } = Route.useSearch() + const { id } = Route.useSearch(); - const cluster = useCommand("getClusterById", () => bindings.commands.getClusterById(Number(id.toString()) as unknown as bigint)) - const result = useCommand("getProfileOrDefault", () => bindings.commands.getProfileOrDefault(cluster.data?.name as string), { - enabled: !!cluster.data?.name - }) + const cluster = useCommand('getClusterById', () => bindings.core.get_cluster(Number(id.toString()) as unknown as bigint)); + const _result = useCommand('getProfileOrDefault', () => bindings.core.get_profile_or_default(cluster.data?.name as string), { + enabled: !!cluster.data?.name, + }); - console.log(result.data) + return ( + + +
+

Minecraft Settings

- return ( - - -
-

Minecraft Settings

+ - - - -
-
-
- ) + +
+
+
+ ); } diff --git a/apps/onelauncher/frontend/src/routes/app/cluster/worlds.tsx b/apps/onelauncher/frontend/src/routes/app/cluster/worlds.tsx index df186f95..c1ea46be 100644 --- a/apps/onelauncher/frontend/src/routes/app/cluster/worlds.tsx +++ b/apps/onelauncher/frontend/src/routes/app/cluster/worlds.tsx @@ -1,20 +1,20 @@ -import { createFileRoute } from '@tanstack/react-router' -import Sidebar from '../settings/route' -import ScrollableContainer from '@/components/ScrollableContainer' +import ScrollableContainer from '@/components/ScrollableContainer'; +import { createFileRoute } from '@tanstack/react-router'; +import Sidebar from '../settings/route'; export const Route = createFileRoute('/app/cluster/worlds')({ - component: RouteComponent, -}) + component: RouteComponent, +}); function RouteComponent() { - return ( - -

Worlds

- -
- -
-
-
- ) + return ( + +

Worlds

+ +
+ +
+
+
+ ); } diff --git a/apps/onelauncher/frontend/src/routes/app/settings/accounts.tsx b/apps/onelauncher/frontend/src/routes/app/settings/accounts.tsx index 5cb86bcf..7706d189 100644 --- a/apps/onelauncher/frontend/src/routes/app/settings/accounts.tsx +++ b/apps/onelauncher/frontend/src/routes/app/settings/accounts.tsx @@ -1,7 +1,7 @@ import PlayerHead from '@/components/content/PlayerHead'; import ScrollableContainer from '@/components/ScrollableContainer'; -import useCommand from '@/hooks/useCommand'; import { bindings } from '@/main'; +import { useCommand } from '@onelauncher/common'; import { Button, Show, Tooltip } from '@onelauncher/common/components'; import { createFileRoute } from '@tanstack/react-router'; import { InfoCircleIcon, Trash01Icon, UserPlus02Icon } from '@untitled-theme/icons-react'; @@ -18,8 +18,8 @@ interface Account { } function RouteComponent() { - const { data: usersData, isLoading: usersLoading } = useCommand('getUsers', bindings.commands.getUsers); - const { data: defaultUserData, isLoading: defaultUserLoading } = useCommand('getDefaultUser', () => bindings.commands.getDefaultUser(false)); + const { data: usersData, isLoading: usersLoading } = useCommand('getUsers', bindings.core.get_users); + const { data: defaultUserData, isLoading: defaultUserLoading } = useCommand('getDefaultUser', () => bindings.core.get_default_user(false)); if (usersLoading || defaultUserLoading) return ( @@ -67,7 +67,7 @@ function AccountRow({ account, isCurrent }: AccountRowProps) { const setDefaultUserCommand = useCommand( 'setDefaultUser', - () => bindings.commands.setDefaultUser(account.id), + () => bindings.core.set_default_user(account.id), { enabled: false, subscribed: false, @@ -76,7 +76,7 @@ function AccountRow({ account, isCurrent }: AccountRowProps) { const removeUserCommand = useCommand( 'removeUser', - () => bindings.commands.removeUser(account.id), + () => bindings.core.remove_user(account.id), { enabled: false, subscribed: false, diff --git a/apps/onelauncher/frontend/src/routes/app/settings/index.tsx b/apps/onelauncher/frontend/src/routes/app/settings/index.tsx index 3d30952d..292b6070 100644 --- a/apps/onelauncher/frontend/src/routes/app/settings/index.tsx +++ b/apps/onelauncher/frontend/src/routes/app/settings/index.tsx @@ -12,7 +12,7 @@ export const Route = createFileRoute('/app/settings/')({ }); function RouteComponent() { - const result = useCommand('getGlobalProfile', bindings.commands.getGlobalProfile); + const _result = useCommand('getGlobalProfile', bindings.core.get_global_profile); return ( diff --git a/apps/onelauncher/frontend/src/routes/app/settings/minecraft.tsx b/apps/onelauncher/frontend/src/routes/app/settings/minecraft.tsx index 5ee5bef8..9e4e1e8e 100644 --- a/apps/onelauncher/frontend/src/routes/app/settings/minecraft.tsx +++ b/apps/onelauncher/frontend/src/routes/app/settings/minecraft.tsx @@ -1,8 +1,8 @@ import ScrollableContainer from '@/components/ScrollableContainer'; import SettingsRow from '@/components/SettingsRow'; -import { Switch, TextField, ToggleButton } from '@onelauncher/common/components'; +import { Switch, TextField } from '@onelauncher/common/components'; import { createFileRoute } from '@tanstack/react-router'; -import { Database01Icon, EyeIcon, FilePlus02Icon, FileX02Icon, LayoutTopIcon, Maximize01Icon, ParagraphWrapIcon, XIcon } from '@untitled-theme/icons-react'; +import { Database01Icon, FilePlus02Icon, FileX02Icon, LayoutTopIcon, Maximize01Icon, ParagraphWrapIcon, XIcon } from '@untitled-theme/icons-react'; import Sidebar from './route'; export const Route = createFileRoute('/app/settings/minecraft')({ diff --git a/apps/onelauncher/frontend/src/routes/app/settings/route.tsx b/apps/onelauncher/frontend/src/routes/app/settings/route.tsx index 3db5530e..f01d384e 100644 --- a/apps/onelauncher/frontend/src/routes/app/settings/route.tsx +++ b/apps/onelauncher/frontend/src/routes/app/settings/route.tsx @@ -15,19 +15,19 @@ function RouteComponent() { base="/app/settings" links={{ 'Launcher Settings': [ - [, 'General', '/'], - [, 'Appearance', '/appearance'], + [, 'General', '/'], + [, 'Appearance', '/appearance'], // [, 'APIs', '/apis'], // [, 'Language', '/language'], ], 'Game Settings': [ - [, 'Minecraft settings', '/minecraft'], - [, 'Accounts', '/accounts'], + [, 'Minecraft settings', '/minecraft'], + [, 'Accounts', '/accounts'], ], 'About': [ - [, 'Changelog', '/changelog'], - [, 'Feedback', '/feedback'], - [, 'Developer Options', '/developer'], + [, 'Changelog', '/changelog'], + [, 'Feedback', '/feedback'], + [, 'Developer Options', '/developer'], ], }} /> @@ -47,13 +47,15 @@ interface SidebarProps { } function Sidebar(props: SidebarProps) { + const { base, links } = props; + const navigate = useNavigate(); const routerState = useRouterState(); const location = routerState.location.pathname; useEffect(() => { - if (props.base.endsWith('/')) + if (base.endsWith('/')) throw new Error('Base should not end with a slash'); }); @@ -63,24 +65,25 @@ function Sidebar(props: SidebarProps) { for (const [key, value] of params) currParams.set(key, value); - const url = `${props.base}${href}`; + const url = `${base}${href}`; navigate({ to: url }); } function isActive(link: string, _params: URLSearchParams | undefined) { - return location === `${props.base}${link}` || `${location}/` === `${props.base}${link}`; + return location === `${base}${link}` || `${location}/` === `${base}${link}`; } return (
- {Object.keys(props.links).map((section, i) => ( + {Object.keys(links).map((section, i) => (

{section.toUpperCase()}

- {props.links[section].map((link, i) => { + {links[section].map((link, i) => { + // eslint yaps too much tbh if (!link) - return; + return ''; return ( (); const [errorMessage, setErrorMessage] = useState(''); - const result = useCommand('beginMsFlow', bindings.commands.beginMsFlow, { + const result = useCommand('beginMsFlow', bindings.core.open_msa_login, { enabled: false, subscribed: false, }); diff --git a/apps/onelauncher/frontend/src/routes/onboarding/route.tsx b/apps/onelauncher/frontend/src/routes/onboarding/route.tsx index 3152ba5c..9c384732 100644 --- a/apps/onelauncher/frontend/src/routes/onboarding/route.tsx +++ b/apps/onelauncher/frontend/src/routes/onboarding/route.tsx @@ -26,7 +26,7 @@ interface ImportInstancesType { instances: Array; } -interface OnboardingContextType { +interface _OnboardingContextType { setLanguage: (language: Language) => void; language: () => Language; @@ -45,28 +45,18 @@ function RouteComponent() { const currentPath = routerState.location.pathname; const currentStepIndex = steps.findIndex(path => currentPath === path || currentPath.startsWith(path)); - const progressPercentage = currentStepIndex >= 0 && steps.length > 1 + const progressPercentage = currentStepIndex >= 0 ? (currentStepIndex / (steps.length - 1)) * 100 : 0; const handleBack = () => { - console.log('Geri için mevcut yol:', currentPath); - console.log('Geri için mevcut adım indeksi:', currentStepIndex); - if (currentStepIndex > 0) { const previousStep = steps[currentStepIndex - 1]; - console.log('Geri gidiliyor:', previousStep); navigate({ to: previousStep as any }); } - else { - console.log('Zaten ilk adımda veya adım bulunamadı, geri gidilemez.'); - } }; const handleNext = () => { - console.log('İleri için mevcut yol:', currentPath); - console.log('İleri için mevcut adım indeksi:', currentStepIndex); - if (currentStepIndex === -1) { navigate({ to: steps[0] as any }); return; @@ -74,16 +64,11 @@ function RouteComponent() { if (currentStepIndex < steps.length - 1) { const nextStep = steps[currentStepIndex + 1]; - console.log('İleri gidiliyor:', nextStep); navigate({ to: nextStep as any }); } else if (currentStepIndex === steps.length - 1) { - console.log('Onboarding tamamlandı, /app adresine gidiliyor'); navigate({ to: '/app' as any }); } - else { - console.log('Bir sonraki adım belirlenemedi.'); - } }; return ( @@ -121,20 +106,22 @@ export interface OnboardingStepProps { } export function OnboardingStep(props: OnboardingStepProps) { + const { illustration, title, paragraph, children } = props; + return (
- {props.illustration} + {illustration}
-

{props.title}

-

{props.paragraph}

+

{title}

+

{paragraph}

- {props.children} + {children}