From ea6eac5066907afc0bc9d9f1fe547dda2d882b41 Mon Sep 17 00:00:00 2001
From: schroda <50052685+schroda@users.noreply.github.com>
Date: Wed, 22 May 2024 23:24:05 +0200
Subject: [PATCH] Consider tracker logged out if token is expired
Server returns logged in state for a tracker even while the token has expired
---
src/components/tracker/SettingsTrackerCard.tsx | 12 ++++++------
src/lib/data/Trackers.ts | 8 ++++++--
2 files changed, 12 insertions(+), 8 deletions(-)
diff --git a/src/components/tracker/SettingsTrackerCard.tsx b/src/components/tracker/SettingsTrackerCard.tsx
index 320617c1..7a6fabc5 100644
--- a/src/components/tracker/SettingsTrackerCard.tsx
+++ b/src/components/tracker/SettingsTrackerCard.tsx
@@ -24,7 +24,7 @@ import Button from '@mui/material/Button';
import { PasswordTextField } from '@/components/atoms/PasswordTextField.tsx';
import { makeToast } from '@/components/util/Toast.tsx';
import { requestManager } from '@/lib/requests/RequestManager.ts';
-import { TBaseTracker } from '@/lib/data/Trackers.ts';
+import { TBaseTracker, Trackers } from '@/lib/data/Trackers.ts';
export const SettingsTrackerCard = ({ tracker }: { tracker: TBaseTracker }) => {
const { t } = useTranslation();
@@ -93,7 +93,7 @@ export const SettingsTrackerCard = ({ tracker }: { tracker: TBaseTracker }) => {
/>
- {tracker.isLoggedIn && (
+ {Trackers.isLoggedIn(tracker) && (
@@ -101,12 +101,12 @@ export const SettingsTrackerCard = ({ tracker }: { tracker: TBaseTracker }) => {
diff --git a/src/lib/data/Trackers.ts b/src/lib/data/Trackers.ts
index 190f7b20..60f4d8e5 100644
--- a/src/lib/data/Trackers.ts
+++ b/src/lib/data/Trackers.ts
@@ -26,7 +26,7 @@ export type TrackerManga = TrackerSearchQuery['searchTracker']['trackSearches'][
export type TBaseTracker = GetTrackersQuery['trackers']['nodes'][number];
-type LoggedInInfo = Pick;
+type LoggedInInfo = Pick;
type TrackRecordTrackerInfo = { tracker: Partial };
@@ -43,8 +43,12 @@ export class Trackers {
return this.isUnsetDate(date) ? undefined : date;
}
+ static isLoggedIn(tracker: Tracker): boolean {
+ return tracker.isLoggedIn && !tracker.isTokenExpired;
+ }
+
static getLoggedIn(trackers: Tracker[]): Tracker[] {
- return trackers.filter((tracker) => tracker.isLoggedIn);
+ return trackers.filter(this.isLoggedIn);
}
static getTrackers(