App refactor (#140)

* Add additional types
* Split components from single index module into smaller modules
* Misc smaller changes
This commit is contained in:
Matt Hensman
2020-08-21 13:19:01 +01:00
committed by GitHub
parent fa0cf0ac89
commit a6ab018171
15 changed files with 875 additions and 677 deletions

View File

@@ -0,0 +1,88 @@
"use strict";
import child_process from "child_process";
import path from "path";
import { sendMessage } from "../lib/messaging";
function fatal (message: string) {
console.error(message);
process.exit(1);
}
let selectorApp: child_process.ChildProcess | undefined;
let selectorAppOpen = false;
export function startReceiverSelector (data: string) {
if (process.platform !== "darwin") {
fatal("Invalid platform for native receiver selector.");
}
if (!data) {
fatal("Missing native selector data");
} else {
try {
JSON.parse(data);
} catch (err) {
fatal("Invalid native selector data.");
}
}
if (selectorApp && selectorAppOpen) {
selectorApp.kill();
selectorAppOpen = false;
}
const selectorPath = path.join(process.cwd()
, "fx_cast_selector.app/Contents/MacOS/fx_cast_selector");
selectorApp = child_process.spawn(selectorPath, [ data ]);
selectorAppOpen = true;
if (selectorApp.stdout) {
selectorApp.stdout.setEncoding("utf-8");
selectorApp.stdout.on("data", data => {
const jsonData = JSON.parse(data);
if (!jsonData.mediaType) {
sendMessage({
subject: "main:/receiverSelector/stop"
, data: jsonData
});
return;
}
sendMessage({
subject: "main:/receiverSelector/selected"
, data: jsonData
});
});
}
selectorApp.on("error", err => {
sendMessage({
subject: "main:/receiverSelector/error"
, data: err.message
});
});
selectorApp.on("close", () => {
if (selectorAppOpen) {
selectorAppOpen = false;
sendMessage({
subject: "main:/receiverSelector/close"
});
}
});
}
export function stopReceiverSelector () {
if (!selectorApp?.killed) {
selectorApp?.kill();
selectorAppOpen = false;
}
}