mirror of
https://github.com/hydralauncher/hydra.git
synced 2025-02-09 03:37:45 +03:00
feat: merging with achievements
This commit is contained in:
parent
8c1c86c374
commit
7c497977a2
@ -67,10 +67,10 @@ export function Header() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!location.pathname.startsWith("/catalogue")) {
|
if (!location.pathname.startsWith("/catalogue") && searchValue) {
|
||||||
dispatch(setFilters({ title: "" }));
|
dispatch(setFilters({ title: "" }));
|
||||||
}
|
}
|
||||||
}, [location.pathname, dispatch]);
|
}, [location.pathname, searchValue, dispatch]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
@ -5,6 +5,7 @@ import type { CatalogueSearchPayload } from "@types";
|
|||||||
|
|
||||||
export interface CatalogueSearchState {
|
export interface CatalogueSearchState {
|
||||||
filters: CatalogueSearchPayload;
|
filters: CatalogueSearchPayload;
|
||||||
|
page: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
const initialState: CatalogueSearchState = {
|
const initialState: CatalogueSearchState = {
|
||||||
@ -16,6 +17,7 @@ const initialState: CatalogueSearchState = {
|
|||||||
genres: [],
|
genres: [],
|
||||||
developers: [],
|
developers: [],
|
||||||
},
|
},
|
||||||
|
page: 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
export const catalogueSearchSlice = createSlice({
|
export const catalogueSearchSlice = createSlice({
|
||||||
@ -27,11 +29,20 @@ export const catalogueSearchSlice = createSlice({
|
|||||||
action: PayloadAction<Partial<CatalogueSearchPayload>>
|
action: PayloadAction<Partial<CatalogueSearchPayload>>
|
||||||
) => {
|
) => {
|
||||||
state.filters = { ...state.filters, ...action.payload };
|
state.filters = { ...state.filters, ...action.payload };
|
||||||
|
state.page = initialState.page;
|
||||||
},
|
},
|
||||||
clearFilters: (state) => {
|
clearFilters: (state) => {
|
||||||
state.filters = initialState.filters;
|
state.filters = initialState.filters;
|
||||||
|
state.page = initialState.page;
|
||||||
|
},
|
||||||
|
setPage: (state, action: PayloadAction<number>) => {
|
||||||
|
state.page = action.payload;
|
||||||
|
},
|
||||||
|
clearPage: (state) => {
|
||||||
|
state.page = initialState.page;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
export const { setFilters, clearFilters } = catalogueSearchSlice.actions;
|
export const { setFilters, clearFilters, setPage, clearPage } =
|
||||||
|
catalogueSearchSlice.actions;
|
||||||
|
@ -13,7 +13,7 @@ import "./catalogue.scss";
|
|||||||
import { SPACING_UNIT, vars } from "@renderer/theme.css";
|
import { SPACING_UNIT, vars } from "@renderer/theme.css";
|
||||||
import { downloadSourcesTable } from "@renderer/dexie";
|
import { downloadSourcesTable } from "@renderer/dexie";
|
||||||
import { FilterSection } from "./filter-section";
|
import { FilterSection } from "./filter-section";
|
||||||
import { setFilters } from "@renderer/features";
|
import { setFilters, setPage } from "@renderer/features";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import Skeleton, { SkeletonTheme } from "react-loading-skeleton";
|
import Skeleton, { SkeletonTheme } from "react-loading-skeleton";
|
||||||
import { Pagination } from "./pagination";
|
import { Pagination } from "./pagination";
|
||||||
@ -42,12 +42,11 @@ export default function Catalogue() {
|
|||||||
|
|
||||||
const [results, setResults] = useState<any[]>([]);
|
const [results, setResults] = useState<any[]>([]);
|
||||||
|
|
||||||
const [page, setPage] = useState(1);
|
|
||||||
const [itemsCount, setItemsCount] = useState(0);
|
const [itemsCount, setItemsCount] = useState(0);
|
||||||
|
|
||||||
const { formatNumber } = useFormat();
|
const { formatNumber } = useFormat();
|
||||||
|
|
||||||
const { filters } = useAppSelector((state) => state.catalogueSearch);
|
const { filters, page } = useAppSelector((state) => state.catalogueSearch);
|
||||||
|
|
||||||
const dispatch = useAppDispatch();
|
const dispatch = useAppDispatch();
|
||||||
|
|
||||||
@ -103,10 +102,6 @@ export default function Catalogue() {
|
|||||||
}));
|
}));
|
||||||
}, [steamGenresMapping, filters.genres]);
|
}, [steamGenresMapping, filters.genres]);
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
setPage(1);
|
|
||||||
}, [filters]);
|
|
||||||
|
|
||||||
const steamUserTagsFilterItems = useMemo(() => {
|
const steamUserTagsFilterItems = useMemo(() => {
|
||||||
if (!steamUserTags[language]) return [];
|
if (!steamUserTags[language]) return [];
|
||||||
|
|
||||||
@ -240,7 +235,7 @@ export default function Catalogue() {
|
|||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{groupedFilters.map((filter) => (
|
{groupedFilters.map((filter) => (
|
||||||
<li key={filter.label}>
|
<li key={`${filter.key}-${filter.value}`}>
|
||||||
<FilterItem
|
<FilterItem
|
||||||
filter={filter.label}
|
filter={filter.label}
|
||||||
orbColor={filter.orbColor}
|
orbColor={filter.orbColor}
|
||||||
@ -308,7 +303,7 @@ export default function Catalogue() {
|
|||||||
<Pagination
|
<Pagination
|
||||||
page={page}
|
page={page}
|
||||||
totalPages={Math.ceil(itemsCount / PAGE_SIZE)}
|
totalPages={Math.ceil(itemsCount / PAGE_SIZE)}
|
||||||
onPageChange={setPage}
|
onPageChange={(page) => dispatch(setPage(page))}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
Reference in New Issue
Block a user