workOrderPush.js 713 B

123456789101112131415
  1. import { parseStamp } from './statusPush.js'
  2. /** Reject stale updates per order; different orders may share a scan timestamp. */
  3. export function acceptWorkOrderDelta(seen, event) {
  4. const stamp = parseStamp(event && event.serverUpdatedAt)
  5. const current = seen || {}
  6. if (stamp === null || !event || !Array.isArray(event.items)) return { seen: current, items: [] }
  7. const next = Object.assign(Object.create(null), current)
  8. const items = event.items.filter((item) => {
  9. if (!item || !item.code || (next[item.code] !== undefined && stamp <= next[item.code])) return false
  10. next[item.code] = stamp
  11. return true
  12. })
  13. return { seen: items.length ? next : current, items }
  14. }