Add options checks for waitForConnection and closeIfFocusLost

This commit is contained in:
hensm
2019-07-26 03:39:13 +01:00
parent c53a21008c
commit a046ba9022
6 changed files with 42 additions and 10 deletions

View File

@@ -129,9 +129,17 @@ export default async function createShim (
break;
}
/**
* TODO: If we're closing a selector, make sure it's the
* same one that caused the session creation.
*/
case "main:/sessionCreated": {
const selector = await SelectorManager.getSharedSelector();
if (selector.isOpen) {
const shouldClose = await options.get(
"receiverSelectorWaitForConnection");
if (selector.isOpen && shouldClose) {
selector.close();
}

View File

@@ -2,7 +2,7 @@
import defaultOptions from "../defaultOptions";
import { ReceiverSelectorType } from "../receiver_selectors";
import { ReceiverSelectorType } from "../receiver_selectors/";
import { Message } from "../types";
import { TypedEventTarget } from "./typedEvents";

View File

@@ -83,6 +83,9 @@ export default class NativeMacReceiverSelector
const openerWindow = await browser.windows.getCurrent();
const centeredProps = getWindowCenteredProps(openerWindow, 350, 0);
const closeIfFocusLost = await options.get(
"receiverSelectorCloseIfFocusLost");
this.bridgePort.postMessage({
subject: "bridge:/receiverSelector/open"
, data: JSON.stringify({
@@ -90,6 +93,8 @@ export default class NativeMacReceiverSelector
, defaultMediaType
, availableMediaTypes
, closeIfFocusLost
, windowPositionX: centeredProps.left
, windowPositionY: centeredProps.top
@@ -118,20 +123,27 @@ export default class NativeMacReceiverSelector
}
private onBridgePortMessageSelected (
private async onBridgePortMessageSelected (
message: NativeReceiverSelectorSelectedMessage) {
this.wasReceiverSelected = true;
this.dispatchEvent(new CustomEvent("selected", {
detail: message.data
}));
if (!(await options.get("receiverSelectorWaitForConnection"))) {
this.close();
}
}
private onBridgePortMessageError (
private async onBridgePortMessageError (
message: NativeReceiverSelectorErrorMessage) {
this.dispatchEvent(new CustomEvent("error"));
}
private onBridgePortMessageClose (
private async onBridgePortMessageClose (
message: NativeReceiverSelectorCloseMessage) {
if (!this.wasReceiverSelected) {

View File

@@ -4,6 +4,8 @@ import ReceiverSelector, {
ReceiverSelectorEvents
, ReceiverSelectorMediaType } from "./ReceiverSelector";
import options from "../lib/options";
import { TypedEventTarget } from "../lib/typedEvents";
import { getWindowCenteredProps } from "../lib/utils";
import { Message, Receiver } from "../types";
@@ -107,9 +109,15 @@ export default class PopupReceiverSelector
...centeredProps
});
// Add focus listener
browser.windows.onFocusChanged.addListener(
this.onWindowsFocusChanged);
const closeIfFocusLost = await options.get(
"receiverSelectorCloseIfFocusLost");
if (closeIfFocusLost) {
// Add focus listener
browser.windows.onFocusChanged.addListener(
this.onWindowsFocusChanged);
}
}
public async close (): Promise<void> {