Skip to content

Commit ce6f8b1

Browse files
fix: Guard against undefined organizationFilter during Redux hydration
Fixes GITBOX-1
1 parent 63b73f0 commit ce6f8b1

File tree

2 files changed

+9
-12
lines changed

2 files changed

+9
-12
lines changed

components/Board/AddRepositoryCombobox.tsx

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,8 @@ export const AddRepositoryCombobox = memo(function AddRepositoryCombobox({
6060

6161
// Filters (organizationFilter persisted to localStorage via Redux)
6262
const dispatch = useAppDispatch()
63-
const organizationFilter = useAppSelector(selectOrganizationFilter)
64-
// TODO: Implement topics filter UI
65-
// const [topicsFilter, setTopicsFilter] = useState<string[]>([])
63+
// Nullish coalescing ensures safe default during Redux hydration (fixes GITBOX-1)
64+
const organizationFilter = useAppSelector(selectOrganizationFilter) ?? 'all'
6665
const [visibilityFilter, setVisibilityFilter] = useState<
6766
'all' | 'public' | 'private'
6867
>('all')
@@ -213,13 +212,6 @@ export const AddRepositoryCombobox = memo(function AddRepositoryCombobox({
213212
filtered = filtered.filter((repo) => repo.visibility === visibilityFilter)
214213
}
215214

216-
// TODO: Topics filter
217-
// if (topicsFilter.length > 0) {
218-
// filtered = filtered.filter(repo =>
219-
// topicsFilter.some(topic => repo.topics?.includes(topic))
220-
// )
221-
// }
222-
223215
return filtered
224216
}, [userRepos, debouncedQuery, organizationFilter, visibilityFilter])
225217

lib/redux/slices/settingsSlice.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,5 +91,10 @@ export const selectCompactMode = (state: { settings: SettingsState }) =>
9191
state.settings.compactMode
9292
export const selectShowArchived = (state: { settings: SettingsState }) =>
9393
state.settings.showArchived
94-
export const selectOrganizationFilter = (state: { settings: SettingsState }) =>
95-
state.settings.organizationFilter
94+
/**
95+
* Selector for organization filter with safe default
96+
* @param state - Redux state with settings slice
97+
* @returns Organization filter value, defaults to 'all' if state is hydrating
98+
*/
99+
export const selectOrganizationFilter = (state: { settings?: SettingsState }) =>
100+
state.settings?.organizationFilter ?? 'all'

0 commit comments

Comments
 (0)