diff --git a/apps/desktop/src/api/commands/mod.rs b/apps/desktop/src/api/commands/mod.rs index 59f68ffc..7e89b2c7 100644 --- a/apps/desktop/src/api/commands/mod.rs +++ b/apps/desktop/src/api/commands/mod.rs @@ -89,6 +89,8 @@ macro_rules! collect_commands { get_zulu_packages, install_java_from_package, open_dev_tools, + check_java, + locate_java, ] }}; } @@ -118,6 +120,18 @@ pub async fn get_featured_packages() -> Result Result, String> { + Ok(onelauncher::java::check_java(path).await?) +} + +#[specta::specta] +#[tauri::command] +pub async fn locate_java() -> Result, String> { + Ok(onelauncher::utils::java::locate_java().await.map_err(|e| e.to_string())?) +} + #[specta::specta] #[tauri::command] pub fn get_program_info() -> Result { diff --git a/apps/desktop/tauri.conf.json b/apps/desktop/tauri.conf.json index 223b7253..7b53ec56 100644 --- a/apps/desktop/tauri.conf.json +++ b/apps/desktop/tauri.conf.json @@ -6,7 +6,7 @@ "withGlobalTauri": true, "macOSPrivateApi": true, "security": { - "csp": "img-src 'self' asset: http://asset.localhost", + "csp": null, "assetProtocol": { "enable": true, "scope": { diff --git a/apps/frontend/src/ui/pages/cluster/ClusterSettings.tsx b/apps/frontend/src/ui/pages/cluster/ClusterSettings.tsx index d58bb81a..3317ae9c 100644 --- a/apps/frontend/src/ui/pages/cluster/ClusterSettings.tsx +++ b/apps/frontend/src/ui/pages/cluster/ClusterSettings.tsx @@ -80,7 +80,6 @@ function PageSettings(cluster: Accessor) { @@ -107,6 +106,7 @@ function PageSettings(cluster: Accessor) { javaVersions, javaArgs, envVars, + memory, }} /> diff --git a/apps/frontend/src/ui/pages/settings/game/SettingsMinecraft.tsx b/apps/frontend/src/ui/pages/settings/game/SettingsMinecraft.tsx index fe7b9a8c..1edd963b 100644 --- a/apps/frontend/src/ui/pages/settings/game/SettingsMinecraft.tsx +++ b/apps/frontend/src/ui/pages/settings/game/SettingsMinecraft.tsx @@ -1,8 +1,7 @@ -import type { JavaVersion, JavaVersions, JavaZuluPackage, Memory, Resolution } from '@onelauncher/client/bindings'; -import { ActivityIcon, CpuChip01Icon, Database01Icon, Download01Icon, EyeIcon, FilePlus02Icon, FileX02Icon, LayoutTopIcon, Maximize01Icon, ParagraphWrapIcon, VariableIcon, XIcon } from '@untitled-theme/icons-solid'; +import type { JavaVersion, JavaVersions, Memory, Resolution } from '@onelauncher/client/bindings'; +import { ActivityIcon, CpuChip01Icon, Database01Icon, EyeIcon, FilePlus02Icon, FileX02Icon, FolderSearchIcon, LayoutTopIcon, ListIcon, Maximize01Icon, ParagraphWrapIcon, VariableIcon, XIcon } from '@untitled-theme/icons-solid'; import { bridge } from '~imports'; import Button from '~ui/components/base/Button'; -import Dropdown from '~ui/components/base/Dropdown'; import TextField from '~ui/components/base/TextField'; import Toggle from '~ui/components/base/Toggle'; import Modal, { createModal, type ModalProps } from '~ui/components/overlay/Modal'; @@ -13,6 +12,8 @@ import { tryResult } from '~ui/hooks/useCommand'; import useSettings from '~ui/hooks/useSettings'; import { asEnvVariables } from '~utils'; import { type Accessor, createMemo, createResource, createSignal, For, onMount, type Setter, Show, splitProps, untrack } from 'solid-js'; +import { open } from '@tauri-apps/plugin-dialog'; +import useNotifications from '~ui/hooks/useNotifications'; function SettingsMinecraft() { return ( @@ -106,7 +107,6 @@ function SettingsRow(props: SettingsRowProps & { export function GameSettings(props: { fullscreen: CreateSetting; resolution: CreateSetting; - memory: CreateSetting; }) { return ( <> @@ -150,45 +150,6 @@ export function GameSettings(props: { /> - - {/* TODO: make this a memory slider */} - } - isGlobal={props.memory.isGlobal} - reset={props.memory.resetToFallback} - title="Memory" - > -
-
- Min: - { - props.memory.set({ minimum: Number.parseInt(value), maximum: props.memory.get().maximum }); - }} - value={props.memory.get().minimum} - /> -
- -
- Max: - { - props.memory.set({ minimum: props.memory.get().minimum, maximum: Number.parseInt(value) }); - }} - value={props.memory.get().maximum} - /> -
-
-
); } @@ -298,6 +259,7 @@ export function ProcessSettings(props: { export function JvmSettings(props: { javaArgs: CreateSetting; envVars: CreateSetting<[string, string][]>; + memory: CreateSetting; } & ({ clusterId: string; javaVersion: CreateSetting; @@ -309,11 +271,14 @@ export function JvmSettings(props: { const modal = createModal((controller) => { if (props.javaVersion) return ( - ); else return ( @@ -326,55 +291,21 @@ export function JvmSettings(props: { return ( <> - Java + Java and Memory } isGlobal={() => true} reset={() => {}} - title="Version" + title="Java Version and Memory" >