From 3186f375e14dcae0cb6c9b0f77efca2acac76489 Mon Sep 17 00:00:00 2001 From: Max Nuding Date: Tue, 8 Jul 2025 15:36:32 +0200 Subject: [PATCH] fix #41 improve token expiry --- src/lib/server/playlist/oauthPlaylistAdder.ts | 18 ++++++++++++++---- src/lib/server/playlist/ytPlaylistAdder.ts | 4 +++- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/lib/server/playlist/oauthPlaylistAdder.ts b/src/lib/server/playlist/oauthPlaylistAdder.ts index edcae93..d2a7a4c 100644 --- a/src/lib/server/playlist/oauthPlaylistAdder.ts +++ b/src/lib/server/playlist/oauthPlaylistAdder.ts @@ -98,12 +98,22 @@ export abstract class OauthPlaylistAdder { protected async shouldRefreshToken(): Promise<{ token: OauthResponse; refresh: boolean } | null> { const token = await this.auth(); if (token == null || !token?.expires) { + this.logger.warn('Cannot check if token should be refreshed. Token expiry is unreadablle'); return null; } - let refreshAt = new Date(); + if (token.error) { + this.logger.error('Access token is invalid, should refresh'); + return { + token: token, + refresh: true + }; + } + let refreshAt = new Date(token.expires); + // Refresh token this.refresh_time minutes before it expires refreshAt.setTime(refreshAt.getTime() - this.refresh_time * 60 * 1000); - this.logger.info('token expiry', token.expires, 'vs refresh @', refreshAt); - if (token.expires.getTime() > refreshAt.getTime()) { + + this.logger.info('refresh @', refreshAt, 'token expires', token.expires); + if (refreshAt.getTime() > new Date().getTime()) { return { token: token, refresh: false @@ -114,7 +124,7 @@ export abstract class OauthPlaylistAdder { 'Token expires', token.expires, token.expires.getTime(), - `which is after the refresh time`, + `so it should be refreshed before or at`, refreshAt, refreshAt.getTime() ); diff --git a/src/lib/server/playlist/ytPlaylistAdder.ts b/src/lib/server/playlist/ytPlaylistAdder.ts index 2330767..102c2be 100644 --- a/src/lib/server/playlist/ytPlaylistAdder.ts +++ b/src/lib/server/playlist/ytPlaylistAdder.ts @@ -78,7 +78,9 @@ export class YoutubePlaylistAdder extends OauthPlaylistAdder implements Playlist ); } - public async addToPlaylist(song: SongInfo) {} + public async addToPlaylist(song: SongInfo) { + await this.addToPlaylistRetry(song); + } private async addToPlaylistRetry(song: SongInfo, remaning: number = 3) { if (remaning < 0) {