diff --git a/apps/oneclient/frontend/src/bindings.gen.ts b/apps/oneclient/frontend/src/bindings.gen.ts index cc15d24f..75e6bde0 100644 --- a/apps/oneclient/frontend/src/bindings.gen.ts +++ b/apps/oneclient/frontend/src/bindings.gen.ts @@ -232,12 +232,8 @@ export type VersionType = */ "old_beta" -const ARGS_MAP = { 'events':'{"ingress":["event"],"message":["event"],"process":["event"]}', 'folders':'{"fromCluster":["folder_name"],"openCluster":["folder_name"]}', 'core':'{"open":["input"],"removeUser":["uuid"],"getUsersFromAuthor":["provider","author"],"getWorlds":["id"],"getClusterById":["id"],"setDefaultUser":["uuid"],"openMsaLogin":[],"getPackageVersions":["provider","slug","mc_version","loader","offset","limit"],"getClusters":[],"updateClusterProfile":["name","profile"],"fetchMinecraftProfile":["uuid"],"getMultiplePackages":["provider","slugs"],"updateClusterById":["id","request"],"writeSettings":["setting"],"searchPackages":["provider","query"],"getGameVersions":[],"killProcess":["pid"],"getProfileOrDefault":["name"],"getRunningProcessesByClusterId":["cluster_id"],"getPackageBody":["provider","body"],"downloadPackage":["provider","package_id","version_id","cluster_id","skip_compatibility"],"getGlobalProfile":[],"createCluster":["options"],"readSettings":[],"launchCluster":["id","uuid"],"getDefaultUser":["fallback"],"getUsers":[],"isClusterRunning":["cluster_id"],"getLoadersForVersion":["mc_version"],"getLogs":["id"],"getUser":["uuid"],"removeCluster":["id"],"getPackage":["provider","slug"],"getRunningProcesses":[],"getScreenshots":["id"],"getLogByName":["id","name"]}', 'oneclient':'{"getClustersGroupedByMajor":[],"openDevTools":[]}' } -export type Router = { 'folders': { fromCluster: (folderName: string) => Promise, -openCluster: (folderName: string) => Promise }, -'oneclient': { openDevTools: () => Promise, -getClustersGroupedByMajor: () => Promise> }, -'events': { ingress: (event: IngressPayload) => Promise, +const ARGS_MAP = { 'oneclient':'{"getClustersGroupedByMajor":[],"openDevTools":[]}', 'folders':'{"fromCluster":["folder_name"],"openCluster":["folder_name"]}', 'events':'{"ingress":["event"],"message":["event"],"process":["event"]}', 'core':'{"open":["input"],"removeUser":["uuid"],"getUsersFromAuthor":["provider","author"],"getWorlds":["id"],"getClusterById":["id"],"setDefaultUser":["uuid"],"openMsaLogin":[],"getPackageVersions":["provider","slug","mc_version","loader","offset","limit"],"getClusters":[],"updateClusterProfile":["name","profile"],"fetchMinecraftProfile":["uuid"],"getMultiplePackages":["provider","slugs"],"updateClusterById":["id","request"],"writeSettings":["setting"],"searchPackages":["provider","query"],"getGameVersions":[],"killProcess":["pid"],"getProfileOrDefault":["name"],"getRunningProcessesByClusterId":["cluster_id"],"getPackageBody":["provider","body"],"downloadPackage":["provider","package_id","version_id","cluster_id","skip_compatibility"],"getGlobalProfile":[],"createCluster":["options"],"readSettings":[],"launchCluster":["id","uuid"],"getDefaultUser":["fallback"],"getUsers":[],"isClusterRunning":["cluster_id"],"getLoadersForVersion":["mc_version"],"getLogs":["id"],"getUser":["uuid"],"removeCluster":["id"],"getPackage":["provider","slug"],"getRunningProcesses":[],"getScreenshots":["id"],"getLogByName":["id","name"]}' } +export type Router = { 'events': { ingress: (event: IngressPayload) => Promise, message: (event: MessagePayload) => Promise, process: (event: ProcessPayload) => Promise }, 'core': { getClusters: () => Promise, @@ -275,7 +271,11 @@ getPackageVersions: (provider: Provider, slug: string, mcVersion: string | null, downloadPackage: (provider: Provider, packageId: string, versionId: string, clusterId: number, skipCompatibility: boolean | null) => Promise, getUsersFromAuthor: (provider: Provider, author: PackageAuthor) => Promise, fetchMinecraftProfile: (uuid: string) => Promise, -open: (input: string) => Promise } }; +open: (input: string) => Promise }, +'folders': { fromCluster: (folderName: string) => Promise, +openCluster: (folderName: string) => Promise }, +'oneclient': { openDevTools: () => Promise, +getClustersGroupedByMajor: () => Promise> } }; export type { InferCommandOutput } diff --git a/apps/oneclient/frontend/src/components/overlay/Toasts.tsx b/apps/oneclient/frontend/src/components/overlay/Toasts.tsx index a4b53102..b1649930 100644 --- a/apps/oneclient/frontend/src/components/overlay/Toasts.tsx +++ b/apps/oneclient/frontend/src/components/overlay/Toasts.tsx @@ -1,3 +1,4 @@ +import type { IngressType } from '@/bindings.gen'; import type { ToastData, ToastId } from '@/utils/toast'; import type { HTMLAttributes } from 'react'; import type { ToastContentProps, ToastOptions } from 'react-toastify'; @@ -112,6 +113,18 @@ function ToastProgressBar({ ); } +type UnionToIntersection = + (T extends any ? (x: T) => void : never) extends ((x: infer I) => void) ? I : never; + +const ingressNames: Record<(IngressType & string) | (keyof UnionToIntersection), string> = { + JavaPrepare: 'Preparing Java', + JavaCheck: 'Checking Java', + JavaLocate: 'Locating Java', + MinecraftDownload: 'Downloading Minecraft', + Download: 'Downloading', + PrepareCluster: 'Preparing Cluster', +}; + export function Toasts() { // runs twice in dev mode because of react strict mode // the double notifications are NOT a bug!!! @@ -120,7 +133,8 @@ export function Toasts() { const toastIngressMap: Map = new Map(); bindings.events.ingress.on((e) => { - const title = typeof e.ingress_type === 'string' ? e.ingress_type : Object.keys(e.ingress_type).at(0) ?? 'Info'; + const ingressType = typeof e.ingress_type === 'string' ? e.ingress_type : Object.keys(e.ingress_type).at(0) ?? 'Info'; + const title = ingressNames[ingressType as keyof typeof ingressNames] ?? ingressType; const existingToastId = toastIngressMap.get(e.id);