+ let feedback_input_semaphore = new BinarySemaphore(false)
+ ;(
+ async () => {
+ while (true) {
+ await feedback_input_semaphore.acquire()
+ await new Promise(resolve => setTimeout(resolve, 3000))
+ feedback_input_semaphore.try_acquire()
+ await api_call(
+ '/api/feedback/set_draft.json',
+ id_navbar_feedback_message1.value.length === 0 ?
+ null :
+ {
+ message: id_navbar_feedback_message1.value.slice(0, 65536)
+ }
+ )
+ }
+ }
+ )() // ignore returned promise (start thread)
+
+ let feedback_edited = () => {
+ feedback_input_semaphore.release()
+
+ id_navbar_feedback_send_message.disabled =
+ id_navbar_feedback_message1.value.length === 0
+ id_navbar_feedback_icon.hidden = false
+ //id_navbar_feedback_tick.hidden = true
+ id_navbar_feedback_cross.hidden = true
+ id_navbar_feedback_spinner.hidden = true
+ id_navbar_feedback_message.hidden = true
+ }
+
+ id_navbar_feedback_message1.addEventListener(
+ 'input',
+ feedback_edited
+ )
+
+ id_navbar_feedback_send_message.addEventListener(