4
4
useDashboard ,
5
5
useIsWorkspaceActionsEnabled ,
6
6
} from "components/Dashboard/DashboardProvider" ;
7
- import { type FC , useEffect , useState , useSyncExternalStore } from "react" ;
7
+ import { type FC , useEffect , useState } from "react" ;
8
8
import { Helmet } from "react-helmet-async" ;
9
9
import { pageTitle } from "utils/page" ;
10
10
import { useWorkspacesData , useWorkspaceUpdate } from "./data" ;
@@ -140,29 +140,6 @@ const WorkspacesPage: FC = () => {
140
140
141
141
export default WorkspacesPage ;
142
142
143
- const workspaceFilterKey = "WorkspacesPage/filter" ;
144
- const defaultWorkspaceFilter = "owner:me" ;
145
-
146
- // Function should stay outside components as much as possible; if declared
147
- // inside the component, React would add/remove event listeners every render
148
- function subscribeToFilterChanges ( notifyReact : ( ) => void ) {
149
- const onStorageChange = ( event : StorageEvent ) => {
150
- const { key, storageArea, oldValue, newValue } = event ;
151
-
152
- const shouldNotify =
153
- key === workspaceFilterKey &&
154
- storageArea === window . localStorage &&
155
- newValue !== oldValue ;
156
-
157
- if ( shouldNotify ) {
158
- notifyReact ( ) ;
159
- }
160
- } ;
161
-
162
- window . addEventListener ( "storage" , onStorageChange ) ;
163
- return ( ) => window . removeEventListener ( "storage" , onStorageChange ) ;
164
- }
165
-
166
143
type UseWorkspacesFilterOptions = {
167
144
searchParamsResult : ReturnType < typeof useSearchParams > ;
168
145
onFilterChange : ( ) => void ;
@@ -172,27 +149,10 @@ const useWorkspacesFilter = ({
172
149
searchParamsResult,
173
150
onFilterChange,
174
151
} : UseWorkspacesFilterOptions ) => {
175
- // Using useSyncExternalStore store to safely access localStorage from the
176
- // first render; both snapshot callbacks return primitives, so no special
177
- // trickery needed to prevent hook from immediately blowing up in dev mode
178
- const localStorageFilter = useSyncExternalStore (
179
- subscribeToFilterChanges ,
180
- ( ) => {
181
- return (
182
- window . localStorage . getItem ( workspaceFilterKey ) ??
183
- defaultWorkspaceFilter
184
- ) ;
185
- } ,
186
- ( ) => defaultWorkspaceFilter ,
187
- ) ;
188
-
189
152
const filter = useFilter ( {
190
- fallbackFilter : localStorageFilter ,
153
+ fallbackFilter : "owner:me" ,
191
154
searchParamsResult,
192
- onUpdate : ( newValues ) => {
193
- window . localStorage . setItem ( workspaceFilterKey , newValues ) ;
194
- onFilterChange ( ) ;
195
- } ,
155
+ onUpdate : onFilterChange ,
196
156
} ) ;
197
157
198
158
const permissions = usePermissions ( ) ;
0 commit comments