From f4681458492c69c7f1a25e034807b67bdbe00b40 Mon Sep 17 00:00:00 2001 From: maciejpedzich Date: Thu, 7 Jul 2022 08:45:51 +0200 Subject: [PATCH] Use lazy async data to prvent navigation blocking --- components/stats/FollowerGrowth.vue | 4 +- components/stats/TrackRetention.vue | 64 +++++++++++++++-------------- 2 files changed, 36 insertions(+), 32 deletions(-) diff --git a/components/stats/FollowerGrowth.vue b/components/stats/FollowerGrowth.vue index 15f8a8a..ffc6748 100644 --- a/components/stats/FollowerGrowth.vue +++ b/components/stats/FollowerGrowth.vue @@ -39,7 +39,7 @@ const dateFormatter = new Intl.DateTimeFormat('en-US', { day: 'numeric' }); -const { pending, error, data, refresh } = await useAsyncData( +const { pending, error, data, refresh } = await useLazyAsyncData( `playlist-${playlistId}-follower-growth`, async () => { const snapshots = ( @@ -97,7 +97,7 @@ watch(chartPeriod, async () => await refresh()); @media only screen and (min-width: 768px) { :deep(div.p-chart) { width: 100%; - padding: 0 10rem; + padding: 0 8rem; } } diff --git a/components/stats/TrackRetention.vue b/components/stats/TrackRetention.vue index 2720bc0..ef7d67b 100644 --- a/components/stats/TrackRetention.vue +++ b/components/stats/TrackRetention.vue @@ -23,7 +23,8 @@ const formatDate = (date: string | null) => const displayRetentionText = (retention: number) => { const durationObject = intervalToDuration({ start: 0, end: retention }); const displayText = formatDuration(durationObject, { - format: ['years', 'months', 'days'] + format: ['years', 'months', 'days'], + delimiter: ', ' }); return displayText; @@ -33,27 +34,25 @@ const { pending, error, data: tracks -} = await useAsyncData(`longest-standing-tracks-${playlistId}`, async () => { - const { tracks } = await $fetch( - `https://raw.githubusercontent.com/mackorone/spotify-playlist-archive/main/playlists/cumulative/${playlistId}.json`, - { parseResponse: JSON.parse } - ); - const now = new Date().toISOString(); +} = await useLazyAsyncData( + `longest-standing-tracks-${playlistId}`, + async () => { + const { tracks } = await $fetch( + `https://raw.githubusercontent.com/mackorone/spotify-playlist-archive/main/playlists/cumulative/${playlistId}.json`, + { parseResponse: JSON.parse } + ); + const now = new Date().toISOString(); - return tracks - .map((track) => { - track.retention = - Date.parse(track.date_removed || now) - Date.parse(track.date_added); + return tracks + .map((track) => { + track.retention = + Date.parse(track.date_removed || now) - Date.parse(track.date_added); - return track; - }) - .sort((a, b) => b.retention - a.retention) - .map((track, index) => { - track.position = `${index + 1}.`; - - return track; - }); -}); + return track; + }) + .sort((a, b) => b.retention - a.retention); + } +);