Skip to content

Commit

Permalink
Use app monitoring instead of polling to establish websocket connection
Browse files Browse the repository at this point in the history
Fixes #79
  • Loading branch information
neilenns committed Jan 9, 2025
1 parent 60b585e commit d5e2ed2
Show file tree
Hide file tree
Showing 6 changed files with 35 additions and 9 deletions.
4 changes: 4 additions & 0 deletions com.neil-enns.vatis.sdPlugin/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,10 @@
]
}
],
"ApplicationsToMonitor": {
"mac": ["org.vatsim.vatis"],
"windows": ["vATIS.exe"]
},
"Category": "vATIS",
"CategoryIcon": "images/plugin/categoryIcon",
"CodePath": "bin/plugin.js",
Expand Down
11 changes: 4 additions & 7 deletions src/events/action/actionAdded.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
import actionManager from "@managers/action";
import vAtisManager from "@managers/vatis";
import mainLogger from "@utils/logger";

const logger = mainLogger.child({ service: "handleActionAdded" });

export const handleActionAdded = () => {
// If this is the first button added then connect to vATIS. That will
// also cause a dump of the current state of all stations in vATIS.
if (actionManager.getActions().length === 1 && !vAtisManager.isConnected) {
vAtisManager.connect();
}
logger.info("Action added");
};
2 changes: 0 additions & 2 deletions src/events/action/actionRemoved.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
import vAtisManager from "@managers/vatis";
import svgManager from "@managers/svg";

export const handleActionRemoved = (count: number) => {
if (count === 0) {
vAtisManager.disconnect();
svgManager.reset();
}
};
10 changes: 10 additions & 0 deletions src/events/streamdeck/applicationDidLaunch.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { ApplicationDidLaunchEvent } from "@elgato/streamdeck";
import mainLogger from "@utils/logger";
import vAtisManager from "@managers/vatis";

const logger = mainLogger.child({ service: "plugin" });

export const handleOnApplicationDidLaunch = (ev: ApplicationDidLaunchEvent) => {
logger.info("Received applicationDidLaunch event", ev.application);
vAtisManager.connect();
};
12 changes: 12 additions & 0 deletions src/events/streamdeck/applicationDidTerminate.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { ApplicationDidTerminateEvent } from "@elgato/streamdeck";
import mainLogger from "@utils/logger";
import vAtisManager from "@managers/vatis";

const logger = mainLogger.child({ service: "plugin" });

export const handleOnApplicationDidTerminate = (
ev: ApplicationDidTerminateEvent
) => {
logger.info("Received applicationDidTerminate event", ev.application);
vAtisManager.disconnect();
};
5 changes: 5 additions & 0 deletions src/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ import { AtisLetter } from "@actions/atisLetter";
import { handleAtisLetterAdded } from "@events/action/atisLetterAdded";
import { handleAtisLetterUpdated } from "@events/action/atisLetterUpdated";
import { handleAtisUpdate } from "@events/vAtis/atisUpdate";
import { handleOnApplicationDidLaunch } from "@events/streamdeck/applicationDidLaunch";
import { handleOnApplicationDidTerminate } from "@events/streamdeck/applicationDidTerminate";

const logger = mainLogger.child({ service: "plugin" });

Expand All @@ -28,6 +30,9 @@ streamDeck.actions.registerAction(new vAtisAudioStatus());
streamDeck.actions.registerAction(new AtisLetter());

// Register event handlers
streamDeck.system.onApplicationDidLaunch(handleOnApplicationDidLaunch);
streamDeck.system.onApplicationDidTerminate(handleOnApplicationDidTerminate);

vAtisManager.on("connected", () => {
disconnectHandled = false;
handleConnected();
Expand Down

0 comments on commit d5e2ed2

Please sign in to comment.