diff --git a/apps/onelauncher/frontend/src/routes/app/cluster/index.tsx b/apps/onelauncher/frontend/src/routes/app/cluster/index.tsx
index 0462136f..b5d1debe 100644
--- a/apps/onelauncher/frontend/src/routes/app/cluster/index.tsx
+++ b/apps/onelauncher/frontend/src/routes/app/cluster/index.tsx
@@ -168,7 +168,7 @@ function Banner({
const image = () => {
const url = cluster?.icon_url;
- if (url === undefined || url === null)
+ if (!url)
return DefaultInstancePhoto;
return convertFileSrc(url);
@@ -188,6 +188,7 @@ function Banner({
{/* */}
{
(e.target as HTMLImageElement).src = DefaultInstancePhoto;
}}
diff --git a/apps/onelauncher/frontend/src/routes/app/dev.tsx b/apps/onelauncher/frontend/src/routes/app/dev.tsx
index f86582e6..c7045a91 100644
--- a/apps/onelauncher/frontend/src/routes/app/dev.tsx
+++ b/apps/onelauncher/frontend/src/routes/app/dev.tsx
@@ -54,10 +54,12 @@ function RouteComponent() {
-
- Slmalr
- Slmalr 2
-
+
diff --git a/apps/onelauncher/frontend/src/routes/app/settings/index.tsx b/apps/onelauncher/frontend/src/routes/app/settings/index.tsx
index 4e41866e..18b5f368 100644
--- a/apps/onelauncher/frontend/src/routes/app/settings/index.tsx
+++ b/apps/onelauncher/frontend/src/routes/app/settings/index.tsx
@@ -1,13 +1,11 @@
import DiscordIcon from '@/assets/logos/discord.svg';
import SettingsRow from '@/components/SettingsRow';
-import usePopState from '@/hooks/usePopState';
-import { bindings } from '@/main';
-import { useCommand } from '@onelauncher/common';
+import useSettings from '@/hooks/useSettings';
import { Button, Switch } from '@onelauncher/common/components';
import { createFileRoute } from '@tanstack/react-router';
import { dataDir } from '@tauri-apps/api/path';
import { openPath as open } from '@tauri-apps/plugin-opener';
-import { FolderIcon, LinkExternal01Icon, XIcon } from '@untitled-theme/icons-react';
+import { FolderIcon, LinkExternal01Icon } from '@untitled-theme/icons-react';
import Sidebar from './route';
export const Route = createFileRoute('/app/settings/')({
@@ -15,16 +13,7 @@ export const Route = createFileRoute('/app/settings/')({
});
function RouteComponent() {
- const result = useCommand('readSettings', bindings.core.readSettings);
-
- const save = useCommand('writeSettings', () => bindings.core.writeSettings(result.data!), {
- enabled: false,
- subscribed: false,
- });
-
- usePopState(() => {
- save.refetch();
- });
+ const { settings, createSetting } = useSettings();
const openLauncherDir = async () => {
const dir = await dataDir();
@@ -32,6 +21,8 @@ function RouteComponent() {
open(`${dir}/OneLauncher`);
};
+ const [discordRpc, setDiscordRpc] = createSetting('discord_enabled', settings?.discord_enabled);
+
return (
@@ -43,15 +34,12 @@ function RouteComponent() {
title="Discord RPC"
>
{
- if (result.data)
- result.data.discord_enabled = val;
- }}
+ defaultSelected={discordRpc}
+ onChange={val => setDiscordRpc(val)}
/>
- }
title="Hide Close Dialog"
@@ -59,7 +47,7 @@ function RouteComponent() {
- {/* }
title="Error Analytics"
diff --git a/apps/onelauncher/frontend/src/routes/app/settings/minecraft.tsx b/apps/onelauncher/frontend/src/routes/app/settings/minecraft.tsx
index 7530c688..740880be 100644
--- a/apps/onelauncher/frontend/src/routes/app/settings/minecraft.tsx
+++ b/apps/onelauncher/frontend/src/routes/app/settings/minecraft.tsx
@@ -105,7 +105,7 @@ export function GameSettings(props: GameSettingProps) {
settings.mem_max = Number(e.target.value);
}}
type="number"
- value={settings.mem_max ?? 2048}
+ value={settings.mem_max?.toString()}
/>
diff --git a/packages/core/src/api/cluster/dao.rs b/packages/core/src/api/cluster/dao.rs
index ad2d7bf7..4672be45 100644
--- a/packages/core/src/api/cluster/dao.rs
+++ b/packages/core/src/api/cluster/dao.rs
@@ -3,7 +3,7 @@ use std::path::Path;
use onelauncher_entity::{cluster_groups, clusters, icon::Icon, loader::GameLoader};
use sea_orm::{ActiveValue::Set, IntoActiveModel, prelude::*};
-use crate::{error::{DaoError, LauncherResult}, store::State};
+use crate::{error::{DaoError, LauncherResult}, store::State, utils::io};
pub type ClusterId = i64;
@@ -142,3 +142,71 @@ pub async fn get_clusters_grouped() -> LauncherResult