Files
start-os/frontend/projects/ui/src/app/util/parse-data-model.ts
Alex Inkin 7c26b18c73 Feature/shared refactor (#1176)
* refactor: move most of the shared entities to @start8labs/shared library
2022-02-15 08:13:05 -07:00

51 lines
1006 B
TypeScript

import {
DataModel,
PackageDataEntry,
RecoveredPackageDataEntry,
} from 'src/app/services/patch-db/data-model'
export function parseDataModel(data: DataModel): ParsedData {
const all = JSON.parse(JSON.stringify(data['package-data'])) as {
[id: string]: PackageDataEntry
}
const order = [...(data.ui['pkg-order'] || [])]
const pkgs = []
const recoveredPkgs = Object.entries(data['recovered-packages'])
.filter(([id, _]) => !all[id])
.map(([id, val]) => ({
...val,
id,
}))
// add known packages in preferential order
order.forEach(id => {
if (all[id]) {
pkgs.push(all[id])
delete all[id]
}
})
// unshift unknown packages
Object.values(all).forEach(pkg => {
pkgs.unshift(pkg)
})
return {
order,
pkgs,
recoveredPkgs,
}
}
export interface RecoveredInfo extends RecoveredPackageDataEntry {
id: string
}
interface ParsedData {
order: string[]
pkgs: PackageDataEntry[]
recoveredPkgs: RecoveredInfo[]
}