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..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; @@ -35,7 +38,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 +47,18 @@ export const alphadayApi = createApi({ } return headers; }, + isJsonContentType(headers) { + const language = headers.get("Accept-Language"); + if (language) { + store.dispatch( + setSelectedLanguageCode({ code: language as ELanguageCode }) + ); + } + return ( + headers.get("content-type")?.includes("application/json") ?? + false + ); + }, }), endpoints: () => ({}), }); 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"); + }); + }} + > =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"