import axios from 'axios' import { onMounted, shallowRef } from 'vue' import * as marked from 'marked' import SyAlert from '../../components/SyAlert/SyAlert.vue' type GitHubRelease = { id: number name?: string | null tag_name?: string | null published_at: string body?: string | null } type ReleaseAlert = { id: string releaseVersion: string message: string type: 'success' | 'info' | 'warning' | 'error' variant: 'tonal' | 'outlined' } const releaseAlerts: ReleaseAlert[] = [ { id: 'starter-kit-2-0-32', releaseVersion: 'v1.0.24', message: 'Il est conseillé de faire une montée de version du Starter Kit en 2.0.32', type: 'warning', variant: 'tonal', }, ] export default { title: 'Démarrer/Releases', component: SyAlert, } export const List = { render: () => { return { components: { SyAlert }, setup() { const releases = shallowRef([]) const errorMessage = shallowRef('') const fetchReleases = async () => { try { const { data } = await axios.get('https://api.github.com/repos/assurance-maladie-digital/design-system-v3/releases') releases.value = data } // eslint-disable-next-line @typescript-eslint/no-unused-vars catch (error) { errorMessage.value = 'Une erreur est survenue lors de la récupération des releases.' } } const formatDate = (date: string | number | Date) => { return new Date(date).toLocaleDateString() } const formatMarkdown = (markdown?: string | null) => { return marked.parse(markdown ?? '') } const getReleaseAlerts = (release: GitHubRelease) => { return releaseAlerts.filter(alert => [release.name, release.tag_name].some(value => value?.includes(alert.releaseVersion)), ) } onMounted(() => { fetchReleases().then(r => r) }) return { releases, errorMessage, formatDate, formatMarkdown, getReleaseAlerts, } }, template: `

Releases

{{ errorMessage }}

{{ release.name }} ({{ formatDate(release.published_at) }})


`, } }, tags: ['!dev'], }