You've already forked AstralRinth
* Make theseus capable of logging messages from the `log` crate * Move update checking entirely into JS and open a modal if an update is available * Fix formatjs on Windows and run formatjs * Add in the buttons and body * Fix lint * Show update size in modal * Fix update not being rechecked if the update modal was directly dismissed * Slight UI tweaks * Fix lint * Implement skipping the update * Implement the Update Now button * Implement updating at next exit * Turn download progress into an error bar on failure * Restore 5 minute update check instead of 30 seconds * Fix PendingUpdateData being seen as a unit struct * Fix lint * Make CI also lint updater code * feat: create AppearingProgressBar component * feat: polish update available modal * feat: add error handling * Open changelog with tauri-plugin-opener * Run intl:extract * Update completion toasts (#3978) * Use single LAUNCHER_USER_AGENT constant for all user agents * Fix build on Mac * Request the update size with HEAD instead of GET * UI tweaks * lint * Fix lint * fix: hide modal header & add "Hide update reminder" button w/ tooltip * Run intl:extract * fix: lint issues * fix: merge issues * notifications.js no longer exists * Add metered network checking * Add a timeout to macOS is_network_metered * Fix tauri.conf.json * vibe debugging * Set a dispatch queue * Have a popup that asks you if you'd like to disable automatic file downloads if you're on a metered network * Move UpdateModal to modal package * Fix lint * Add a toggle for automatic downloads * Fix type Co-authored-by: Alejandro González <7822554+AlexTMjugador@users.noreply.github.com> Signed-off-by: Josiah Glosson <soujournme@gmail.com> * Redo updating UI and experience * lint * fix unlistener issue * remove unneeded translation keys * Fix expose issue * temp disable cranelift, tweak some messages * change version back * Clean up App.vue * move toast to top right * update reload icon * Fixed the bug!!!!!!!!!!!! * improve messages * intl:extract * Add liquid glass icon file * not you! * use dependency injection * lint on apple icon * Fix imports, move download size to button * change update check back to 5 mins * lint + move to providers * intl:extract --------- Signed-off-by: Cal H. <hendersoncal117@gmail.com> Signed-off-by: Josiah Glosson <soujournme@gmail.com> Co-authored-by: Calum <calum@modrinth.com> Co-authored-by: Prospector <prospectordev@gmail.com> Co-authored-by: Cal H. <hendersoncal117@gmail.com> Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com> Co-authored-by: Alejandro González <7822554+AlexTMjugador@users.noreply.github.com>
85 lines
2.1 KiB
TypeScript
85 lines
2.1 KiB
TypeScript
/**
|
|
* All theseus API calls return serialized values (both return values and errors);
|
|
* So, for example, addDefaultInstance creates a blank Profile object, where the Rust struct is serialized,
|
|
* and deserialized into a usable JS object.
|
|
*/
|
|
import { invoke } from '@tauri-apps/api/core'
|
|
|
|
import type { Hooks, MemorySettings, WindowSize } from '@/helpers/types'
|
|
import type { ColorTheme, FeatureFlag } from '@/store/theme.ts'
|
|
|
|
// Settings object
|
|
/*
|
|
|
|
Settings {
|
|
"memory": MemorySettings,
|
|
"game_resolution": [int int],
|
|
"custom_java_args": [String ...],
|
|
"custom_env_args" : [(string, string) ... ]>,
|
|
"java_globals": Hash of (string, Path),
|
|
"default_user": Uuid string (can be null),
|
|
"hooks": Hooks,
|
|
"max_concurrent_downloads": uint,
|
|
"version": u32,
|
|
"collapsed_navigation": bool,
|
|
}
|
|
|
|
Memorysettings {
|
|
"min": u32, can be null,
|
|
"max": u32,
|
|
}
|
|
|
|
*/
|
|
|
|
export type AppSettings = {
|
|
max_concurrent_downloads: number
|
|
max_concurrent_writes: number
|
|
|
|
theme: ColorTheme
|
|
default_page: 'home' | 'library'
|
|
collapsed_navigation: boolean
|
|
hide_nametag_skins_page: boolean
|
|
advanced_rendering: boolean
|
|
native_decorations: boolean
|
|
toggle_sidebar: boolean
|
|
|
|
telemetry: boolean
|
|
discord_rpc: boolean
|
|
personalized_ads: boolean
|
|
|
|
onboarded: boolean
|
|
|
|
extra_launch_args: string[]
|
|
custom_env_vars: [string, string][]
|
|
memory: MemorySettings
|
|
force_fullscreen: boolean
|
|
game_resolution: WindowSize
|
|
hide_on_process_start: boolean
|
|
hooks: Hooks
|
|
|
|
custom_dir?: string | null
|
|
prev_custom_dir?: string | null
|
|
migrated: boolean
|
|
|
|
developer_mode: boolean
|
|
feature_flags: Record<FeatureFlag, boolean>
|
|
|
|
skipped_update: string | null
|
|
pending_update_toast_for_version: string | null
|
|
auto_download_updates: boolean | null
|
|
}
|
|
|
|
// Get full settings object
|
|
export async function get() {
|
|
return (await invoke('plugin:settings|settings_get')) as AppSettings
|
|
}
|
|
|
|
// Set full settings object
|
|
export async function set(settings: AppSettings) {
|
|
return await invoke('plugin:settings|settings_set', { settings })
|
|
}
|
|
|
|
export async function cancel_directory_change(): Promise<void> {
|
|
return await invoke('plugin:settings|cancel_directory_change')
|
|
}
|