diff --git a/apps/oneclient/frontend/src/bindings.gen.ts b/apps/oneclient/frontend/src/bindings.gen.ts index 998b373b..f0550dac 100644 --- a/apps/oneclient/frontend/src/bindings.gen.ts +++ b/apps/oneclient/frontend/src/bindings.gen.ts @@ -187,9 +187,9 @@ gallery: string[] } export type SettingProfileModel = { name: string; java_id: number | null; res: Resolution | null; force_fullscreen: boolean | null; mem_max: number | null; launch_args: string | null; launch_env: string | null; hook_pre: string | null; hook_wrapper: string | null; hook_post: string | null; os_extra: SettingsOsExtra | null } -export type Settings = { global_game_settings: SettingProfileModel; allow_parallel_running_clusters: boolean; enable_gamemode: boolean; discord_enabled: boolean; max_concurrent_requests: number; settings_version: number; native_window_frame: boolean } +export type Settings = { global_game_settings: SettingProfileModel; allow_parallel_running_clusters: boolean; enable_gamemode: boolean; discord_enabled: boolean; seen_onboarding: boolean; max_concurrent_requests: number; settings_version: number; native_window_frame: boolean } -export type SettingsOsExtra = { enable_gamemode: boolean | null } +export type SettingsOsExtra = Record export type SkinVariant = "classic" | "slim" @@ -254,10 +254,8 @@ export type VersionType = */ "old_beta" -const ARGS_MAP = { 'events':'{"message":["event"],"process":["event"],"ingress":["event"]}', 'folders':'{"openCluster":["folder_name"],"fromCluster":["folder_name"]}', 'oneclient':'{"getClustersGroupedByMajor":[],"getBundlesFor":["cluster_id"],"openDevTools":[]}', 'core':'{"getLogByName":["id","name"],"getGlobalProfile":[],"getUsers":[],"getPackageVersions":["provider","slug","mc_version","loader","offset","limit"],"updateClusterProfile":["name","profile"],"searchPackages":["provider","query"],"getPackage":["provider","slug"],"launchCluster":["id","uuid"],"installModpack":["modpack","cluster_id"],"writeSettings":["setting"],"convertUsernameUUID":["username_uuid"],"getUsersFromAuthor":["provider","author"],"openMsaLogin":[],"open":["input"],"getClusters":[],"isClusterRunning":["cluster_id"],"getLoadersForVersion":["mc_version"],"getPackageBody":["provider","body"],"fetchMinecraftProfile":["uuid"],"changeSkin":["access_token","skin_url","skin_variant"],"getUser":["uuid"],"createCluster":["options"],"createSettingsProfile":["name"],"getClusterById":["id"],"setDefaultUser":["uuid"],"killProcess":["pid"],"fetchLoggedInProfile":["access_token"],"getRunningProcesses":[],"removeCluster":["id"],"getGameVersions":[],"getWorlds":["id"],"removeUser":["uuid"],"getRunningProcessesByClusterId":["cluster_id"],"updateClusterById":["id","request"],"readSettings":[],"changeCape":["access_token","cape_uuid"],"downloadPackage":["provider","package_id","version_id","cluster_id","skip_compatibility"],"getLogs":["id"],"uploadSkinBytes":["access_token","skin_data","image_format","skin_variant"],"getScreenshots":["id"],"getProfileOrDefault":["name"],"getMultiplePackages":["provider","slugs"],"getDefaultUser":["fallback"],"removeCape":["access_token"]}' } -export type Router = { 'folders': { fromCluster: (folderName: string) => Promise, -openCluster: (folderName: string) => Promise }, -'oneclient': { openDevTools: () => Promise, +const ARGS_MAP = { 'events':'{"message":["event"],"process":["event"],"ingress":["event"]}', 'oneclient':'{"getBundlesFor":["cluster_id"],"openDevTools":[],"getClustersGroupedByMajor":[]}', 'core':'{"updateClusterById":["id","request"],"getClusterById":["id"],"createCluster":["options"],"removeUser":["uuid"],"openMsaLogin":[],"getPackageVersions":["provider","slug","mc_version","loader","offset","limit"],"changeSkin":["access_token","skin_url","skin_variant"],"fetchMinecraftProfile":["uuid"],"removeCluster":["id"],"getProfileOrDefault":["name"],"getUser":["uuid"],"readSettings":[],"installModpack":["modpack","cluster_id"],"launchCluster":["id","uuid"],"fetchLoggedInProfile":["access_token"],"getLogByName":["id","name"],"getRunningProcessesByClusterId":["cluster_id"],"getRunningProcesses":[],"downloadPackage":["provider","package_id","version_id","cluster_id","skip_compatibility"],"getClusters":[],"getGlobalProfile":[],"getUsersFromAuthor":["provider","author"],"createSettingsProfile":["name"],"getPackageBody":["provider","body"],"removeCape":["access_token"],"writeSettings":["setting"],"getDefaultUser":["fallback"],"getWorlds":["id"],"getMultiplePackages":["provider","slugs"],"changeCape":["access_token","cape_uuid"],"searchPackages":["provider","query"],"getPackage":["provider","slug"],"getUsers":[],"getLogs":["id"],"uploadSkinBytes":["access_token","skin_data","image_format","skin_variant"],"convertUsernameUUID":["username_uuid"],"isClusterRunning":["cluster_id"],"open":["input"],"getScreenshots":["id"],"killProcess":["pid"],"setDefaultUser":["uuid"],"updateClusterProfile":["name","profile"],"getLoadersForVersion":["mc_version"],"getGameVersions":[]}', 'folders':'{"openCluster":["folder_name"],"fromCluster":["folder_name"]}' } +export type Router = { 'oneclient': { openDevTools: () => Promise, getClustersGroupedByMajor: () => Promise>, getBundlesFor: (clusterId: number) => Promise }, 'core': { getClusters: () => Promise, @@ -306,7 +304,9 @@ convertUsernameUUID: (usernameUuid: string) => Promise, open: (input: string) => Promise }, 'events': { ingress: (event: IngressPayload) => Promise, message: (event: MessagePayload) => Promise, -process: (event: ProcessPayload) => Promise } }; +process: (event: ProcessPayload) => Promise }, +'folders': { fromCluster: (folderName: string) => Promise, +openCluster: (folderName: string) => Promise } }; export type { InferCommandOutput } diff --git a/apps/oneclient/frontend/src/routes/app/settings/developer.tsx b/apps/oneclient/frontend/src/routes/app/settings/developer.tsx index 31448c8c..ad624c96 100644 --- a/apps/oneclient/frontend/src/routes/app/settings/developer.tsx +++ b/apps/oneclient/frontend/src/routes/app/settings/developer.tsx @@ -1,4 +1,6 @@ import SettingsRow from '@/components/SettingsRow'; +import SettingsSwitch from '@/components/SettingSwitch'; +import { useSettings } from '@/hooks/useSettings'; import { Button } from '@onelauncher/common/components'; import { createFileRoute, Link } from '@tanstack/react-router'; import { Truck01Icon } from '@untitled-theme/icons-react'; @@ -9,21 +11,30 @@ export const Route = createFileRoute('/app/settings/developer')({ }); function RouteComponent() { + const { createSetting } = useSettings(); + return (
-

General

+

Onboarding

- Folders and Files } - title="Onboarding" + title="Open Onboarding" > + } + title="Seen Onboarding" + > + + +
); diff --git a/apps/oneclient/frontend/src/routes/index.tsx b/apps/oneclient/frontend/src/routes/index.tsx index d7d99a9d..bc128785 100644 --- a/apps/oneclient/frontend/src/routes/index.tsx +++ b/apps/oneclient/frontend/src/routes/index.tsx @@ -1,3 +1,4 @@ +import { useSettings } from '@/hooks/useSettings'; import { createFileRoute, Navigate } from '@tanstack/react-router'; export const Route = createFileRoute('/')({ @@ -5,5 +6,9 @@ export const Route = createFileRoute('/')({ }); function RouteComponent() { + const { setting } = useSettings(); + if (setting('seen_onboarding') === false) + return ; + return ; } diff --git a/apps/oneclient/frontend/src/routes/onboarding/finished.tsx b/apps/oneclient/frontend/src/routes/onboarding/finished.tsx index d9a7b77b..6a5864cb 100644 --- a/apps/oneclient/frontend/src/routes/onboarding/finished.tsx +++ b/apps/oneclient/frontend/src/routes/onboarding/finished.tsx @@ -1,3 +1,4 @@ +import { useSettings } from '@/hooks/useSettings'; import { createFileRoute, Link } from '@tanstack/react-router'; export const Route = createFileRoute('/onboarding/finished')({ @@ -5,6 +6,9 @@ export const Route = createFileRoute('/onboarding/finished')({ }); function RouteComponent() { + const { setSetting } = useSettings(); + setSetting('seen_onboarding', true) + return (
diff --git a/packages/core/src/store/settings.rs b/packages/core/src/store/settings.rs index 72d6732a..f9b93fec 100644 --- a/packages/core/src/store/settings.rs +++ b/packages/core/src/store/settings.rs @@ -14,6 +14,7 @@ pub struct Settings { pub allow_parallel_running_clusters: bool, pub enable_gamemode: bool, pub discord_enabled: bool, + pub seen_onboarding: bool, pub max_concurrent_requests: usize, pub settings_version: u32, pub native_window_frame: bool, @@ -25,6 +26,7 @@ impl Default for Settings { global_game_settings: setting_profiles::Model::default_global_profile(), allow_parallel_running_clusters: false, discord_enabled: false, + seen_onboarding: false, enable_gamemode: false, max_concurrent_requests: 25, settings_version: 1,