diff --git a/ext/src/_locales/en/messages.json b/ext/src/_locales/en/messages.json index f8ea43f..b83fd36 100755 --- a/ext/src/_locales/en/messages.json +++ b/ext/src/_locales/en/messages.json @@ -6,6 +6,15 @@ "message": "" } + , "popupMediaTypeApp": { + "message": "this site's app" + } + , "popupMediaTypeTab": { + "message": "Tab" + } + , "popupMediaTypeScreen": { + "message": "Screen" + } , "popupCastButtonLabel": { "message": "Cast" } diff --git a/ext/src/ui/popup/index.tsx b/ext/src/ui/popup/index.tsx index 8564687..9863885 100755 --- a/ext/src/ui/popup/index.tsx +++ b/ext/src/ui/popup/index.tsx @@ -25,16 +25,9 @@ browser.runtime.getPlatformInfo() }); -const winWidth = 350; -let winHeight = 200; - -let frameHeight: number; -let frameWidth: number; - - interface PopupAppState { receivers: Receiver[]; - defaultMediaType: ReceiverSelectorMediaType; + mediaType: ReceiverSelectorMediaType; isLoading: boolean; } @@ -47,15 +40,13 @@ class PopupApp extends Component<{}, PopupAppState> { this.state = { receivers: [] - , defaultMediaType: ReceiverSelectorMediaType.App + , mediaType: ReceiverSelectorMediaType.App , isLoading: false }; // Store window ref browser.windows.getCurrent().then(win => { this.win = win; - frameHeight = win.height - window.innerHeight; - frameWidth = win.width - window.innerWidth; }); this.onSelectChange = this.onSelectChange.bind(this); @@ -72,14 +63,7 @@ class PopupApp extends Component<{}, PopupAppState> { case "popup:/populateReceiverList": { this.setState({ receivers: message.data.receivers - , defaultMediaType: message.data.defaultMediaType - }, () => { - // Get height of content without window decoration - winHeight = document.body.clientHeight + frameHeight; - - browser.windows.update(this.win.id, { - height: winHeight - }); + , mediaType: message.data.defaultMediaType }); break; @@ -93,21 +77,43 @@ class PopupApp extends Component<{}, PopupAppState> { }); } + public componentDidUpdate () { + setTimeout(() => { + // Fit window to content height + const frameHeight = window.outerHeight - window.innerHeight; + const windowHeight = document.body.clientHeight + frameHeight; + + browser.windows.update(this.win.id, { + height: windowHeight + }); + }, 1) + } + public render () { const shareMedia = - this.state.defaultMediaType === ReceiverSelectorMediaType.Tab - || this.state.defaultMediaType === ReceiverSelectorMediaType.Screen; + this.state.mediaType === ReceiverSelectorMediaType.Tab + || this.state.mediaType === ReceiverSelectorMediaType.Screen return (