@@ -1911,6 +1911,26 @@ export function buildCheckboxForm (dom, kb, lab, del, ins, form, dataDoc, trista
19111911 }
19121912 isUpdating = true
19131913 input . disabled = true // Disable button to provide user feedback
1914+ let didFinishUpdate = false
1915+ const finishUpdate = function ( ) {
1916+ if ( didFinishUpdate ) return false
1917+ didFinishUpdate = true
1918+ isUpdating = false
1919+ input . disabled = false
1920+ return true
1921+ }
1922+ const showUpdateError = function ( errorBody ) {
1923+ colorCarrier . style . color = '#000'
1924+ colorCarrier . style . backgroundColor = '#fee'
1925+ box . appendChild (
1926+ errorMessageBlock (
1927+ dom ,
1928+ `Checkbox: Error updating dataDoc from ${ input . state } to ${
1929+ input . newState
1930+ } :\n\n${ errorBody } `
1931+ )
1932+ )
1933+ }
19141934 colorCarrier . style . color = '#bbb' // grey -- not saved yet
19151935 const toDelete = input . state === true ? ins : input . state === false ? del : [ ]
19161936 input . newState =
@@ -1927,13 +1947,12 @@ export function buildCheckboxForm (dom, kb, lab, del, ins, form, dataDoc, trista
19271947 debug . log ( ` Deleting ${ toDelete } ` )
19281948 debug . log ( ` Inserting ${ toInsert } ` )
19291949 try {
1930- kb . updater . update ( toDelete , toInsert , function (
1950+ const updateResult = kb . updater . update ( toDelete , toInsert , function (
19311951 uri ,
19321952 success ,
19331953 errorBody
19341954 ) {
1935- isUpdating = false
1936- input . disabled = false
1955+ if ( ! finishUpdate ( ) ) return
19371956 if ( ! success ) {
19381957 if ( toDelete . why ) {
19391958 const hmmm = kb . holds (
@@ -1946,16 +1965,7 @@ export function buildCheckboxForm (dom, kb, lab, del, ins, form, dataDoc, trista
19461965 debug . log ( ' @@@@@ weird if 409 - does hold statement' )
19471966 }
19481967 }
1949- colorCarrier . style . color = '#000'
1950- colorCarrier . style . backgroundColor = '#fee'
1951- box . appendChild (
1952- errorMessageBlock (
1953- dom ,
1954- `Checkbox: Error updating dataDoc from ${ input . state } to ${
1955- input . newState
1956- } :\n\n${ errorBody } `
1957- )
1958- )
1968+ showUpdateError ( errorBody )
19591969 } else {
19601970 colorCarrier . style . color = '#000'
19611971 input . state = input . newState
@@ -1966,9 +1976,18 @@ export function buildCheckboxForm (dom, kb, lab, del, ins, form, dataDoc, trista
19661976 } [ input . state ] // @@
19671977 }
19681978 } )
1979+ if ( updateResult && typeof updateResult . then === 'function' ) {
1980+ updateResult
1981+ . catch ( function ( error ) {
1982+ if ( ! finishUpdate ( ) ) return
1983+ showUpdateError ( error instanceof Error ? error . message : error )
1984+ } )
1985+ . finally ( function ( ) {
1986+ finishUpdate ( )
1987+ } )
1988+ }
19691989 } catch ( error ) {
1970- isUpdating = false
1971- input . disabled = false
1990+ finishUpdate ( )
19721991 throw error
19731992 }
19741993 }
0 commit comments