fix #41 improve token expiry

This commit is contained in:
2025-07-08 15:36:32 +02:00
parent 3c1b7dba0e
commit 3186f375e1
2 changed files with 17 additions and 5 deletions

View File

@ -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()
);

View File

@ -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) {