From da54c6adc751e7e6795d6f817049c5b58eaac297 Mon Sep 17 00:00:00 2001 From: LynithDev <61880709+LynithDev@users.noreply.github.com> Date: Sat, 14 Dec 2024 16:27:42 +0100 Subject: [PATCH] fix: Notification tweaks --- .../notifications/NotificationComponent.tsx | 5 +- .../src/ui/hooks/useNotifications.tsx | 11 + packages/client/src/bindings.ts | 1761 ++++++++--------- 3 files changed, 837 insertions(+), 940 deletions(-) diff --git a/apps/frontend/src/ui/components/overlay/notifications/NotificationComponent.tsx b/apps/frontend/src/ui/components/overlay/notifications/NotificationComponent.tsx index d7d78db..6c6dd00 100644 --- a/apps/frontend/src/ui/components/overlay/notifications/NotificationComponent.tsx +++ b/apps/frontend/src/ui/components/overlay/notifications/NotificationComponent.tsx @@ -67,9 +67,10 @@ function NotificationOverlayComponent(props: NotificationComponentProps) { return (
onEnter()} onMouseLeave={() => onLeave()} + onMouseUp={() => hide()} >
@@ -112,7 +113,7 @@ function NotificationPopupComponent(props: NotificationComponentProps) {
-
+
{ + document.addEventListener('keypress', (e) => { + if (e.key === 'n') + setNotifications(notifications => ({ + ...notifications, + [Math.random().toString()]: { + title: 'Test', + message: 'This is a test notification', + }, + })); + }); + events.ingressPayload.listen((e) => { setNotifications(notifications => ({ ...notifications, diff --git a/packages/client/src/bindings.ts b/packages/client/src/bindings.ts index 75c3ee5..e3c2287 100644 --- a/packages/client/src/bindings.ts +++ b/packages/client/src/bindings.ts @@ -1,1168 +1,1053 @@ -// This file was generated by [tauri-specta](https://github.com/oscartbeaumont/tauri-specta). Do not edit this file manually. -/** user-defined commands */ +// This file was generated by [tauri-specta](https://github.com/oscartbeaumont/tauri-specta). Do not edit this file manually. -/** tauri-specta globals */ +/** user-defined commands **/ -import type { WebviewWindow as __WebviewWindow__ } from '@tauri-apps/api/webviewWindow'; -import { - invoke as TAURI_INVOKE, -} from '@tauri-apps/api/core'; -import * as TAURI_API_EVENT from '@tauri-apps/api/event'; export const commands = { - async authLogin(): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('auth_login') }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async getUsers(): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('get_users') }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async getUser(uuid: string): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('get_user', { uuid }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async getDefaultUser(fallback: boolean | null): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('get_default_user', { fallback }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async setDefaultUser(uuid: string | null): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('set_default_user', { uuid }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async removeUser(uuid: string): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('remove_user', { uuid }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async createCluster(props: CreateCluster): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('create_cluster', { props }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - /** - * Updates the cluster with the given UUID. The cluster only updates game setting fields - */ - async editGameSettings(uuid: string, newCluster: Cluster): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('edit_game_settings', { uuid, newCluster }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async editClusterMeta(uuid: string, name: string | null, iconPath: string | null): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('edit_cluster_meta', { uuid, name, iconPath }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async removeCluster(uuid: string): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('remove_cluster', { uuid }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async getCluster(uuid: string): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('get_cluster', { uuid }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async getClusters(): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('get_clusters') }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async getClustersGrouped(): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('get_clusters_grouped') }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async runCluster(uuid: string): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('run_cluster', { uuid }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async getClusterLogs(uuid: string): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('get_cluster_logs', { uuid }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async getClusterLog(uuid: string, logName: string): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('get_cluster_log', { uuid, logName }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async uploadLog(uuid: string, logName: string): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('upload_log', { uuid, logName }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async getScreenshots(uuid: string): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('get_screenshots', { uuid }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async getWorlds(uuid: string): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('get_worlds', { uuid }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async getOptimalJavaVersion(clusterId: string): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('get_optimal_java_version', { clusterId }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async getRunningClusters(): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('get_running_clusters') }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async getProcessesByPath(path: ClusterPath): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('get_processes_by_path', { path }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async killProcess(uuid: string): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('kill_process', { uuid }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async isClusterRunning(uuid: string): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('is_cluster_running', { uuid }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async getPidByUuid(uuid: string): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('get_pid_by_uuid', { uuid }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async getUserByProcess(uuid: string): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('get_user_by_process', { uuid }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async getProcessStartedAt(uuid: string): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('get_process_started_at', { uuid }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async getProcessesDetailedByPath(path: ClusterPath): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('get_processes_detailed_by_path', { path }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async getProcessDetailedById(uuid: string): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('get_process_detailed_by_id', { uuid }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async getSettings(): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('get_settings') }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async setSettings(settings: Settings): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('set_settings', { settings }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async getMinecraftVersions(): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('get_minecraft_versions') }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async getLauncherInstances(launcher: ImportType, path: string | null): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('get_launcher_instances', { launcher, path }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async importInstances(launcher: ImportType, basePath: string, instances: string[]): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('import_instances', { launcher, basePath, instances }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async getProviderPackage(provider: Providers, projectId: string): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('get_provider_package', { provider, projectId }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async getProviderPackages(provider: Providers, projectIds: string[]): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('get_provider_packages', { provider, projectIds }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async getAllProviderPackageVersions(provider: Providers, projectId: string, gameVersions: string[] | null, loaders: Loader[] | null, page: number | null, pageSize: number | null): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('get_all_provider_package_versions', { provider, projectId, gameVersions, loaders, page, pageSize }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async getProviderPackageVersions(provider: Providers, versions: string[]): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('get_provider_package_versions', { provider, versions }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async searchProviderPackages(provider: Providers, query: ProviderSearchQuery): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('search_provider_packages', { provider, query }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async getProviderAuthors(provider: Providers, author: Author): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('get_provider_authors', { provider, author }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async getPackageBody(provider: Providers, body: PackageBody): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('get_package_body', { provider, body }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async downloadProviderPackage(provider: Providers, packageId: string, clusterId: string, gameVersion: string | null, loader: Loader | null, packageVersion: string | null): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('download_provider_package', { provider, packageId, clusterId, gameVersion, loader, packageVersion }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async getClusterPackage(clusterPath: ClusterPath, packagePath: PackagePath, packageType: PackageType): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('get_cluster_package', { clusterPath, packagePath, packageType }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async getClusterPackages(clusterPath: ClusterPath, packageType: PackageType): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('get_cluster_packages', { clusterPath, packageType }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async addClusterPackage(clusterPath: ClusterPath, packagePath: PackagePath, pkg: Package, packageType: PackageType | null): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('add_cluster_package', { clusterPath, packagePath, pkg, packageType }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async removeClusterPackage(clusterPath: ClusterPath, packagePath: PackagePath, packageType: PackageType): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('remove_cluster_package', { clusterPath, packagePath, packageType }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async syncClusterPackages(clusterPath: ClusterPath): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('sync_cluster_packages', { clusterPath }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async syncClusterPackagesByType(clusterPath: ClusterPath, packageType: PackageType, clear: boolean | null): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('sync_cluster_packages_by_type', { clusterPath, packageType, clear }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async checkForUpdate(): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('check_for_update') }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async installUpdate(): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('install_update') }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async setWindowStyle(custom: boolean): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('set_window_style', { custom }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async getProgramInfo(): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('get_program_info') }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async getFeaturedPackages(): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('get_featured_packages') }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async getZuluPackages(): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('get_zulu_packages') }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, - async installJavaFromPackage(download: JavaZuluPackage): Promise> { - try { - return { status: 'ok', data: await TAURI_INVOKE('install_java_from_package', { download }) }; - } - catch (e) { - if (e instanceof Error) - throw e; - else return { status: 'error', error: e as any }; - } - }, -}; +async authLogin() : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("auth_login") }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getUsers() : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("get_users") }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getUser(uuid: string) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("get_user", { uuid }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getDefaultUser(fallback: boolean | null) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("get_default_user", { fallback }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async setDefaultUser(uuid: string | null) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("set_default_user", { uuid }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async removeUser(uuid: string) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("remove_user", { uuid }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async createCluster(props: CreateCluster) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("create_cluster", { props }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +/** + * Updates the cluster with the given UUID. The cluster only updates game setting fields + */ +async editGameSettings(uuid: string, newCluster: Cluster) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("edit_game_settings", { uuid, newCluster }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async editClusterMeta(uuid: string, name: string | null, iconPath: string | null) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("edit_cluster_meta", { uuid, name, iconPath }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async removeCluster(uuid: string) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("remove_cluster", { uuid }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getCluster(uuid: string) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("get_cluster", { uuid }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getClusters() : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("get_clusters") }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getClustersGrouped() : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("get_clusters_grouped") }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async runCluster(uuid: string) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("run_cluster", { uuid }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getClusterLogs(uuid: string) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("get_cluster_logs", { uuid }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getClusterLog(uuid: string, logName: string) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("get_cluster_log", { uuid, logName }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async uploadLog(uuid: string, logName: string) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("upload_log", { uuid, logName }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getScreenshots(uuid: string) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("get_screenshots", { uuid }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getWorlds(uuid: string) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("get_worlds", { uuid }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getOptimalJavaVersion(clusterId: string) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("get_optimal_java_version", { clusterId }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getRunningClusters() : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("get_running_clusters") }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getProcessesByPath(path: ClusterPath) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("get_processes_by_path", { path }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async killProcess(uuid: string) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("kill_process", { uuid }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async isClusterRunning(uuid: string) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("is_cluster_running", { uuid }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getPidByUuid(uuid: string) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("get_pid_by_uuid", { uuid }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getUserByProcess(uuid: string) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("get_user_by_process", { uuid }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getProcessStartedAt(uuid: string) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("get_process_started_at", { uuid }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getProcessesDetailedByPath(path: ClusterPath) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("get_processes_detailed_by_path", { path }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getProcessDetailedById(uuid: string) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("get_process_detailed_by_id", { uuid }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getSettings() : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("get_settings") }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async setSettings(settings: Settings) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("set_settings", { settings }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getMinecraftVersions() : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("get_minecraft_versions") }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getLauncherInstances(launcher: ImportType, path: string | null) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("get_launcher_instances", { launcher, path }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async importInstances(launcher: ImportType, basePath: string, instances: string[]) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("import_instances", { launcher, basePath, instances }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getProviderPackage(provider: Providers, projectId: string) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("get_provider_package", { provider, projectId }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getProviderPackages(provider: Providers, projectIds: string[]) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("get_provider_packages", { provider, projectIds }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getAllProviderPackageVersions(provider: Providers, projectId: string, gameVersions: string[] | null, loaders: Loader[] | null, page: number | null, pageSize: number | null) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("get_all_provider_package_versions", { provider, projectId, gameVersions, loaders, page, pageSize }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getProviderPackageVersions(provider: Providers, versions: string[]) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("get_provider_package_versions", { provider, versions }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async searchProviderPackages(provider: Providers, query: ProviderSearchQuery) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("search_provider_packages", { provider, query }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getProviderAuthors(provider: Providers, author: Author) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("get_provider_authors", { provider, author }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getPackageBody(provider: Providers, body: PackageBody) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("get_package_body", { provider, body }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async downloadProviderPackage(provider: Providers, packageId: string, clusterId: string, gameVersion: string | null, loader: Loader | null, packageVersion: string | null) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("download_provider_package", { provider, packageId, clusterId, gameVersion, loader, packageVersion }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getClusterPackage(clusterPath: ClusterPath, packagePath: PackagePath, packageType: PackageType) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("get_cluster_package", { clusterPath, packagePath, packageType }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getClusterPackages(clusterPath: ClusterPath, packageType: PackageType) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("get_cluster_packages", { clusterPath, packageType }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async addClusterPackage(clusterPath: ClusterPath, packagePath: PackagePath, pkg: Package, packageType: PackageType | null) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("add_cluster_package", { clusterPath, packagePath, pkg, packageType }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async removeClusterPackage(clusterPath: ClusterPath, packagePath: PackagePath, packageType: PackageType) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("remove_cluster_package", { clusterPath, packagePath, packageType }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async syncClusterPackages(clusterPath: ClusterPath) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("sync_cluster_packages", { clusterPath }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async syncClusterPackagesByType(clusterPath: ClusterPath, packageType: PackageType, clear: boolean | null) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("sync_cluster_packages_by_type", { clusterPath, packageType, clear }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async checkForUpdate() : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("check_for_update") }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async installUpdate() : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("install_update") }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async setWindowStyle(custom: boolean) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("set_window_style", { custom }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getProgramInfo() : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("get_program_info") }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getFeaturedPackages() : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("get_featured_packages") }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getZuluPackages() : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("get_zulu_packages") }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async installJavaFromPackage(download: JavaZuluPackage) : Promise> { + try { + return { status: "ok", data: await TAURI_INVOKE("install_java_from_package", { download }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +} +} + +/** user-defined events **/ -/** user-defined events */ export const events = __makeEvents__<{ - clusterPayload: ClusterPayload; - ingressPayload: IngressPayload; - internetPayload: InternetPayload; - messagePayload: MessagePayload; - offlinePayload: OfflinePayload; - processPayload: ProcessPayload; +clusterPayload: ClusterPayload, +ingressPayload: IngressPayload, +internetPayload: InternetPayload, +messagePayload: MessagePayload, +offlinePayload: OfflinePayload, +processPayload: ProcessPayload }>({ - clusterPayload: 'cluster-payload', - ingressPayload: 'ingress-payload', - internetPayload: 'internet-payload', - messagePayload: 'message-payload', - offlinePayload: 'offline-payload', - processPayload: 'process-payload', -}); +clusterPayload: "cluster-payload", +ingressPayload: "ingress-payload", +internetPayload: "internet-payload", +messagePayload: "message-payload", +offlinePayload: "offline-payload", +processPayload: "process-payload" +}) -/** user-defined constants */ +/** user-defined constants **/ -/** user-defined types */ -export type Author = { Team: { team: string; organization: string | null } } | { Users: ManagedUser[] }; + +/** user-defined types **/ + +export type Author = { Team: { team: string; organization: string | null } } | { Users: ManagedUser[] } /** * `OneLauncher` browser list type. */ -export type BrowserListView = 'grid' | 'list'; +export type BrowserListView = "grid" | "list" /** * Represents a single Instance and installation of Minecraft * Contains settings and identifiers on a per-Cluster basis, falling back to default settings for Options<> */ -export interface Cluster { +export type Cluster = { /** * The Uuid of a specific cluster. */ - uuid: string; - /** - * The download stage that of a cluster. - */ - stage?: ClusterStage; - /** - * The core path of the cluster. - */ - path?: string; - /** - * The associated cluster metadata. - */ - meta: ClusterMeta; - /** - * The per-cluster JVM memory allocation options. - */ - memory?: Memory | null; - /** - * The per-cluster JVM options. - */ - java?: JavaOptions | null; - /** - * The per-cluster Minecraft window default resolution. - */ - resolution?: Resolution | null; - /** - * The per-cluster Minecraft window fullscreen status. - */ - force_fullscreen: boolean | null; - init_hooks?: InitHooks | null; -}; +uuid: string; +/** + * The download stage that of a cluster. + */ +stage?: ClusterStage; +/** + * The core path of the cluster. + */ +path?: string; +/** + * The associated cluster metadata. + */ +meta: ClusterMeta; +/** + * The per-cluster JVM memory allocation options. + */ +memory?: Memory | null; +/** + * The per-cluster JVM options. + */ +java?: JavaOptions | null; +/** + * The per-cluster Minecraft window default resolution. + */ +resolution?: Resolution | null; +/** + * The per-cluster Minecraft window fullscreen status. + */ +force_fullscreen: boolean | null; init_hooks?: InitHooks | null } /** * Represents core Cluster metadata ([`Cluster#meta`]). */ -export interface ClusterMeta { +export type ClusterMeta = { /** * The user-facing name of the cluster stored as a string. */ - name: string; - /** - * The user-facing group of the cluster stored as a string. - */ - group?: string | null; - /** - * The associated Minecraft version of the cluster as last updated. - */ - mc_version: string; - /** - * The associated mod [`Loader`] as specified in the cluster. - */ - loader?: Loader; - /** - * The associated mod [`LoaderVersion`] if available. - */ - loader_version?: LoaderVersion | null; - /** - * The time that the cluster was created in [`DateTime`]. - */ - created_at?: string; - /** - * The time the cluster was last modified in [`DateTime`]. - */ - modified_at?: string; - /** - * The last time the cluster was played in [`DateTime`]. - * (Defaults to None if the cluster has never been played) - */ - played_at?: string | null; - /** - * The overall time played in seconds stored as a [`u64`]. - */ - overall_played?: bigint; - /** - * The recent time played stored as a [`u64`]. - */ - recently_played?: bigint; - /** - * The associated [`PackageData`] and modpack data for the cluster. - */ - package_data?: PackageData | null; - /** - * The user-facing cluster icon as a [`PathBuf`]. - */ - icon?: string | null; - /** - * The user-facing cluster icon as a URL string. - */ - icon_url?: string | null; -}; +name: string; +/** + * The user-facing group of the cluster stored as a string. + */ +group?: string | null; +/** + * The associated Minecraft version of the cluster as last updated. + */ +mc_version: string; +/** + * The associated mod [`Loader`] as specified in the cluster. + */ +loader?: Loader; +/** + * The associated mod [`LoaderVersion`] if available. + */ +loader_version?: LoaderVersion | null; +/** + * The time that the cluster was created in [`DateTime`]. + */ +created_at?: string; +/** + * The time the cluster was last modified in [`DateTime`]. + */ +modified_at?: string; +/** + * The last time the cluster was played in [`DateTime`]. + * (Defaults to None if the cluster has never been played) + */ +played_at?: string | null; +/** + * The overall time played in seconds stored as a [`u64`]. + */ +overall_played?: bigint; +/** + * The recent time played stored as a [`u64`]. + */ +recently_played?: bigint; +/** + * The associated [`PackageData`] and modpack data for the cluster. + */ +package_data?: PackageData | null; +/** + * The user-facing cluster icon as a [`PathBuf`]. + */ +icon?: string | null; +/** + * The user-facing cluster icon as a URL string. + */ +icon_url?: string | null } /** * Relative Path wrapper to be used as an identifer for a cluster path. */ -export type ClusterPath = string; -export interface ClusterPayload { uuid: string; cluster_path: ClusterPath; path: string; name: string; event: ClusterPayloadType }; -export type ClusterPayloadType = 'created' | 'inserted' | 'synced' | 'edited' | 'deleted'; +export type ClusterPath = string +export type ClusterPayload = { uuid: string; cluster_path: ClusterPath; path: string; name: string; event: ClusterPayloadType } +export type ClusterPayloadType = "created" | "inserted" | "synced" | "edited" | "deleted" /** * Core Cluster stages used in package logic. */ -export type ClusterStage = +export type ClusterStage = /** * Installed with no downloads left. */ - 'installed' | +"installed" | /** * Downloading any sort of core metadata or mod file. */ - 'downloading' | +"downloading" | /** * Downloading a full pack file, which is granted lower priority due to the high network demand. */ - 'pack_downloading' | +"pack_downloading" | /** * Not installed at all. */ - 'not_installed'; -export interface CreateCluster { name: string; mc_version: string; mod_loader: Loader; loader_version: string | null; icon: string | null; icon_url: string | null; package_data: PackageData | null; skip: boolean | null; skip_watch: boolean | null }; -export interface DetailedProcess { uuid: string; user: string | null; started_at: string; pid: number }; -export interface FeaturedPackage { package_type: PackageType; provider: Providers; id: string; title: string; description: string; thumbnail: string; oneconfig: boolean }; +"not_installed" +export type CreateCluster = { name: string; mc_version: string; mod_loader: Loader; loader_version: string | null; icon: string | null; icon_url: string | null; package_data: PackageData | null; skip: boolean | null; skip_watch: boolean | null } +export type DetailedProcess = { uuid: string; user: string | null; started_at: string; pid: number } +export type FeaturedPackage = { package_type: PackageType; provider: Providers; id: string; title: string; description: string; thumbnail: string; oneconfig: boolean } /** * List of launcher types we support importing from. */ -export type ImportType = +export type ImportType = /** * `MultiMC` based launchers */ - 'MultiMC' | +"MultiMC" | /** * Prism Launcher has its own category because it has different logic (also is objectively better than mmc) */ - 'PrismLauncher' | +"PrismLauncher" | /** * `GDLauncher` */ - 'GDLauncher' | +"GDLauncher" | /** * Curseforge's launcher */ - 'Curseforge' | +"Curseforge" | /** * `ATLauncher` */ - 'ATLauncher' | +"ATLauncher" | /** * Modrinth app. */ - 'Modrinth' | +"Modrinth" | /** * `TLauncher` */ - 'TLauncher' | +"TLauncher" | /** * FTB Launcher */ - 'FTBLauncher' | +"FTBLauncher" | /** * Technic */ - 'Technic' | +"Technic" | /** * Unknown import option (not widely adopted -> probably a custom launcher with a similar file structure to the above) */ - 'Unknown'; -export interface IngressPayload { event: IngressType; ingress_uuid: string; fraction: number | null; message: string }; -export type IngressType = { type: 'initialize' } | { type: 'download_java'; version: number } | { type: 'download_loader'; cluster_path: string; cluster_name: string } | { type: 'sync_cluster'; cluster_path: string; cluster_name: string } | { type: 'copy_cluster'; import: string; cluster_name: string } | { type: 'sync_config'; new_path: string } | { type: 'archival'; cluster_path: string; cluster_name: string } | { type: 'download_package'; cluster_path: string; package_name: string; icon: string | null; package_id: string | null; package_version: string | null } | { type: 'download_pack'; cluster_path: string; package_name: string; icon: string | null; package_version: string }; +"Unknown" +export type IngressPayload = { event: IngressType; ingress_uuid: string; fraction: number | null; message: string } +export type IngressType = { type: "initialize" } | { type: "download_java"; version: number } | { type: "download_loader"; cluster_path: string; cluster_name: string } | { type: "sync_cluster"; cluster_path: string; cluster_name: string } | { type: "copy_cluster"; import: string; cluster_name: string } | { type: "sync_config"; new_path: string } | { type: "archival"; cluster_path: string; cluster_name: string } | { type: "download_package"; cluster_path: string; package_name: string; icon: string | null; package_id: string | null; package_version: string | null } | { type: "download_pack"; cluster_path: string; package_name: string; icon: string | null; package_version: string } /** * Global initialization hooks for all Minecraft clusters. */ -export interface InitHooks { +export type InitHooks = { /** * Pre-launch hook. */ - pre?: string | null; - /** - * Wrapper hook for the runtime of the game instance. - */ - wrapper?: string | null; - /** - * Post-launch hook. - */ - post?: string | null; -}; -export type InternetPayload = { event: 'InstallPackage'; id: string } | { event: 'InstallPack'; id: string } | { event: 'InstallPath'; path: string }; +pre?: string | null; +/** + * Wrapper hook for the runtime of the game instance. + */ +wrapper?: string | null; +/** + * Post-launch hook. + */ +post?: string | null } +export type InternetPayload = { event: "InstallPackage"; id: string } | { event: "InstallPack"; id: string } | { event: "InstallPath"; path: string } /** * Custom Java arguments on a per-cluster basis. */ -export interface JavaOptions { +export type JavaOptions = { /** * A custom java version from the global java store, if specified. */ - custom_version?: JavaVersion | null; - /** - * Custom runtime arguments when running the cluster. - */ - custom_arguments?: string[] | null; - /** - * Custom environment variables when running the cluster. - */ - custom_env_arguments?: ([string, string])[] | null; -}; +custom_version?: JavaVersion | null; +/** + * Custom runtime arguments when running the cluster. + */ +custom_arguments?: string[] | null; +/** + * Custom environment variables when running the cluster. + */ +custom_env_arguments?: ([string, string])[] | null } /** * A struct representing a single version of the Java Runtime Environment. * Use [`locate_java`] to get an array of all located java instances on the machine. - * + * * common java paths from under GPL 3.0 - * + * * java check functionality from under MIT */ -export interface JavaVersion { version: string; arch: string; path: string }; +export type JavaVersion = { version: string; arch: string; path: string } /** * A `HashMap` of all located and installed available Java versions */ -export type JavaVersions = { [key in string]: JavaVersion }; -export interface JavaZuluPackage { download_url: string; name: string; java_version: number[] }; -export interface License { id?: string; name?: string; url?: string | null }; +export type JavaVersions = { [key in string]: JavaVersion } +export type JavaZuluPackage = { download_url: string; name: string; java_version: number[] } +export type License = { id?: string; name?: string; url?: string | null } /** * Available mod loaders to be used for a cluster. */ -export type Loader = +export type Loader = /** * The default vanilla loader, no modding supported. */ - 'vanilla' | +"vanilla" | /** * The `MinecraftForge` Minecraft mod loader. */ - 'forge' | +"forge" | /** * The `FabircMC` Minecraft mod loader. */ - 'fabric' | +"fabric" | /** * The `NeoForge` Minecraft mod loader. */ - 'neoforge' | +"neoforge" | /** * The Quilt Minecraft mod loader. */ - 'quilt' | +"quilt" | /** * The Legacy Fabric port mod loader. */ - 'legacyfabric'; +"legacyfabric" /** * A version of a Minecraft mod loader */ -export interface LoaderVersion { +export type LoaderVersion = { /** * The version ID of the loader */ - id: string; - /** - * The URL of the version's manifest - */ - url: string; - /** - * Whether the loader is stable or not - */ - stable: boolean; -}; +id: string; +/** + * The URL of the version's manifest + */ +url: string; +/** + * Whether the loader is stable or not + */ +stable: boolean } /** * Universal interface for managed package dependencies. */ -export interface ManagedDependency { version_id: string | null; package_id: string | null; file_name: string | null; dependency_type: PackageDependency }; +export type ManagedDependency = { version_id: string | null; package_id: string | null; file_name: string | null; dependency_type: PackageDependency } /** * Universal metadata for any managed package from a Mod distribution platform. */ -export interface ManagedPackage { provider: Providers; id: string; package_type: PackageType; title: string; description: string; body: PackageBody; main: string; versions: string[]; game_versions: string[]; loaders: Loader[]; icon_url: string | null; created: string | null; updated: string | null; client: PackageSide; server: PackageSide; downloads: bigint; followers: number; categories: string[]; optional_categories: string[] | null; license: License | null; author: Author; is_archived: boolean }; +export type ManagedPackage = { provider: Providers; id: string; package_type: PackageType; title: string; description: string; body: PackageBody; main: string; versions: string[]; game_versions: string[]; loaders: Loader[]; icon_url: string | null; created: string | null; updated: string | null; client: PackageSide; server: PackageSide; downloads: bigint; followers: number; categories: string[]; optional_categories: string[] | null; license: License | null; author: Author; is_archived: boolean } /** * Universal metadata for any managed user from a Mod distribution platform. */ -export interface ManagedUser { id: string; username: string; url?: string | null; avatar_url?: string | null; bio?: string | null; is_organization_user?: boolean; role?: string | null }; +export type ManagedUser = { id: string; username: string; url?: string | null; avatar_url?: string | null; bio?: string | null; is_organization_user?: boolean; role?: string | null } /** * Universal managed package version of a package. */ -export interface ManagedVersion { id: string; package_id: string; author: string; name: string; featured: boolean; version_display: string; changelog: string; changelog_url: string | null; published: string | null; downloads: number; version_type: ManagedVersionReleaseType; files: ManagedVersionFile[]; is_available: boolean; deps: ManagedDependency[]; game_versions: string[]; loaders: Loader[] }; +export type ManagedVersion = { id: string; package_id: string; author: string; name: string; featured: boolean; version_display: string; changelog: string; changelog_url: string | null; published: string | null; downloads: number; version_type: ManagedVersionReleaseType; files: ManagedVersionFile[]; is_available: boolean; deps: ManagedDependency[]; game_versions: string[]; loaders: Loader[] } /** * Universal interface for managed package files. */ -export interface ManagedVersionFile { url: string; file_name: string; primary: boolean; size: bigint; file_type: PackageFile | null; hashes: { [key in string]: string } }; +export type ManagedVersionFile = { url: string; file_name: string; primary: boolean; size: bigint; file_type: PackageFile | null; hashes: { [key in string]: string } } /** * Universal version release type */ -export type ManagedVersionReleaseType = 'Release' | 'Alpha' | 'Beta' | 'Snapshot'; +export type ManagedVersionReleaseType = "Release" | "Alpha" | "Beta" | "Snapshot" /** * Global memory settings across all clusters. */ -export interface Memory { +export type Memory = { /** * Maximum amount of Java memory available globally. */ - maximum: number; - /** - * Minimum amount of Java memory available globally. - */ - minimum: number; -}; -export interface MessagePayload { message: string }; +maximum: number; +/** + * Minimum amount of Java memory available globally. + */ +minimum: number } +export type MessagePayload = { message: string } /** * A structure of all needed Minecraft credentials for logging in and account management. */ -export interface MinecraftCredentials { +export type MinecraftCredentials = { /** * The uuid of the credentials. */ - id: string; - /** - * The username of the Minecraft account. - */ - username: string; - /** - * The access token as a String. - */ - access_token: string; - /** - * The refresh token as a string for [`MinecraftState#refresh`]. - */ - refresh_token: string; - /** - * The time that the access token expires as a [`DateTime`]. - */ - expires: string; -}; -export interface OfflinePayload { offline: boolean }; +id: string; +/** + * The username of the Minecraft account. + */ +username: string; +/** + * The access token as a String. + */ +access_token: string; +/** + * The refresh token as a string for [`MinecraftState#refresh`]. + */ +refresh_token: string; +/** + * The time that the access token expires as a [`DateTime`]. + */ +expires: string } +export type OfflinePayload = { offline: boolean } /** * A struct that represents a Package. */ -export interface Package { sha1: string; meta: PackageMetadata; file_name: string; disabled: boolean }; -export type PackageBody = { Url: string } | { Markdown: string }; +export type Package = { sha1: string; meta: PackageMetadata; file_name: string; disabled: boolean } +export type PackageBody = { Url: string } | { Markdown: string } /** * Optional data used to link a specific cluster to a package project. */ -export interface PackageData { +export type PackageData = { /** * The package ID as a String. */ - package_id: string | null; - /** - * The version of the package as a String. - */ - version_id: string | null; - /** - * Whether or not the current package is locked (for legacy modpack support). - */ - locked?: boolean | null; -}; +package_id: string | null; +/** + * The version of the package as a String. + */ +version_id: string | null; +/** + * Whether or not the current package is locked (for legacy modpack support). + */ +locked?: boolean | null } /** * The type of a [`ManagedDependency`]. */ -export type PackageDependency = 'Required' | 'Optional' | 'Incompatible' | 'Embedded'; +export type PackageDependency = "Required" | "Optional" | "Incompatible" | "Embedded" /** * The file type of a [`Package`]. */ -export type PackageFile = 'required_pack' | 'optional_pack' | 'unknown'; +export type PackageFile = "required_pack" | "optional_pack" | "unknown" /** * Metadata that represents a [`Package`]. */ -export type PackageMetadata = { type: 'managed'; package_id: string; provider: Providers; package_type: PackageType; title: string; version_id: string; version_formatted: string; mc_versions?: string[] | null; icon_url?: string | null } | { type: 'unknown' }; +export type PackageMetadata = { type: "managed"; package_id: string; provider: Providers; package_type: PackageType; title: string; version_id: string; version_formatted: string; mc_versions?: string[] | null; icon_url?: string | null } | { type: "unknown" } /** * Relative [`PathBuf`] for a specific [`Package`] of a [`Cluster`]. */ -export type PackagePath = string; +export type PackagePath = string /** * The Client/Server side type of a [`Package`]. */ -export type PackageSide = 'required' | 'optional' | 'unsupported' | 'unknown'; +export type PackageSide = "required" | "optional" | "unsupported" | "unknown" /** * Represents types of packages handled by the launcher. */ -export type PackageType = +export type PackageType = /** * Represents a mod jarfile */ - 'mod' | +"mod" | /** * Represents a datapack file */ - 'datapack' | +"datapack" | /** * Represents a resourcepack file */ - 'resourcepack' | +"resourcepack" | /** * Represents a shaderpack file */ - 'shaderpack' | +"shaderpack" | /** * Represents a modpack file */ - 'modpack'; -export interface Pagination { index: number; pageSize: number; resultCount: number; totalCount: number }; -export interface ProcessPayload { uuid: string; pid: number; event: ProcessPayloadType; message: string }; -export type ProcessPayloadType = 'started' | 'modified' | 'finished' | 'logging'; -export interface ProgramInfo { launcher_version: string; webview_version: string; tauri_version: string; dev_build: boolean; platform: string; arch: string }; -export interface ProviderSearchQuery { query: string | null; limit: number | null; offset: number | null; game_versions: string[] | null; categories: string[] | null; loaders: Loader[] | null; package_types: PackageType[] | null; open_source: boolean | null }; -export interface ProviderSearchResults { provider: Providers; results: SearchResult[]; total: number }; +"modpack" +export type Pagination = { index: number; pageSize: number; resultCount: number; totalCount: number } +export type ProcessPayload = { uuid: string; pid: number; event: ProcessPayloadType; message: string } +export type ProcessPayloadType = "started" | "modified" | "finished" | "logging" +export type ProgramInfo = { launcher_version: string; webview_version: string; tauri_version: string; dev_build: boolean; platform: string; arch: string } +export type ProviderSearchQuery = { query: string | null; limit: number | null; offset: number | null; game_versions: string[] | null; categories: string[] | null; loaders: Loader[] | null; package_types: PackageType[] | null; open_source: boolean | null } +export type ProviderSearchResults = { provider: Providers; results: SearchResult[]; total: number } /** * Providers for content packages */ -export type Providers = 'Modrinth' | 'Curseforge' | 'SkyClient'; +export type Providers = "Modrinth" | "Curseforge" | "SkyClient" /** * Global Minecraft resolution. */ -export type Resolution = [number, number]; -export interface SearchResult { slug: string; title: string; description: string; categories?: string[]; client_side: PackageSide; server_side: PackageSide; project_type: PackageType; downloads: bigint; icon_url?: string; project_id: string; author: string; versions: string[]; follows: number; date_created: string | null; date_modified: string | null }; +export type Resolution = [number, number] +export type SearchResult = { slug: string; title: string; description: string; categories?: string[]; client_side: PackageSide; server_side: PackageSide; project_type: PackageType; downloads: bigint; icon_url?: string; project_id: string; author: string; versions: string[]; follows: number; date_created: string | null; date_modified: string | null } /** * A global settings state for the launcher. */ -export interface Settings { +export type Settings = { /** * A `OneLauncher` theme managed by the `OneLauncher` GUI. */ - theme?: string; - /** - * A global browser list view for the `OneLauncher` GUI. - */ - browser_list_view?: BrowserListView; - /** - * Does not ask for confirmation when closing the `OneLauncher` GUI - */ - hide_close_prompt?: boolean; - /** - * Disables animations in the `OneLauncher` GUI - */ - disable_animations?: boolean; - /** - * A global fullscreen Minecraft state. - */ - force_fullscreen?: boolean; - /** - * Whether to allow launching the same cluster under the same account. - */ - allow_parallel_running_clusters?: boolean; - /** - * Whether to launch Feral Gamemode on Linux systems. - */ - enable_gamemode?: boolean; - /** - * A global default [`Resolution`] for Minecraft. - */ - resolution: Resolution; - /** - * A global [`JavaVersions`] list and default version. - */ - java_versions: JavaVersions; - /** - * A global [`Memory`] settings store for Java memory settings. - */ - memory: Memory; - /** - * Global and default initialization hooks . - */ - init_hooks: InitHooks; - /** - * Global and default custom Java arguments. - */ - custom_java_args: string[]; - /** - * Global and default custom environment variables. - */ - custom_env_args: ([string, string])[]; - /** - * Global and default maximum [`Semaphore`] I/O operations. - */ - max_async_io_operations: bigint; - /** - * Global and default maximum [`Semaphore`] HTTP operations. - */ - max_async_fetches: bigint; - /** - * The [`CURRENT_FORMAT_VERSION`] of this settings file. - */ - version: number; - /** - * Whether or not to disable Discord IPC. - */ - disable_discord?: boolean; - /** - * Whether or not to enable a debug mode in the launcher. - */ - debug_mode?: boolean; - /** - * Whether or not to disable Plausible and Sentry analytics. - */ - disable_analytics?: boolean; - /** - * The core global config directory stored as a [`PathBuf`]. - */ - config_dir?: string | null; - /** - * Whether or not to minimize the launcher upon a game launch. - */ - hide_on_launch?: boolean; - /** - * Enable/disable custom window decorations. - */ - custom_frame?: boolean; - /** - * Completed onboarding. - */ - onboarding_completed?: boolean; -}; -export interface Update { version: string }; +theme?: string; +/** + * A global browser list view for the `OneLauncher` GUI. + */ +browser_list_view?: BrowserListView; +/** + * Does not ask for confirmation when closing the `OneLauncher` GUI + */ +hide_close_prompt?: boolean; +/** + * Disables animations in the `OneLauncher` GUI + */ +disable_animations?: boolean; +/** + * A global fullscreen Minecraft state. + */ +force_fullscreen?: boolean; +/** + * Whether to allow launching the same cluster under the same account. + */ +allow_parallel_running_clusters?: boolean; +/** + * Whether to launch Feral Gamemode on Linux systems. + */ +enable_gamemode?: boolean; +/** + * A global default [`Resolution`] for Minecraft. + */ +resolution: Resolution; +/** + * A global [`JavaVersions`] list and default version. + */ +java_versions: JavaVersions; +/** + * A global [`Memory`] settings store for Java memory settings. + */ +memory: Memory; +/** + * Global and default initialization hooks . + */ +init_hooks: InitHooks; +/** + * Global and default custom Java arguments. + */ +custom_java_args: string[]; +/** + * Global and default custom environment variables. + */ +custom_env_args: ([string, string])[]; +/** + * Global and default maximum [`Semaphore`] I/O operations. + */ +max_async_io_operations: bigint; +/** + * Global and default maximum [`Semaphore`] HTTP operations. + */ +max_async_fetches: bigint; +/** + * The [`CURRENT_FORMAT_VERSION`] of this settings file. + */ +version: number; +/** + * Whether or not to disable Discord IPC. + */ +disable_discord?: boolean; +/** + * Whether or not to enable a debug mode in the launcher. + */ +debug_mode?: boolean; +/** + * Whether or not to disable Plausible and Sentry analytics. + */ +disable_analytics?: boolean; +/** + * The core global config directory stored as a [`PathBuf`]. + */ +config_dir?: string | null; +/** + * Whether or not to minimize the launcher upon a game launch. + */ +hide_on_launch?: boolean; +/** + * Enable/disable custom window decorations. + */ +custom_frame?: boolean; +/** + * Completed onboarding. + */ +onboarding_completed?: boolean } +export type Update = { version: string } /** * A game version of Minecraft */ -export interface Version { +export type Version = { /** * A unique identifier of the version */ - id: string; - /** - * The release type of the version - */ - type: VersionType; - /** - * A link to additional information about the version - */ - url: string; - /** - * The latest time a file in this version was updated - */ - time: string; - /** - * The time this version was released - */ - releaseTime: string; - /** - * The SHA1 hash of the additional information about the version - */ - sha1: string; - /** - * Whether the version supports the latest player safety features - */ - complianceLevel: number; - /** - * The SHA1 hash of the original unmodified Minecraft version's JSON - * This is only available when using the Pulseflow mirror - */ - originalSha1?: string | null; -}; +id: string; +/** + * The release type of the version + */ +type: VersionType; +/** + * A link to additional information about the version + */ +url: string; +/** + * The latest time a file in this version was updated + */ +time: string; +/** + * The time this version was released + */ +releaseTime: string; +/** + * The SHA1 hash of the additional information about the version + */ +sha1: string; +/** + * Whether the version supports the latest player safety features + */ +complianceLevel: number; +/** + * The SHA1 hash of the original unmodified Minecraft version's JSON + * This is only available when using the Pulseflow mirror + */ +originalSha1?: string | null } /** * The version type of Minecraft */ -export type VersionType = +export type VersionType = /** * A major version, which is stable for all players to use */ - 'release' | +"release" | /** * An experimental version, which is unstable and used for feature previews and beta testing */ - 'snapshot' | +"snapshot" | /** * The oldest versions before the game was released */ - 'old_alpha' | +"old_alpha" | /** * Early versions of the game */ - 'old_beta'; +"old_beta" -interface __EventObj__ { +/** tauri-specta globals **/ + +import { + invoke as TAURI_INVOKE, + Channel as TAURI_CHANNEL, +} from "@tauri-apps/api/core"; +import * as TAURI_API_EVENT from "@tauri-apps/api/event"; +import { type WebviewWindow as __WebviewWindow__ } from "@tauri-apps/api/webviewWindow"; + +type __EventObj__ = { listen: ( cb: TAURI_API_EVENT.EventCallback, ) => ReturnType>; @@ -1172,11 +1057,11 @@ interface __EventObj__ { emit: null extends T ? (payload?: T) => ReturnType : (payload: T) => ReturnType; -} +}; export type Result = - | { status: 'ok'; data: T } - | { status: 'error'; error: E }; + | { status: "ok"; data: T } + | { status: "error"; error: E }; function __makeEvents__>( mappings: Record, @@ -1199,11 +1084,11 @@ function __makeEvents__>( }), get: (_, command: keyof __EventObj__) => { switch (command) { - case 'listen': + case "listen": return (arg: any) => TAURI_API_EVENT.listen(name, arg); - case 'once': + case "once": return (arg: any) => TAURI_API_EVENT.once(name, arg); - case 'emit': + case "emit": return (arg: any) => TAURI_API_EVENT.emit(name, arg); } },