From dbdab24e17e32956690f697d601503cd7dcf2fe3 Mon Sep 17 00:00:00 2001 From: Adam French Date: Fri, 6 Feb 2026 13:20:21 +0000 Subject: [PATCH] adding admin tools --- backend/handlers/handle_spotify.go | 17 +++++++++++++++++ backend/handlers/store.go | 5 +++++ nginx/vue/src/components/admin/CreatePost.vue | 6 ++---- nginx/vue/src/views/Admin.vue | 11 ++++++++++- 4 files changed, 34 insertions(+), 5 deletions(-) diff --git a/backend/handlers/handle_spotify.go b/backend/handlers/handle_spotify.go index 7f0772c..c60bc78 100644 --- a/backend/handlers/handle_spotify.go +++ b/backend/handlers/handle_spotify.go @@ -3,6 +3,7 @@ package handlers import ( "context" "net/http" + "time" "adam-french.co.uk/backend/services" "github.com/gin-gonic/gin" @@ -54,6 +55,10 @@ func (store *Store) ListeningTo(ctx *gin.Context) { func (store *Store) RecentlyPlayed(ctx *gin.Context) { opts := spotify.RecentlyPlayedOptions{Limit: 3} + if store.RecentSongsFresh() { + ctx.JSON(200, *store.RecentSongs) + } + played, err := store.SpotifyClient.PlayerRecentlyPlayedOpt(ctx, &opts) if err != nil { ctx.JSON(500, gin.H{"error": err.Error()}) @@ -62,3 +67,15 @@ func (store *Store) RecentlyPlayed(ctx *gin.Context) { ctx.JSON(200, played) } + +func (s *Store) RecentSongsFresh() bool { + if s.RecentSongs == nil { + return false + } + + if len(*s.RecentSongs) == 0 { + return false + } + + return time.Since(s.RecentSongsFetchedAt) < time.Minute +} diff --git a/backend/handlers/store.go b/backend/handlers/store.go index bde8231..9e487fc 100644 --- a/backend/handlers/store.go +++ b/backend/handlers/store.go @@ -1,6 +1,8 @@ package handlers import ( + "time" + "adam-french.co.uk/backend/services" "github.com/zmb3/spotify/v2" spotifyauth "github.com/zmb3/spotify/v2/auth" @@ -13,4 +15,7 @@ type Store struct { SpotifyClient *spotify.Client Auth *services.Auth Notes *services.Notes + + RecentSongs *[]spotify.RecentlyPlayedItem + RecentSongsFetchedAt time.Time } diff --git a/nginx/vue/src/components/admin/CreatePost.vue b/nginx/vue/src/components/admin/CreatePost.vue index 8eae5fc..9eef41c 100644 --- a/nginx/vue/src/components/admin/CreatePost.vue +++ b/nginx/vue/src/components/admin/CreatePost.vue @@ -1,10 +1,8 @@