Skip to content

Commit 6e0f025

Browse files
committed
Save the last selected tag and date range
1 parent a99d71a commit 6e0f025

2 files changed

Lines changed: 35 additions & 12 deletions

File tree

src/cards/ReposCard.js

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -63,33 +63,44 @@ const TAGS_MENU_ID = "tags-menu";
6363
const DATE_RANGE_MENU_ID = "date-range-id"
6464

6565
function ReposCard({ analyticsTag, icon, withAds }) {
66+
67+
const getInitialSelectedTag = () => {
68+
const githubCardSettings = cardsSettings && cardsSettings.repos ? cardsSettings.repos : null
69+
if (githubCardSettings && githubCardSettings.language) {
70+
return getTags().find((t) => t.label == githubCardSettings.language)
71+
}
72+
73+
return getTags().find((t) => t.githubValues != null)
74+
}
75+
76+
const getInitialDateRange = () => {
77+
const githubCardSettings = cardsSettings && cardsSettings.repos ? cardsSettings.repos : null
78+
console.log(githubCardSettings)
79+
if (githubCardSettings && githubCardSettings.dateRange) {
80+
return githubCardSettings.dateRange
81+
}
82+
return 'daily'
83+
}
84+
6685
const globalTag = { value: 'global', label: 'All trending', githubValues: ['global'] }
6786

6887
const preferences = useContext(PreferencesContext)
6988

70-
const { userSelectedTags = [], userBookmarks = [] } = preferences
89+
const { userSelectedTags = [], dispatcher, cardsSettings } = preferences
7190

7291
const getTags = () => [...userSelectedTags, globalTag]
7392

7493
const { show: showMenu } = useContextMenu()
7594

76-
const [selectedTag, setSelectedTag] = useState(getTags()[0])
77-
const [since, setSince] = useState('daily')
95+
const [selectedTag, setSelectedTag] = useState(getInitialSelectedTag())
96+
const [since, setSince] = useState(getInitialDateRange())
7897
const [refresh, setRefresh] = useState(true)
7998
const dateRangeMapper = {
8099
daily: 'the day',
81100
weekly: 'the week',
82101
monthly: 'the month',
83102
}
84103

85-
const getInitialSelectedTag = () => {
86-
return getTags().find((t) => t.githubValues != null)
87-
}
88-
89-
useEffect(() => {
90-
setSelectedTag(getInitialSelectedTag())
91-
}, [])
92-
93104
useEffect(() => {
94105
setSelectedTag(getInitialSelectedTag())
95106
setRefresh(!refresh)
@@ -98,11 +109,13 @@ function ReposCard({ analyticsTag, icon, withAds }) {
98109
const onSelectedTagChange = (selTag) => {
99110
setSelectedTag(selTag)
100111
trackReposLanguageChange(selTag.value)
112+
dispatcher({ type: 'setCardSettings', value: { card: 'repos', language: selTag.label } })
101113
setRefresh(!refresh)
102114
}
103115

104116
const onDateRangeChange = (dateRange) => {
105117
setSince(dateRange)
118+
dispatcher({ type: 'setCardSettings', value: { card: 'repos', dateRange } })
106119
trackReposDateRangeChange(dateRange)
107120
setRefresh(!refresh)
108121
}
@@ -165,7 +178,7 @@ function ReposCard({ analyticsTag, icon, withAds }) {
165178
<Menu id={TAGS_MENU_ID} animation={animation.fade}>
166179
{getTags().map((tag) => {
167180
return (
168-
<Item key={tag} onClick={() => onSelectedTagChange(tag)}>
181+
<Item key={tag.value} onClick={() => onSelectedTagChange(tag)}>
169182
{tag.label}
170183
</Item>
171184
)

src/preferences/AppReducer.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,15 @@ const AppReducer = (state, action) => {
5454
case 'setSearchEngine':
5555
newState = { ...newState, searchEngine: value.label }
5656
break
57+
case 'setCardSettings':
58+
newState = {
59+
...newState,
60+
cardsSettings: {
61+
...newState?.cardsSettings,
62+
[value.card]: { ...newState?.cardsSettings?.[value.card], ...value },
63+
},
64+
}
65+
break
5766
default:
5867
throw new Error()
5968
}
@@ -67,6 +76,7 @@ const AppReducer = (state, action) => {
6776
changelogMeta: newState.changelogMeta,
6877
userBookmarks: newState.userBookmarks,
6978
searchEngine: newState.searchEngine,
79+
cardsSettings: newState.cardsSettings,
7080
}
7181
AppStorage.setItem(LS_PREFERENCES_KEY, storageData)
7282
return newState

0 commit comments

Comments
 (0)