@@ -56,7 +56,7 @@ const createDefaultFilters = (staffId: string, defaultMyChecked: boolean): {
5656 } ,
5757 columnFilters : [
5858 {
59- id : "primary_officer_ids " ,
59+ id : "primary_officer " ,
6060 value : [ staffId ] ,
6161 } ,
6262 ] ,
@@ -93,7 +93,7 @@ export function Inspections() {
9393 ) ;
9494
9595 // Initialize state with functions to avoid re-computation
96- const [ myInspectionsChecked , setMyInspectionsChecked ] = useState ( true ) ;
96+ const [ myInspectionsChecked , setMyInspectionsChecked ] = useState ( false ) ;
9797 const [ sorting , setSorting ] = useState < MRT_SortingState > ( ( ) => [
9898 { id : "start_date" , desc : true } ,
9999 ] ) ;
@@ -118,16 +118,11 @@ export function Inspections() {
118118 const [ isRestored , setIsRestored ] = useState ( false ) ;
119119
120120 // Get cached filters store methods
121- const { getFilters, getExternalFilters, getSorting } = cachedFiltersStore ( ) ;
121+ const { getFilters, getExternalFilters, getSorting, hasHydrated } = cachedFiltersStore ( ) ;
122122
123- // Memoize cached values to prevent unnecessary re-reads
124- const cachedData = useMemo ( ( ) => {
125- return {
126- columnFilters : getFilters ( inspectionsColumnFiltersCacheKey ) ,
127- externalFilters : getExternalFilters ( inspectionsColumnFiltersCacheKey ) ,
128- sorting : getSorting ( inspectionsColumnFiltersCacheKey ) ,
129- } ;
130- } , [ getFilters , getExternalFilters , getSorting ] ) ;
123+ const cachedColumnFilters = getFilters ( inspectionsColumnFiltersCacheKey ) ;
124+ const cachedExternalFilters = getExternalFilters ( inspectionsColumnFiltersCacheKey ) ;
125+ const cachedSorting = getSorting ( inspectionsColumnFiltersCacheKey ) ;
131126
132127 const currentStaff = useMemo ( ( ) => {
133128 return getCurrentStaff ( currentUser , staffList ) ;
@@ -136,23 +131,29 @@ export function Inspections() {
136131 // Initialization effect
137132 useEffect ( ( ) => {
138133 // Don't initialize if already done, or if it isn't loaded yet
139- if ( filtersInitialized . current || authLoading || staffLoading || ! currentStaff ) {
134+ if ( ! hasHydrated || filtersInitialized . current || authLoading || staffLoading || ! currentStaff ) {
140135 return ;
141136 }
142137
143138 filtersInitialized . current = true ;
144139
145- const hasCache = cachedData . columnFilters . length > 0 ||
146- ( cachedData . externalFilters && Object . keys ( cachedData . externalFilters ) . length > 0 ) ;
140+ const hasCache =
141+ ( Array . isArray ( cachedColumnFilters ) &&
142+ cachedColumnFilters . length > 0 ) ||
143+ ( cachedExternalFilters &&
144+ Object . keys ( cachedExternalFilters ) . length > 0 ) ||
145+ ( cachedSorting &&
146+ Array . isArray ( cachedSorting ) &&
147+ cachedSorting . length > 0 ) ;
147148
148149 if ( hasCache ) {
149150 // Restore from cache
150- if ( cachedData . columnFilters . length > 0 ) {
151- setColumnFilters ( cachedData . columnFilters ) ;
151+ if ( cachedColumnFilters . length > 0 ) {
152+ setColumnFilters ( cachedColumnFilters ) ;
152153 }
153154
154- if ( cachedData . externalFilters ) {
155- const restored = cachedData . externalFilters as Record < string , string [ ] | string > ;
155+ if ( cachedExternalFilters ) {
156+ const restored = cachedExternalFilters as Record < string , string [ ] | string > ;
156157 setExternalFilters ( restored ) ;
157158
158159 if ( restored . globalFilter ) {
@@ -164,15 +165,17 @@ export function Inspections() {
164165 setMyInspectionsChecked ( Boolean ( restored . myInspectionsChecked ) ) ;
165166 } else {
166167 // Get from primary_officer filter
167- const primaryOfficer = restored . primary_officer_ids || [ ] ;
168- const derivedState = Array . isArray ( primaryOfficer ) && primaryOfficer . length > 0 ;
168+ const primaryOfficer = restored . primary_officer_ids ;
169+ const derivedState =
170+ Array . isArray ( primaryOfficer ) &&
171+ primaryOfficer . some ( ( id ) => Boolean ( id ) ) ;
169172 setMyInspectionsChecked ( derivedState ) ;
170173 }
171174 }
172175
173- if ( cachedData . sorting && Array . isArray ( cachedData . sorting ) && cachedData . sorting . length > 0 ) {
174- if ( cachedData . sorting [ 0 ] ?. id ) {
175- setSorting ( cachedData . sorting ) ;
176+ if ( cachedSorting && Array . isArray ( cachedSorting ) && cachedSorting . length > 0 ) {
177+ if ( cachedSorting [ 0 ] ?. id ) {
178+ setSorting ( cachedSorting ) ;
176179 }
177180 }
178181 } else {
@@ -191,7 +194,7 @@ export function Inspections() {
191194 }
192195
193196 setIsRestored ( true ) ;
194- } , [ authLoading , staffLoading , currentStaff , cachedData ] ) ;
197+ } , [ authLoading , staffLoading , currentStaff , cachedColumnFilters , cachedExternalFilters , cachedSorting , hasHydrated ] ) ;
195198
196199 // Debounced cache persistence - only after initialization
197200 const cacheTimeoutRef = useRef < NodeJS . Timeout > ( ) ;
@@ -281,7 +284,6 @@ export function Inspections() {
281284 ( filter ) => filter . id === "primary_officer"
282285 ) ;
283286
284- // If user removed the primary_officer filter, re-add it
285287 if ( ! hasPrimaryOfficerFilter ) {
286288 const primaryOfficerFilter = {
287289 id : "primary_officer" ,
@@ -294,7 +296,7 @@ export function Inspections() {
294296 return newFilters ;
295297 } ) ;
296298 } ,
297- [ myInspectionsChecked , currentStaff ]
299+ [ currentStaff , myInspectionsChecked ]
298300 ) ;
299301
300302 // Optimize My Inspections switch handler
@@ -304,7 +306,6 @@ export function Inspections() {
304306 externalFilters : Record < string , string [ ] | string > ;
305307 columnFilters ?: MRT_TableState < Inspection > [ "columnFilters" ] ;
306308 } ) => {
307- // Batch state updates
308309 setMyInspectionsChecked ( filters . checked ) ;
309310 setExternalFilters ( filters . externalFilters ) ;
310311 setPagination ( ( prev ) => ( { ...prev , pageIndex : 0 } ) ) ;
0 commit comments