feat(sync): add installed app cloud sync

This commit is contained in:
2026-05-19 01:43:28 +08:00
parent ac1f46bd73
commit acffb6c5ee
7 changed files with 570 additions and 3 deletions
+30
View File
@@ -0,0 +1,30 @@
import type { App, SyncedAppListItem } from "@/global/typedefinition";
import { parsePackageArch } from "@/modules/appIdentity";
const hasUsablePackageIdentity = (app: App): boolean => {
return app.pkgname.trim().length > 0 && Boolean(app.origin);
};
export const buildSyncItems = (apps: App[]): SyncedAppListItem[] => {
return apps
.filter(
(app) =>
app.currentStatus === "installed" &&
app.category !== "unknown" &&
!app.isDependency &&
hasUsablePackageIdentity(app),
)
.map((app) => ({
pkgname: app.pkgname,
origin: app.origin,
category: app.category,
version: app.version,
packageArch: app.arch || parsePackageArch(app.filename),
appName: app.name || app.pkgname,
iconUrl: app.icons || "",
}));
};
export const cloudItemKey = (
item: Pick<SyncedAppListItem, "origin" | "pkgname">,
): string => `${item.origin}:${item.pkgname}`;