mirror of
https://github.com/amir20/dozzle.git
synced 2026-01-03 19:45:01 +01:00
38 lines
1.0 KiB
TypeScript
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,
|
|
};
|
|
}
|