fix(sync): update request arrays immutably (#1139)
* fix(sync): update request arrays immutably * test(sync): cover rejected question updates --------- Co-authored-by: Isaac Sanchez <isanchez-hawkins@arize.com>
This commit is contained in:
committed by
GitHub
co-authored by
Isaac Sanchez
parent
9fb3e5d764
commit
a3a82166f1
@@ -400,13 +400,14 @@ export function applyDirectoryEvent(
|
||||
case "permission.asked": {
|
||||
const permission = event.properties as PermissionRequest
|
||||
const permissions = draft.permission[permission.sessionID] ?? []
|
||||
draft.permission[permission.sessionID] = permissions
|
||||
const result = Binary.search(permissions, permission.id, (p) => p.id)
|
||||
const next = [...permissions]
|
||||
const result = Binary.search(next, permission.id, (p) => p.id)
|
||||
if (result.found) {
|
||||
permissions[result.index] = permission
|
||||
next[result.index] = permission
|
||||
} else {
|
||||
permissions.splice(result.index, 0, permission)
|
||||
next.splice(result.index, 0, permission)
|
||||
}
|
||||
draft.permission[permission.sessionID] = next
|
||||
return true
|
||||
}
|
||||
|
||||
@@ -416,7 +417,9 @@ export function applyDirectoryEvent(
|
||||
if (!permissions) return false
|
||||
const result = Binary.search(permissions, props.requestID, (p) => p.id)
|
||||
if (result.found) {
|
||||
permissions.splice(result.index, 1)
|
||||
const next = [...permissions]
|
||||
next.splice(result.index, 1)
|
||||
draft.permission[props.sessionID] = next
|
||||
return true
|
||||
}
|
||||
return false
|
||||
@@ -425,13 +428,14 @@ export function applyDirectoryEvent(
|
||||
case "question.asked": {
|
||||
const question = event.properties as QuestionRequest
|
||||
const questions = draft.question[question.sessionID] ?? []
|
||||
draft.question[question.sessionID] = questions
|
||||
const result = Binary.search(questions, question.id, (q) => q.id)
|
||||
const next = [...questions]
|
||||
const result = Binary.search(next, question.id, (q) => q.id)
|
||||
if (result.found) {
|
||||
questions[result.index] = question
|
||||
next[result.index] = question
|
||||
} else {
|
||||
questions.splice(result.index, 0, question)
|
||||
next.splice(result.index, 0, question)
|
||||
}
|
||||
draft.question[question.sessionID] = next
|
||||
return true
|
||||
}
|
||||
|
||||
@@ -442,7 +446,9 @@ export function applyDirectoryEvent(
|
||||
if (!questions) return false
|
||||
const result = Binary.search(questions, props.requestID, (q) => q.id)
|
||||
if (result.found) {
|
||||
questions.splice(result.index, 1)
|
||||
const next = [...questions]
|
||||
next.splice(result.index, 1)
|
||||
draft.question[props.sessionID] = next
|
||||
return true
|
||||
}
|
||||
return false
|
||||
|
||||
Reference in New Issue
Block a user