fix: coalesce PDA warehouse profile requests
This commit is contained in:
+9
-1
@@ -3,9 +3,17 @@ import { normalizeReceivingCandidate, normalizeReceivingSession, normalizeReceiv
|
||||
|
||||
const RECEIVING_BASE = '/pda/v1/last-leg/receiving-containers'
|
||||
const current = (suffix = '') => `${RECEIVING_BASE}/current${suffix}`
|
||||
let warehouseProfileRequest = null
|
||||
|
||||
export const listReceivingCandidates = async () => (await overseasRequest('GET', `${RECEIVING_BASE}/candidates`)).map(normalizeReceivingCandidate)
|
||||
export const getCurrentWarehouseProfile = async () => normalizeReceivingWarehouseProfile(await overseasRequest('GET', `${RECEIVING_BASE}/warehouse-profile`))
|
||||
export const getCurrentWarehouseProfile = () => {
|
||||
if (!warehouseProfileRequest) {
|
||||
warehouseProfileRequest = overseasRequest('GET', `${RECEIVING_BASE}/warehouse-profile`)
|
||||
.then(normalizeReceivingWarehouseProfile)
|
||||
.finally(() => { warehouseProfileRequest = null })
|
||||
}
|
||||
return warehouseProfileRequest
|
||||
}
|
||||
export const getReceivingContainer = async (containerNo) => normalizeReceivingSession(await overseasRequest('GET', `${RECEIVING_BASE}/${encodeURIComponent(containerNo)}`))
|
||||
export const prepareReceivingContainer = async (containerNo, request) => normalizeReceivingSession(await overseasRequest('POST', `${RECEIVING_BASE}/${encodeURIComponent(containerNo)}/prepare`, request))
|
||||
export const uploadCurrentUnloadPhoto = (filePath) => overseasUpload(current('/unload-photos/files'), filePath)
|
||||
|
||||
@@ -147,6 +147,8 @@ test('Chinese English and Spanish locale selection is persisted from profile wit
|
||||
})
|
||||
|
||||
test('home reuses the persisted warehouse profile instead of requesting it on every show', async () => {
|
||||
const home = await read('../src/pages/home/home.vue')
|
||||
const [home, inbound] = await Promise.all([read('../src/pages/home/home.vue'), read('../src/api/inbound.js')])
|
||||
assert.match(home, /if \(!this\.user\?\.warehouseCode \|\| !this\.user\?\.warehouseName\) this\.loadWarehouseProfile\(\)/)
|
||||
assert.match(inbound, /let warehouseProfileRequest = null/)
|
||||
assert.match(inbound, /if \(!warehouseProfileRequest\)[\s\S]*\.finally\(\(\) => \{ warehouseProfileRequest = null \}\)/)
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user