From 0713fd5a1e533315ce31acc6aad79b001b08e71c Mon Sep 17 00:00:00 2001 From: elcharitas Date: Mon, 3 Mar 2025 12:13:11 +0100 Subject: [PATCH 1/3] chore: store language in local storage --- packages/frontend/package.json | 2 +- .../frontend/src/api/services/alphadayApi.ts | 12 ++++- yarn.lock | 44 ++++++++++++++----- 3 files changed, 44 insertions(+), 14 deletions(-) diff --git a/packages/frontend/package.json b/packages/frontend/package.json index 46ea8e53..1eaef4a5 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -30,7 +30,7 @@ "@ionic/react": "7.8.1", "@ionic/react-router": "7.8.1", "@react-oauth/google": "0.12.1", - "@reduxjs/toolkit": "1.8.0", + "@reduxjs/toolkit": "2.6.0", "@sentry/react": "7.109.0", "@types/dompurify": "3.0.5", "@uniswap/widgets": "2.59.0", diff --git a/packages/frontend/src/api/services/alphadayApi.ts b/packages/frontend/src/api/services/alphadayApi.ts index 47393b23..fe6d7bb5 100644 --- a/packages/frontend/src/api/services/alphadayApi.ts +++ b/packages/frontend/src/api/services/alphadayApi.ts @@ -35,7 +35,7 @@ export const alphadayApi = createApi({ const token = authState.token.value; if (token != null) { // eslint-disable-next-line - headers.set("Authorization", `Token ${token}`); + headers.set("Authorization", `Token ${token}`); } else { Logger.debug( "alphadayApi::prepareHeaders: no session token" @@ -44,6 +44,16 @@ export const alphadayApi = createApi({ } return headers; }, + isJsonContentType(headers) { + localStorage.setItem( + "language", + headers.get("Accept-Language") ?? "en" + ); + return ( + headers.get("content-type")?.includes("application/json") ?? + false + ); + }, }), endpoints: () => ({}), }); diff --git a/yarn.lock b/yarn.lock index 5f4621c4..e2ad04b0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3606,15 +3606,15 @@ resolved "https://registry.yarnpkg.com/@react-oauth/google/-/google-0.12.1.tgz#b76432c3a525e9afe076f787d2ded003fcc1bee9" integrity sha512-qagsy22t+7UdkYAiT5ZhfM4StXi9PPNvw0zuwNmabrWyMKddczMtBIOARflbaIj+wHiQjnMAsZmzsUYuXeyoSg== -"@reduxjs/toolkit@1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-1.8.0.tgz#8ae875e481ed97e4a691aafa034f876bfd0413c4" - integrity sha512-cdfHWfcvLyhBUDicoFwG1u32JqvwKDxLxDd7zSmSoFw/RhYLOygIRtmaMjPRUUHmVmmAGAvquLLsKKU/677kSQ== +"@reduxjs/toolkit@2.6.0": + version "2.6.0" + resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-2.6.0.tgz#fb4fdd0971162a1f18a6c52899fdfd9c77674e67" + integrity sha512-mWJCYpewLRyTuuzRSEC/IwIBBkYg2dKtQas8mty5MaV2iXzcmicS3gW554FDeOvLnY3x13NIk8MB1e8wHO7rqQ== dependencies: - immer "^9.0.7" - redux "^4.1.2" - redux-thunk "^2.4.1" - reselect "^4.1.5" + immer "^10.0.3" + redux "^5.0.1" + redux-thunk "^3.1.0" + reselect "^5.1.0" "@reduxjs/toolkit@^1.6.1": version "1.9.7" @@ -10311,7 +10311,12 @@ image-q@^4.0.0: dependencies: "@types/node" "16.9.1" -immer@^9.0.21, immer@^9.0.6, immer@^9.0.7: +immer@^10.0.3: + version "10.1.1" + resolved "https://registry.yarnpkg.com/immer/-/immer-10.1.1.tgz#206f344ea372d8ea176891545ee53ccc062db7bc" + integrity sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw== + +immer@^9.0.21, immer@^9.0.6: version "9.0.21" resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.21.tgz#1e025ea31a40f24fb064f1fef23e931496330176" integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== @@ -13780,18 +13785,28 @@ redux-persist@6.0.0: resolved "https://registry.yarnpkg.com/redux-persist/-/redux-persist-6.0.0.tgz#b4d2972f9859597c130d40d4b146fecdab51b3a8" integrity sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ== -redux-thunk@^2.4.1, redux-thunk@^2.4.2: +redux-thunk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.4.2.tgz#b9d05d11994b99f7a91ea223e8b04cf0afa5ef3b" integrity sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q== -redux@>=4.1.2, redux@^4.0.0, redux@^4.0.4, redux@^4.1.2, redux@^4.2.1: +redux-thunk@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-3.1.0.tgz#94aa6e04977c30e14e892eae84978c1af6058ff3" + integrity sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw== + +redux@>=4.1.2, redux@^4.0.0, redux@^4.0.4, redux@^4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/redux/-/redux-4.2.1.tgz#c08f4306826c49b5e9dc901dee0452ea8fce6197" integrity sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w== dependencies: "@babel/runtime" "^7.9.2" +redux@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/redux/-/redux-5.0.1.tgz#97fa26881ce5746500125585d5642c77b6e9447b" + integrity sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w== + reflect.getprototypeof@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz#aaccbf41aca3821b87bb71d9dcbc7ad0ba50a3f3" @@ -13984,11 +13999,16 @@ requires-port@^1.0.0: resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== -reselect@^4.1.5, reselect@^4.1.8: +reselect@^4.1.8: version "4.1.8" resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.8.tgz#3f5dc671ea168dccdeb3e141236f69f02eaec524" integrity sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ== +reselect@^5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/reselect/-/reselect-5.1.1.tgz#c766b1eb5d558291e5e550298adb0becc24bb72e" + integrity sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w== + resize-observer-polyfill@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" From a9a3e061942c285e5001be58f8e9367b3a5d75cb Mon Sep 17 00:00:00 2001 From: elcharitas Date: Tue, 4 Mar 2025 09:52:24 +0100 Subject: [PATCH 2/3] chore: fix types --- .../src/api/services/views/viewsEndpoints.ts | 2 +- .../mobile-containers/SuperfeedContainer.tsx | 18 ++++++++++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/packages/frontend/src/api/services/views/viewsEndpoints.ts b/packages/frontend/src/api/services/views/viewsEndpoints.ts index 06d4dbad..a58b4f83 100644 --- a/packages/frontend/src/api/services/views/viewsEndpoints.ts +++ b/packages/frontend/src/api/services/views/viewsEndpoints.ts @@ -7,7 +7,7 @@ import { Logger } from "src/api/utils/logging"; import { TEMPLATES_DICT } from "src/types"; import CONFIG from "../../../config/config"; import { alphadayApi } from "../alphadayApi"; -import { +import type { TRemoteUserView, TRemoteUserViewWidget, TViewsRequest, diff --git a/packages/frontend/src/mobile-containers/SuperfeedContainer.tsx b/packages/frontend/src/mobile-containers/SuperfeedContainer.tsx index 53fdd46d..7aa00347 100644 --- a/packages/frontend/src/mobile-containers/SuperfeedContainer.tsx +++ b/packages/frontend/src/mobile-containers/SuperfeedContainer.tsx @@ -304,9 +304,7 @@ const SuperfeedContainer: FC<{ return; } history.push( - `/superfeed/search/${t - .map((tag) => tag.slug) - .join(",")}` + `/superfeed/search/${t.map((tag) => tag.slug).join(",")}` ); }} initialSearchValues={initialSearchValues} @@ -314,7 +312,19 @@ const SuperfeedContainer: FC<{ /> )} - + { + refetch() + .then(() => { + setFeedData(undefined); + setIsEmptyFeedResult(false); + reset(); + }) + .catch(() => { + Logger.error("Error refreshing feed"); + }); + }} + > Date: Tue, 4 Mar 2025 10:30:24 +0100 Subject: [PATCH 3/3] chore: attempt to update store --- packages/frontend/src/api/services/alphadayApi.ts | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/packages/frontend/src/api/services/alphadayApi.ts b/packages/frontend/src/api/services/alphadayApi.ts index fe6d7bb5..ef49a685 100644 --- a/packages/frontend/src/api/services/alphadayApi.ts +++ b/packages/frontend/src/api/services/alphadayApi.ts @@ -1,7 +1,10 @@ import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react"; -import { TUserAuth } from "src/api/types"; +import type { TUserAuth } from "src/api/types"; import { Logger } from "src/api/utils/logging"; import CONFIG from "../../config/config"; +import { setSelectedLanguageCode } from "../store"; +import { store } from "../store/store"; +import type { ELanguageCode } from "../types/language"; const { API_BASE_URL } = CONFIG.API.DEFAULT; @@ -45,10 +48,12 @@ export const alphadayApi = createApi({ return headers; }, isJsonContentType(headers) { - localStorage.setItem( - "language", - headers.get("Accept-Language") ?? "en" - ); + const language = headers.get("Accept-Language"); + if (language) { + store.dispatch( + setSelectedLanguageCode({ code: language as ELanguageCode }) + ); + } return ( headers.get("content-type")?.includes("application/json") ?? false