1
0

added settings API + fixed bug (#62)

* added settings API + fixed bug

* removed redundant API funcs

* comment clarifications

---------

Co-authored-by: Wyatt <wyatt@modrinth.com>
This commit is contained in:
Wyatt Verchere
2023-04-03 13:46:04 -07:00
committed by GitHub
parent 6a05276a21
commit a13b7a2566
12 changed files with 140 additions and 22 deletions

View File

@@ -14,7 +14,8 @@ import { invoke } from '@tauri-apps/api/tauri'
// }
/// Authenticate a user with Hydra - part 1
/// This begins the authentication flow quasi-synchronously, returning a URL to visit (that the user will sign in at)
/// This begins the authentication flow quasi-synchronously
/// This returns a URL to be opened in a browser
export async function authenticate_begin_flow() {
return await invoke('auth_authenticate_begin_flow')
}
@@ -22,30 +23,34 @@ export async function authenticate_begin_flow() {
/// Authenticate a user with Hydra - part 2
/// This completes the authentication flow quasi-synchronously, returning the sign-in credentials
/// (and also adding the credentials to the state)
/// This returns a Credentials object
export async function authenticate_await_completion() {
return await invoke('auth_authenticate_await_completion')
}
/// Refresh some credentials using Hydra, if needed
// user is UUID
// update_name is bool
/// user is UUID
/// update_name is bool
/// Returns a Credentials object
export async function refresh(user, update_name) {
return await invoke('auth_refresh', user, update_name)
return await invoke('auth_refresh', { user, update_name })
}
/// Remove a user account from the database
// user is UUID
/// user is UUID
export async function remove_user(user) {
return await invoke('auth_remove_user', user)
return await invoke('auth_remove_user', { user })
}
// Add a path as a profile in-memory
// user is UUID
/// Returns a bool
export async function has_user(user) {
return await invoke('auth_has_user', user)
return await invoke('auth_has_user', { user })
}
// Remove a profile
/// Returns a list of users
/// Returns an Array of Credentials
export async function users() {
return await invoke('auth_users')
}
@@ -53,6 +58,7 @@ export async function users() {
// Get a user by UUID
// Prefer to use refresh() instead of this because it will refresh the credentials
// user is UUID
// Returns Credentials (of user)
export async function get_user(user) {
return await invoke('auth_get_user', user)
return await invoke('auth_get_user', { user })
}

View File

@@ -10,42 +10,47 @@ export async function addDefaultInstance() {
return await invoke('profile_create_empty')
}
// Add empty default instance
/// Add empty default instance
/// Returns a path to the profile created
export async function create() {
return await invoke('profile_create')
}
// Add a profile to the in-memory state
export async function add(profile) {
return await invoke('profile_add', profile)
return await invoke('profile_add', { profile })
}
// Add a path as a profile in-memory
export async function add_path(path) {
return await invoke('profile_add_path', path)
return await invoke('profile_add_path', { path })
}
// Remove a profile
export async function remove(path) {
return await invoke('profile_remove', path)
return await invoke('profile_remove', { path })
}
// Get a profile by path
// Returns a Profile
export async function get(path) {
return await invoke('profile_get', path)
return await invoke('profile_get', { path })
}
// Check if a pathed profile is already managed by Theseus
// Returns bool
export async function is_managed(path) {
return await invoke('profile_is_managed', path)
return await invoke('profile_is_managed', { path })
}
// Check if a pathed profile is loaded
// Returns bool
export async function is_loaded(path) {
return await invoke('profile_is_loaded', path)
return await invoke('profile_is_loaded', { path })
}
// Get a copy of the profile set
// Returns hashmap of path -> Profile
export async function list() {
return await invoke('profile_list')
}
@@ -53,21 +58,21 @@ export async function list() {
// Run Minecraft using a pathed profile
// Returns PID of child
export async function run(path, credentials) {
return await invoke('profile_run', path, credentials)
return await invoke('profile_run', { path, credentials })
}
// Run Minecraft using a pathed profile
// Waits for end
export async function run_wait(path, credentials) {
return await invoke('run_wait', path, credentials)
return await invoke('profile_run_wait', { path, credentials })
}
// Tries to kill a running minecraft process (if PID is still stored)
export async function kill(child_pid) {
return await invoke('profile_kill', child_pid)
return await invoke('profile_kill', { child_pid })
}
// Wait for a running minecraft process (a Child)
export async function wait_for(child_pid) {
return await invoke('profile_wait_for', child_pid)
return await invoke('profile_wait_for', { child_pid })
}

View File

@@ -0,0 +1,53 @@
/**
* 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/tauri'
// Settings object
/*
Settings {
"memory": MemorySettings,
"game_resolution": [int int],
"custom_java_args": [String ...],
"custom_env_args" : [(string, string) ... ]>,
"java_8_path": Path (can be null),
"java_17_path": Path (can be null),
"default_user": Uuid string (can be null),
"hooks": Hooks,
"max_concurrent_downloads": uint,
"version": u32,
}
Memorysettings {
"min": u32, can be null,
"max": u32,
}
*/
// An example test function for getting/setting settings
export async function test() {
// First, print settings and store them to an object
let settings = await get()
console.log(JSON.stringify(settings))
// Then set some random settings in that object
settings.java_8_path = '/example/path'
// Set the new settings object
await set(settings)
console.log(JSON.stringify(await get()))
}
// Get full settings object
export async function get() {
return await invoke('settings_get')
}
// Set full settings object
export async function set(settings) {
return await invoke('settings_set', { settings })
}