agent-ecosystem/landing/stores/download.ts
iliya e6e89d4ebc fix(tests): improve messageId generation for legacy inbox rows
- Enhanced tests to ensure consistent messageId generation for legacy inbox rows lacking a messageId.
- Updated test descriptions for better clarity regarding the new messageId handling.
- Adjusted test expectations to align with the updated behavior of relaying legacy inbox rows with generated messageIds.
2026-03-23 16:31:37 +02:00

45 lines
1.4 KiB
TypeScript

import { defineStore } from "pinia";
import { downloadAssets } from "~/data/downloads";
import type { DownloadArch, DownloadOs } from "~/data/downloads";
import { detectMacArch, detectPlatform } from "~/utils/platform";
export const useDownloadStore = defineStore("download", {
state: () => ({
os: "unknown" as DownloadOs | "unknown",
arch: "unknown" as DownloadArch | "unknown",
selectedId: ""
}),
getters: {
assets: () => downloadAssets,
selectedAsset(state) {
return downloadAssets.find((asset) => asset.id === state.selectedId);
},
isMacOs(state): boolean {
return state.os === "macos";
},
macArch(state): "arm64" | "x64" {
return state.arch === "arm64" ? "arm64" : "x64";
}
},
actions: {
init() {
if (!process.client) return;
const ua = navigator.userAgent;
const os = detectPlatform(ua);
this.os = os === "unknown" ? "unknown" : os;
if (this.os === "macos") {
this.arch = detectMacArch(ua) as DownloadArch;
} else if (this.os !== "unknown") {
this.arch = "x64";
}
// Для macOS — одна карточка, матчим по OS
const match = downloadAssets.find((asset) => asset.os === this.os);
if (match) {
this.selectedId = match.id;
}
},
setSelected(id: string) {
this.selectedId = id;
}
}
});