Skip to content

Commit 2fa3acb

Browse files
authored
fix: caching issue with resource fetching (#6165)
* fix: caching issue with resource fetching * chore: reset local storage directly
1 parent ee45012 commit 2fa3acb

File tree

2 files changed

+30
-19
lines changed

2 files changed

+30
-19
lines changed

src/flows/shared/BucketSelector/index.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ const BucketSelector: FC<Props> = ({
3636
testID = 'flow-bucket-selector',
3737
style = {},
3838
}) => {
39-
const {buckets, loading} = useContext(BucketContext)
39+
const {buckets, loading, refresh} = useContext(BucketContext)
4040
let buttonText = 'Loading buckets...'
4141

4242
useEffect(() => {
@@ -51,6 +51,11 @@ const BucketSelector: FC<Props> = ({
5151
onSelect(null)
5252
}, [buckets, onSelect])
5353

54+
const addBucket = (bucket: Bucket) => {
55+
refresh()
56+
onSelect(bucket)
57+
}
58+
5459
let menuItems = (
5560
<Dropdown.ItemEmpty>
5661
<TechnoSpinner strokeWidth={ComponentSize.Small} diameterPixels={32} />
@@ -99,7 +104,7 @@ const BucketSelector: FC<Props> = ({
99104
menuItems = (
100105
<>
101106
<CreateBucketDropdownItem
102-
onUpdateBucket={onSelect}
107+
onUpdateBucket={addBucket}
103108
testID={`${testID}--create`}
104109
/>
105110
<Dropdown.Divider />

src/shared/contexts/buckets.tsx

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -89,21 +89,6 @@ export const BucketProvider: FC<Props> = ({
8989
}
9090
}, [controller])
9191

92-
// keep the redux store in sync
93-
useEffect(() => {
94-
if (loading === RemoteDataState.Done) {
95-
dispatch(
96-
setBuckets(
97-
RemoteDataState.Done,
98-
normalize<Bucket, BucketEntities, string[]>(
99-
buckets.filter(b => b.type !== 'sample'),
100-
arrayOfBuckets
101-
)
102-
)
103-
)
104-
}
105-
}, [buckets, dispatch, loading])
106-
10792
// TODO: load bucket creation limits on org change
10893
// expose limits to frontend
10994

@@ -145,7 +130,7 @@ export const BucketProvider: FC<Props> = ({
145130
{
146131
method: 'GET',
147132
headers,
148-
signal: controller.current.signal,
133+
signal: controller.current?.signal,
149134
}
150135
)
151136
.then(response => {
@@ -173,11 +158,24 @@ export const BucketProvider: FC<Props> = ({
173158
bucks.user.sort((a, b) =>
174159
`${a.name}`.toLowerCase().localeCompare(`${b.name}`.toLowerCase())
175160
)
161+
162+
const _buckets = [...bucks.user, ...bucks.system]
176163
updateCache({
177164
loading: RemoteDataState.Done,
178165
lastFetch: Date.now(),
179-
buckets: [...bucks.user, ...bucks.system],
166+
buckets: _buckets,
180167
})
168+
169+
// keep the redux store in sync
170+
dispatch(
171+
setBuckets(
172+
RemoteDataState.Done,
173+
normalize<Bucket, BucketEntities, string[]>(
174+
_buckets.filter(b => b.type !== 'sample'),
175+
arrayOfBuckets
176+
)
177+
)
178+
)
181179
})
182180
.catch(error => {
183181
console.error({error})
@@ -195,6 +193,11 @@ export const BucketProvider: FC<Props> = ({
195193
} else if (loading === RemoteDataState.NotStarted) {
196194
fetchBuckets()
197195
}
196+
197+
return () => {
198+
// reset the lastFetch to trigger a fresh fetch on mount
199+
window.localStorage.setItem('buckets', JSON.stringify({}))
200+
}
198201
}, [])
199202

200203
const createBucket = (bucket: ExtendedBucket) => {
@@ -283,11 +286,14 @@ export const BucketProvider: FC<Props> = ({
283286
updateCache({
284287
buckets: [...bucks.user, ...bucks.system],
285288
})
289+
290+
refresh()
286291
}
287292

288293
const refresh = () => {
289294
fetchBuckets()
290295
}
296+
291297
const outBuckets = useMemo(
292298
() =>
293299
buckets

0 commit comments

Comments
 (0)