mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-03-26 18:31:52 +00:00
61 lines
1.6 KiB
TypeScript
61 lines
1.6 KiB
TypeScript
import { PatchDB } from 'patch-db-client'
|
|
import {
|
|
DataModel,
|
|
InstalledState,
|
|
InstallingState,
|
|
PackageDataEntry,
|
|
PackageState,
|
|
UpdatingState,
|
|
} from 'src/app/services/patch-db/data-model'
|
|
import { firstValueFrom } from 'rxjs'
|
|
import { Manifest } from '@start9labs/marketplace'
|
|
|
|
export async function getPackage(
|
|
patch: PatchDB<DataModel>,
|
|
id: string,
|
|
): Promise<PackageDataEntry | undefined> {
|
|
return firstValueFrom(patch.watch$('packageData', id))
|
|
}
|
|
|
|
export async function getAllPackages(
|
|
patch: PatchDB<DataModel>,
|
|
): Promise<DataModel['packageData']> {
|
|
return firstValueFrom(patch.watch$('packageData'))
|
|
}
|
|
|
|
export function getManifest(pkg: PackageDataEntry): Manifest {
|
|
if (isInstalled(pkg) || isRemoving(pkg)) return pkg.stateInfo.manifest
|
|
|
|
return (pkg.stateInfo as InstallingState).installingInfo.newManifest
|
|
}
|
|
|
|
export function isInstalled(
|
|
pkg: PackageDataEntry,
|
|
): pkg is PackageDataEntry<InstalledState> {
|
|
return pkg.stateInfo.state === PackageState.Installed
|
|
}
|
|
|
|
export function isRemoving(
|
|
pkg: PackageDataEntry,
|
|
): pkg is PackageDataEntry<InstalledState> {
|
|
return pkg.stateInfo.state === PackageState.Removing
|
|
}
|
|
|
|
export function isInstalling(
|
|
pkg: PackageDataEntry,
|
|
): pkg is PackageDataEntry<InstallingState> {
|
|
return pkg.stateInfo.state === PackageState.Installing
|
|
}
|
|
|
|
export function isRestoring(
|
|
pkg: PackageDataEntry,
|
|
): pkg is PackageDataEntry<InstallingState> {
|
|
return pkg.stateInfo.state === PackageState.Restoring
|
|
}
|
|
|
|
export function isUpdating(
|
|
pkg: PackageDataEntry,
|
|
): pkg is PackageDataEntry<UpdatingState> {
|
|
return pkg.stateInfo.state === PackageState.Updating
|
|
}
|