frontend: polish app launch and release experience
This commit is contained in:
@@ -27,7 +27,7 @@ const PHASE_INFO: Record<InstallPhase, { progress: number; message: string; stat
|
||||
'pulling-image': { progress: 20, message: 'Downloading image…', status: 'downloading' },
|
||||
'creating-container': { progress: 70, message: 'Creating container…', status: 'installing' },
|
||||
'starting-container': { progress: 80, message: 'Starting container…', status: 'starting' },
|
||||
'waiting-healthy': { progress: 88, message: 'Waiting for container…', status: 'starting' },
|
||||
'waiting-healthy': { progress: 88, message: 'Finalizing first start…', status: 'starting' },
|
||||
'post-install': { progress: 95, message: 'Finalizing…', status: 'installing' },
|
||||
'done': { progress: 100, message: 'Installed', status: 'complete' },
|
||||
}
|
||||
@@ -126,6 +126,12 @@ export const useServerStore = defineStore('server', () => {
|
||||
installingApps.value.delete(appId)
|
||||
}
|
||||
}
|
||||
|
||||
if ((pkg.state as string) === 'removing') {
|
||||
uninstallingApps.value.add(appId)
|
||||
} else if (uninstallingApps.value.has(appId)) {
|
||||
uninstallingApps.value.delete(appId)
|
||||
}
|
||||
}
|
||||
// Clear installingApps entries for apps that vanished from backend data
|
||||
// Only clean up entries that have errored — active installs may take minutes to pull images
|
||||
@@ -183,8 +189,11 @@ export const useServerStore = defineStore('server', () => {
|
||||
return rpcClient.installPackage(id, marketplaceUrl, version)
|
||||
}
|
||||
|
||||
async function uninstallPackage(id: string): Promise<{ status: string; package_id: string }> {
|
||||
return rpcClient.uninstallPackage(id)
|
||||
async function uninstallPackage(
|
||||
id: string,
|
||||
options: { preserveData?: boolean } = {},
|
||||
): Promise<{ status: string; package_id: string }> {
|
||||
return rpcClient.uninstallPackage(id, options)
|
||||
}
|
||||
|
||||
async function startPackage(id: string): Promise<void> {
|
||||
|
||||
Reference in New Issue
Block a user