mirror of
https://github.com/hensm/fx_cast.git
synced 2026-06-10 17:49:58 +00:00
Push updates to open receiver selectors
This commit is contained in:
@@ -85,6 +85,8 @@ export default class NativeReceiverSelector extends ReceiverSelector {
|
||||
this._isOpen = true;
|
||||
}
|
||||
|
||||
public update (): void {}
|
||||
|
||||
public close (): void {
|
||||
if (this.bridgePort) {
|
||||
this.bridgePort.postMessage({
|
||||
|
||||
@@ -115,6 +115,16 @@ export default class PopupReceiverSelector extends ReceiverSelector {
|
||||
}
|
||||
}
|
||||
|
||||
public update (receivers: Receiver[]) {
|
||||
this.receivers = receivers;
|
||||
this.messagePort?.postMessage({
|
||||
subject: "popup:/populateReceiverList"
|
||||
, data: {
|
||||
receivers: this.receivers
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public async close (): Promise<void> {
|
||||
if (this.windowId) {
|
||||
await browser.windows.remove(this.windowId);
|
||||
|
||||
@@ -42,10 +42,13 @@ export default abstract class ReceiverSelector
|
||||
|
||||
abstract readonly isOpen: boolean;
|
||||
|
||||
abstract open (receivers: Receiver[]
|
||||
, defaultMediaType: ReceiverSelectorMediaType
|
||||
, availableMediaTypes: ReceiverSelectorMediaType
|
||||
, requestedAppId?: string): void;
|
||||
abstract open (
|
||||
receivers: Receiver[]
|
||||
, defaultMediaType: ReceiverSelectorMediaType
|
||||
, availableMediaTypes: ReceiverSelectorMediaType
|
||||
, requestedAppId?: string): void;
|
||||
|
||||
abstract update (receivers: Receiver[]): void;
|
||||
|
||||
abstract close (): void;
|
||||
}
|
||||
|
||||
@@ -124,6 +124,15 @@ async function getSelection (
|
||||
sharedSelector = await createSelector();
|
||||
|
||||
|
||||
function onReceiverChange () {
|
||||
sharedSelector.update(Array.from(StatusManager.getReceivers()));
|
||||
}
|
||||
|
||||
StatusManager.addEventListener("serviceUp", onReceiverChange);
|
||||
StatusManager.addEventListener("serviceDown", onReceiverChange);
|
||||
StatusManager.addEventListener("statusUpdate", onReceiverChange);
|
||||
|
||||
|
||||
let onSelected: any;
|
||||
let onCancelled: any;
|
||||
let onError: any;
|
||||
@@ -151,6 +160,10 @@ async function getSelection (
|
||||
sharedSelector.removeEventListener("cancelled", onCancelled);
|
||||
sharedSelector.removeEventListener("error", onError);
|
||||
sharedSelector.removeEventListener("stop", onStop);
|
||||
|
||||
StatusManager.removeEventListener("serviceUp", onReceiverChange);
|
||||
StatusManager.removeEventListener("serviceDown", onReceiverChange);
|
||||
StatusManager.removeEventListener("statusUpdate", onReceiverChange);
|
||||
}
|
||||
|
||||
sharedSelector.addEventListener("selected"
|
||||
|
||||
Reference in New Issue
Block a user