Handle aborting status check gracefully

7952b5f2c9a255d0f18a145a653a425d2e3ab13d

Wolfsblvt <wolfsblvt@gmail.com>

2 files changed, +20 -5Ignore whitespace
public/script.js+11 -5
@@ -242,6 +242,7 @@ import { INTERACTABLE_CONTROL_CLASS, initKeyboard } from './scripts/keyboard.js'
242import { initDynamicStyles } from './scripts/dynamic-styles.js';242import { initDynamicStyles } from './scripts/dynamic-styles.js';
243import { SlashCommandEnumValue, enumTypes } from './scripts/slash-commands/SlashCommandEnumValue.js';243import { SlashCommandEnumValue, enumTypes } from './scripts/slash-commands/SlashCommandEnumValue.js';
244import { commonEnumProviders, enumIcons } from './scripts/slash-commands/SlashCommandCommonEnumsProvider.js';244import { commonEnumProviders, enumIcons } from './scripts/slash-commands/SlashCommandCommonEnumsProvider.js';
245import { AbortReason } from './scripts/util/AbortReason.js';
245246
246//exporting functions and vars for mods247//exporting functions and vars for mods
247export {248export {
@@ -978,8 +979,8 @@ async function fixViewport() {
978 document.body.style.position = '';979 document.body.style.position = '';
979}980}
980981
981function cancelStatusCheck() {982function cancelStatusCheck(reason = 'Manually cancelled status check') {
982 abortStatusCheck?.abort();983 abortStatusCheck?.abort(new AbortReason(reason));
983 abortStatusCheck = new AbortController();984 abortStatusCheck = new AbortController();
984 setOnlineStatus('no_connection');985 setOnlineStatus('no_connection');
985}986}
@@ -1229,7 +1230,12 @@ async function getStatusTextgen() {
1229 toastr.error(data.response, 'API Error', { timeOut: 5000, preventDuplicates: true });1230 toastr.error(data.response, 'API Error', { timeOut: 5000, preventDuplicates: true });
1230 }1231 }
1231 } catch (err) {1232 } catch (err) {
1232 console.error('Error getting status', err);1233 if (err instanceof AbortReason) {
1234 console.info('Status check aborted.', err.reason);
1235 } else {
1236 console.error('Error getting status', err);
1237
1238 }
1233 setOnlineStatus('no_connection');1239 setOnlineStatus('no_connection');
1234 }1240 }
12351241
@@ -9317,7 +9323,7 @@ jQuery(async function () {
9317 $('#groupCurrentMemberListToggle .inline-drawer-icon').trigger('click');9323 $('#groupCurrentMemberListToggle .inline-drawer-icon').trigger('click');
9318 }, 200);9324 }, 200);
93199325
9320 $(document).on('click', '.api_loading', cancelStatusCheck);9326 $(document).on('click', '.api_loading', () => cancelStatusCheck('Canceled because connecting was manually canceled'));
93219327
9322 //////////INPUT BAR FOCUS-KEEPING LOGIC/////////////9328 //////////INPUT BAR FOCUS-KEEPING LOGIC/////////////
9323 let S_TAPreviouslyFocused = false;9329 let S_TAPreviouslyFocused = false;
@@ -10076,7 +10082,7 @@ jQuery(async function () {
10076 });10082 });
1007710083
10078 $('#main_api').change(function () {10084 $('#main_api').change(function () {
10079 cancelStatusCheck();10085 cancelStatusCheck("Canceled because main api changed");
10080 changeMainAPI();10086 changeMainAPI();
10081 saveSettingsDebounced();10087 saveSettingsDebounced();
10082 });10088 });
public/scripts/util/AbortReason.js+9 -0
@@ -0,0 +1,9 @@
1export class AbortReason {
2 constructor(reason) {
3 this.reason = reason;
4 }
5
6 toString() {
7 return this.reason;
8 }
9}