From 83b4d23fa7b95e622c84bd50989e6b5c44ad785d Mon Sep 17 00:00:00 2001 From: skywalker Date: Thu, 29 Aug 2024 16:26:21 +0300 Subject: [PATCH] fix(instrument-page): do not send list favorite if user not logged in --- client/src/pages/instrument/api/loader.ts | 25 ++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/client/src/pages/instrument/api/loader.ts b/client/src/pages/instrument/api/loader.ts index 85e7acfe..c06031bb 100644 --- a/client/src/pages/instrument/api/loader.ts +++ b/client/src/pages/instrument/api/loader.ts @@ -3,6 +3,7 @@ import { InstrumentDetail } from "generated/model"; import { GetInstrumentByIdApi } from "generated/api/get-instrument-by-id-api"; import { ListFavoriteApi } from "generated/api/list-favorite-api"; import { apiConfig } from "shared/config/api"; +import Jwt from "domain/model/jwt"; export interface InstrumentLoader { instrument: InstrumentDetail; @@ -19,17 +20,31 @@ export const loader: LoaderFunction = async ({ parseInt(params.instrumentId as string), ); - const listFavoriteRequest = await listFavorite.listFavorite({ - withCredentials: true, - }); - if (instrumentRequest.status !== 200) { throw new Error( `Failed to extract instrument ID: '${params.instrumentId}'`, ); } - const instrument = instrumentRequest.data; + + const jwt = Jwt.extractFromCookie() + if (jwt === null || jwt.expired()) { + return { + instrument: instrument, + favorite: false, // there is no favorite button + }; + } + + const listFavoriteRequest = await listFavorite.listFavorite({ + headers: { + Authorization: `Bearer ${jwt.toStringValue()}`, + }, + }); + + if (listFavoriteRequest.status !== 200) { + throw new Error(`Failed to extract favorite list}`) + } + const favoriteIds = listFavoriteRequest.data.content.map( (instrument_detail) => instrument_detail.instrument_id.instrument_id, );