推进 INI 面板 shell handoff package display view-model
This commit is contained in:
@@ -149,6 +149,7 @@
|
||||
getShellSessionHandoffPackageSchema: () => shellViewModel.shellSessionHandoffPackageSchema,
|
||||
getShellSessionHandoffPackage: () => shellViewModel.shellSessionHandoffPackage,
|
||||
getShellSessionHandoffPackageReport: () => shellViewModel.shellSessionHandoffPackageReport,
|
||||
getShellSessionHandoffPackageDisplayViewModel: () => shellViewModel.shellSessionHandoffPackageDisplayViewModel,
|
||||
isSupportedShellSessionHandoffPackage: shellViewModel.isSupportedShellSessionHandoffPackage,
|
||||
getLauncherLinks: () => shellViewModel.launcherLinks,
|
||||
getControlPageApiMethods: () => shellViewModel.controlPage.browserApiMethods,
|
||||
|
||||
@@ -138,6 +138,7 @@ export function createIniPanelLaunchApiManifest(entries = getVisibleIniPanelEntr
|
||||
"getShellSessionHandoffPackageSchema",
|
||||
"getShellSessionHandoffPackage",
|
||||
"getShellSessionHandoffPackageReport",
|
||||
"getShellSessionHandoffPackageDisplayViewModel",
|
||||
"isSupportedShellSessionHandoffPackage",
|
||||
"getLauncherLinks",
|
||||
"getControlPageApiMethods",
|
||||
@@ -875,6 +876,35 @@ export function createIniPanelShellSessionHandoffPackageReport(
|
||||
};
|
||||
}
|
||||
|
||||
export function createIniPanelShellSessionHandoffPackageDisplayViewModel(
|
||||
report = createIniPanelShellSessionHandoffPackageReport(),
|
||||
) {
|
||||
const missingPackageFields = Array.isArray(report?.missingPackageFields) ? report.missingPackageFields : [];
|
||||
const missingManifestFields = Array.isArray(report?.missingManifestFields) ? report.missingManifestFields : [];
|
||||
const mismatchFields = Array.isArray(report?.mismatchFields) ? report.mismatchFields : [];
|
||||
const blockingReasons = Array.isArray(report?.blockingReasons) ? report.blockingReasons : [];
|
||||
const problems = [
|
||||
...missingPackageFields,
|
||||
...missingManifestFields,
|
||||
...mismatchFields,
|
||||
...blockingReasons,
|
||||
];
|
||||
|
||||
return {
|
||||
phase: report?.phase === "ready" ? "ready" : "blocked",
|
||||
title: "Shell handoff package",
|
||||
statusText: report?.ready ? "Ready" : "Blocked",
|
||||
detailText: problems.length === 0 ? "No blocking reasons" : problems.join(", "),
|
||||
rows: Array.isArray(report?.rows)
|
||||
? report.rows.map(({ id, label, value }) => ({
|
||||
id,
|
||||
label,
|
||||
value,
|
||||
}))
|
||||
: [],
|
||||
};
|
||||
}
|
||||
|
||||
export function createIniPanelShellViewModel(entries = getVisibleIniPanelEntries()) {
|
||||
const shellIntegrationManifest = createIniPanelShellIntegrationManifest(entries);
|
||||
const shellIntegrationReadiness = createIniPanelShellIntegrationReadiness(shellIntegrationManifest);
|
||||
@@ -922,6 +952,9 @@ export function createIniPanelShellViewModel(entries = getVisibleIniPanelEntries
|
||||
const shellSessionHandoffPackageReport = createIniPanelShellSessionHandoffPackageReport(
|
||||
shellSessionHandoffPackage,
|
||||
);
|
||||
const shellSessionHandoffPackageDisplayViewModel = createIniPanelShellSessionHandoffPackageDisplayViewModel(
|
||||
shellSessionHandoffPackageReport,
|
||||
);
|
||||
return {
|
||||
pages: entries.map(({ id, href, title }) => ({
|
||||
id,
|
||||
@@ -944,6 +977,7 @@ export function createIniPanelShellViewModel(entries = getVisibleIniPanelEntries
|
||||
shellSessionHandoffPackage,
|
||||
shellSessionHandoffPackageSchema: createIniPanelShellSessionHandoffPackageSchema(),
|
||||
shellSessionHandoffPackageReport,
|
||||
shellSessionHandoffPackageDisplayViewModel,
|
||||
launchApiSchema: createIniPanelLaunchApiSchema(),
|
||||
launchApiManifest: createIniPanelLaunchApiManifest(entries),
|
||||
isSupportedShellIntegrationManifest: isSupportedIniPanelShellIntegrationManifest,
|
||||
@@ -961,6 +995,7 @@ export function createIniPanelShellViewModel(entries = getVisibleIniPanelEntries
|
||||
createShellSessionHandoffPackage: createIniPanelShellSessionHandoffPackage,
|
||||
createShellSessionHandoffPackageSchema: createIniPanelShellSessionHandoffPackageSchema,
|
||||
createShellSessionHandoffPackageReport: createIniPanelShellSessionHandoffPackageReport,
|
||||
createShellSessionHandoffPackageDisplayViewModel: createIniPanelShellSessionHandoffPackageDisplayViewModel,
|
||||
isSupportedShellSessionHandoffPackage: isSupportedIniPanelShellSessionHandoffPackage,
|
||||
controlPage: {
|
||||
browserApiSchema: createControlPageBrowserApiSchema(),
|
||||
|
||||
Reference in New Issue
Block a user