fix #41 improve token expiry
This commit is contained in:
@ -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()
|
||||
);
|
||||
|
@ -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) {
|
||||
|
Reference in New Issue
Block a user