- 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.
45 lines
1.4 KiB
TypeScript
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;
|
|
}
|
|
}
|
|
});
|