|
1 | 1 | import { QueryParamsChannelsType, QueryParamsChannelsSort, QueryParamsStatsRange } from "podverse-helpers";
|
2 | 2 |
|
3 |
| -export const typeDropdownMenuItems = [ |
4 |
| - { label: "All", param: "type", value: "all" }, |
5 |
| - { label: "Subscribed", param: "type", value: "subscribed" }, |
6 |
| - { label: "Category", param: "type", value: "category" } |
7 |
| -]; |
8 |
| - |
9 |
| -export const sortDropdownMenuItems = [ |
10 |
| - { label: "Recent", param: "sort", value: "recent" }, |
11 |
| - { label: "Oldest", param: "sort", value: "oldest" }, |
12 |
| - { label: "A - Z", param: "sort", value: "alphabetical" }, |
13 |
| - { label: "Top", param: "sort", value: "top" }, |
14 |
| -]; |
15 |
| - |
16 |
| -export const rangeDropdownMenuItems = [ |
17 |
| - { label: "Day", param: "range", value: "day" }, |
18 |
| - { label: "Week", param: "range", value: "week" }, |
19 |
| - { label: "Month", param: "range", value: "month" }, |
20 |
| - { label: "All Time", param: "range", value: "all-time" }, |
21 |
| -]; |
22 |
| - |
23 |
| -export function getDropdownConfig(type?: QueryParamsChannelsType, sort?: QueryParamsChannelsSort, range?: QueryParamsStatsRange) { |
24 |
| - let currentSort = sort; |
25 |
| - let currentRange = range; |
| 3 | +export function getDropdownConfig({ type, sort, tFilters }: { |
| 4 | + sort?: QueryParamsChannelsSort, |
| 5 | + type?: QueryParamsChannelsType, |
| 6 | + tFilters: (key: string) => string |
| 7 | +}) { |
| 8 | + const sortTop = { label: tFilters("sort.top"), param: "sort", value: "top" }; |
| 9 | + |
| 10 | + let typeDropdownMenuItems = [ |
| 11 | + { label: tFilters("type.all"), param: "type", value: "all" }, |
| 12 | + { label: tFilters("type.subscribed"), param: "type", value: "subscribed" }, |
| 13 | + { label: tFilters("type.category"), param: "type", value: "category" } |
| 14 | + ]; |
| 15 | + |
| 16 | + let sortDropdownMenuItems = [ |
| 17 | + { label: tFilters("sort.recent"), param: "sort", value: "recent" }, |
| 18 | + { label: tFilters("sort.oldest"), param: "sort", value: "oldest" }, |
| 19 | + { label: tFilters("sort.a_z"), param: "sort", value: "alphabetical" }, |
| 20 | + sortTop |
| 21 | + ]; |
| 22 | + |
| 23 | + let rangeDropdownMenuItems = [ |
| 24 | + { label: tFilters("range.day"), param: "range", value: "day" }, |
| 25 | + { label: tFilters("range.week"), param: "range", value: "week" }, |
| 26 | + { label: tFilters("range.month"), param: "range", value: "month" }, |
| 27 | + { label: tFilters("range.all_time"), param: "range", value: "all-time" }, |
| 28 | + ]; |
| 29 | + |
| 30 | + if (type === "all" || type === "category") { |
| 31 | + sortDropdownMenuItems = [sortTop]; |
| 32 | + } |
| 33 | + |
26 | 34 | let showRangeDropdown = false;
|
| 35 | + if (sort === "top") { |
| 36 | + showRangeDropdown = true; |
| 37 | + } |
27 | 38 |
|
28 |
| - let typeMenuItems = typeDropdownMenuItems; |
29 |
| - let sortMenuItems = sortDropdownMenuItems; |
30 |
| - let rangeMenuItems = rangeDropdownMenuItems; |
| 39 | + return { |
| 40 | + typeMenuItems: typeDropdownMenuItems, |
| 41 | + sortMenuItems: sortDropdownMenuItems, |
| 42 | + rangeMenuItems: rangeDropdownMenuItems, |
| 43 | + showRangeDropdown, |
| 44 | + }; |
| 45 | +} |
| 46 | + |
| 47 | +type QueryParamConfig = { |
| 48 | + type?: QueryParamsChannelsType; |
| 49 | + sort?: QueryParamsChannelsSort; |
| 50 | + range?: QueryParamsStatsRange; |
| 51 | +} |
| 52 | + |
| 53 | +export function getCurrentSortAndRange({ type, sort, range }: QueryParamConfig) { |
| 54 | + let currentSort = sort; |
| 55 | + let currentRange = range; |
31 | 56 |
|
32 | 57 | if (type === "all" || type === "category") {
|
33 |
| - sortMenuItems = [{ label: "Top", param: "sort", value: "top" }]; |
34 | 58 | currentSort = "top";
|
35 | 59 | currentRange = currentRange || "day";
|
36 | 60 | } else if (type === "subscribed") {
|
37 |
| - sortMenuItems = sortDropdownMenuItems; |
38 | 61 | currentSort = currentSort || "alphabetical";
|
39 | 62 | }
|
40 | 63 |
|
41 |
| - if (currentSort !== "top") { |
42 |
| - showRangeDropdown = false; |
43 |
| - rangeMenuItems = []; |
44 |
| - } else { |
45 |
| - showRangeDropdown = true; |
46 |
| - } |
47 |
| - |
48 |
| - return { typeMenuItems, sortMenuItems, rangeMenuItems, currentSort, currentRange, showRangeDropdown }; |
| 64 | + return { currentSort, currentRange }; |
49 | 65 | }
|
0 commit comments