1
0
mirror of https://github.com/amir20/dozzle.git synced 2026-01-03 19:45:01 +01:00
Files
dozzle/assets/stores/announcements.ts
2025-02-11 09:57:36 -08:00

38 lines
1.0 KiB
TypeScript

type Announcement = {
name: string;
announcement: boolean;
createdAt: Date;
body: string;
tag: string;
htmlUrl: string;
latest: boolean;
mentionsCount: number;
features: number;
bugFixes: number;
breaking: number;
};
const { data: releases } = useFetch(withBase("/api/releases")).get().json<Announcement[]>();
const otherAnnouncements = [] as Announcement[];
const announcements = computed(() => {
const newReleases =
releases.value?.map((release) => ({ ...release, createdAt: new Date(release.createdAt), announcement: false })) ??
[];
return [...newReleases, ...otherAnnouncements].sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime());
});
const mostRecent = computed(() => announcements.value?.[0]);
const latestRelease = computed(() => announcements.value?.find((release) => release.latest && !release.announcement));
const hasRelease = computed(() => latestRelease.value !== undefined);
export function useAnnouncements() {
return {
mostRecent,
announcements,
latestRelease,
hasRelease,
};
}