aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorbobzel <zzzman@gmail.com>2025-02-26 18:43:26 -0500
committerbobzel <zzzman@gmail.com>2025-02-26 18:43:26 -0500
commitfa8122df7467af3d4410b7daf1cd75227a53fd96 (patch)
tree1dcabb3f6ec79ebfbe0f1db4aa766b4cd76e2394 /src
parent2e03c9bf1af2796faef8b81b326b48f4cd136d95 (diff)
ping cleanup
Diffstat (limited to 'src')
-rw-r--r--src/client/util/PingManager.ts41
1 files changed, 17 insertions, 24 deletions
diff --git a/src/client/util/PingManager.ts b/src/client/util/PingManager.ts
index 255e9cee0..170632836 100644
--- a/src/client/util/PingManager.ts
+++ b/src/client/util/PingManager.ts
@@ -1,44 +1,37 @@
-import { action, makeObservable, observable, runInAction } from 'mobx';
+import { action, makeObservable, observable } from 'mobx';
import { Networking } from '../Network';
import { SnappingManager } from './SnappingManager';
export class PingManager {
+ PING_INTERVAL_SECONDS = 1;
+ // not used now, but may need to clear interval
+ private _interval: NodeJS.Timeout | null = null;
// create static instance and getter for global use
// eslint-disable-next-line no-use-before-define
- @observable static _instance: PingManager;
+ @observable private static _instance: PingManager;
@observable IsBeating = true;
static get Instance(): PingManager {
return PingManager._instance;
}
- // not used now, but may need to clear interval
- private _interval: NodeJS.Timeout | null = null;
- INTERVAL_SECONDS = 1;
constructor() {
makeObservable(this);
PingManager._instance = this;
- this._interval = setInterval(this.sendPing, this.INTERVAL_SECONDS * 1000);
+ this._interval = setInterval(this.sendPing, this.PING_INTERVAL_SECONDS * 1000);
}
- private setIsBeating = action((status: boolean) => {
- this.IsBeating = status;
- setTimeout(this.showAlert, 100);
- });
+ showAlert = () => alert(PingManager.Instance.IsBeating ? 'The server connection is active' : 'The server connection has been interrupted.NOTE: Any changes made will appear to persist but will be lost after a browser refreshes.');
- showAlert = () => {
- alert(PingManager.Instance.IsBeating ? 'The server connection is active' : 'The server connection has been interrupted.NOTE: Any changes made will appear to persist but will be lost after a browser refreshes.');
- };
- sendPing = async (): Promise<void> => {
- try {
- const res = await Networking.PostToServer('/ping', { date: new Date() });
- runInAction(() => {
+ sendPing = () => {
+ const setIsBeating = action((status: boolean) => {
+ this.IsBeating = status;
+ setTimeout(this.showAlert, 100);
+ });
+ Networking.PostToServer('/ping', { date: new Date() })
+ .then(res => {
SnappingManager.SetServerVersion(res.message);
- });
- !this.IsBeating && this.setIsBeating(true);
- } catch {
- if (this.IsBeating) {
- this.setIsBeating(false);
- }
- }
+ !this.IsBeating && setIsBeating(true);
+ })
+ .catch(() => this.IsBeating && setIsBeating(false));
};
}