Improve pagination state logic to avoid potential windows where state can get out of sync
This commit is contained in:
parent
94f790f310
commit
19198b6d50
|
@ -48,7 +48,6 @@ export const fetchTableData = opts => {
|
||||||
const fetchPage = async bookmark => {
|
const fetchPage = async bookmark => {
|
||||||
lastBookmark = bookmark
|
lastBookmark = bookmark
|
||||||
const { tableId, limit, sortColumn, sortOrder, paginate } = options
|
const { tableId, limit, sortColumn, sortOrder, paginate } = options
|
||||||
store.update($store => ({ ...$store, loading: true }))
|
|
||||||
const res = await API.post(`/api/${options.tableId}/search`, {
|
const res = await API.post(`/api/${options.tableId}/search`, {
|
||||||
tableId,
|
tableId,
|
||||||
query,
|
query,
|
||||||
|
@ -59,7 +58,6 @@ export const fetchTableData = opts => {
|
||||||
paginate,
|
paginate,
|
||||||
bookmark,
|
bookmark,
|
||||||
})
|
})
|
||||||
store.update($store => ({ ...$store, loading: false, loaded: true }))
|
|
||||||
return await res.json()
|
return await res.json()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -103,7 +101,7 @@ export const fetchTableData = opts => {
|
||||||
if (!schema) {
|
if (!schema) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
store.update($store => ({ ...$store, schema }))
|
store.update($store => ({ ...$store, schema, loading: true }))
|
||||||
|
|
||||||
// Work out what sort type to use
|
// Work out what sort type to use
|
||||||
if (!sortColumn || !schema[sortColumn]) {
|
if (!sortColumn || !schema[sortColumn]) {
|
||||||
|
@ -135,6 +133,7 @@ export const fetchTableData = opts => {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fetch next page
|
// Fetch next page
|
||||||
|
store.update($store => ({ ...$store, loading: true }))
|
||||||
const page = await fetchPage(state.bookmarks[state.pageNumber + 1])
|
const page = await fetchPage(state.bookmarks[state.pageNumber + 1])
|
||||||
|
|
||||||
// Update state
|
// Update state
|
||||||
|
@ -148,6 +147,7 @@ export const fetchTableData = opts => {
|
||||||
pageNumber: pageNumber + 1,
|
pageNumber: pageNumber + 1,
|
||||||
rows: page.rows,
|
rows: page.rows,
|
||||||
bookmarks,
|
bookmarks,
|
||||||
|
loading: false,
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -160,6 +160,7 @@ export const fetchTableData = opts => {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fetch previous page
|
// Fetch previous page
|
||||||
|
store.update($store => ({ ...$store, loading: true }))
|
||||||
const page = await fetchPage(state.bookmarks[state.pageNumber - 1])
|
const page = await fetchPage(state.bookmarks[state.pageNumber - 1])
|
||||||
|
|
||||||
// Update state
|
// Update state
|
||||||
|
@ -168,6 +169,7 @@ export const fetchTableData = opts => {
|
||||||
...$store,
|
...$store,
|
||||||
pageNumber: $store.pageNumber - 1,
|
pageNumber: $store.pageNumber - 1,
|
||||||
rows: page.rows,
|
rows: page.rows,
|
||||||
|
loading: false,
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue