mirror of
https://github.com/hensm/fx_cast.git
synced 2026-06-12 10:39:57 +00:00
Use enum values for mediaType in popup
This commit is contained in:
@@ -6,6 +6,15 @@
|
|||||||
"message": ""
|
"message": ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
, "popupMediaTypeApp": {
|
||||||
|
"message": "this site's app"
|
||||||
|
}
|
||||||
|
, "popupMediaTypeTab": {
|
||||||
|
"message": "Tab"
|
||||||
|
}
|
||||||
|
, "popupMediaTypeScreen": {
|
||||||
|
"message": "Screen"
|
||||||
|
}
|
||||||
, "popupCastButtonLabel": {
|
, "popupCastButtonLabel": {
|
||||||
"message": "Cast"
|
"message": "Cast"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,16 +25,9 @@ browser.runtime.getPlatformInfo()
|
|||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
const winWidth = 350;
|
|
||||||
let winHeight = 200;
|
|
||||||
|
|
||||||
let frameHeight: number;
|
|
||||||
let frameWidth: number;
|
|
||||||
|
|
||||||
|
|
||||||
interface PopupAppState {
|
interface PopupAppState {
|
||||||
receivers: Receiver[];
|
receivers: Receiver[];
|
||||||
defaultMediaType: ReceiverSelectorMediaType;
|
mediaType: ReceiverSelectorMediaType;
|
||||||
isLoading: boolean;
|
isLoading: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -47,15 +40,13 @@ class PopupApp extends Component<{}, PopupAppState> {
|
|||||||
|
|
||||||
this.state = {
|
this.state = {
|
||||||
receivers: []
|
receivers: []
|
||||||
, defaultMediaType: ReceiverSelectorMediaType.App
|
, mediaType: ReceiverSelectorMediaType.App
|
||||||
, isLoading: false
|
, isLoading: false
|
||||||
};
|
};
|
||||||
|
|
||||||
// Store window ref
|
// Store window ref
|
||||||
browser.windows.getCurrent().then(win => {
|
browser.windows.getCurrent().then(win => {
|
||||||
this.win = win;
|
this.win = win;
|
||||||
frameHeight = win.height - window.innerHeight;
|
|
||||||
frameWidth = win.width - window.innerWidth;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
this.onSelectChange = this.onSelectChange.bind(this);
|
this.onSelectChange = this.onSelectChange.bind(this);
|
||||||
@@ -72,14 +63,7 @@ class PopupApp extends Component<{}, PopupAppState> {
|
|||||||
case "popup:/populateReceiverList": {
|
case "popup:/populateReceiverList": {
|
||||||
this.setState({
|
this.setState({
|
||||||
receivers: message.data.receivers
|
receivers: message.data.receivers
|
||||||
, defaultMediaType: message.data.defaultMediaType
|
, mediaType: message.data.defaultMediaType
|
||||||
}, () => {
|
|
||||||
// Get height of content without window decoration
|
|
||||||
winHeight = document.body.clientHeight + frameHeight;
|
|
||||||
|
|
||||||
browser.windows.update(this.win.id, {
|
|
||||||
height: winHeight
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
break;
|
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 () {
|
public render () {
|
||||||
const shareMedia =
|
const shareMedia =
|
||||||
this.state.defaultMediaType === ReceiverSelectorMediaType.Tab
|
this.state.mediaType === ReceiverSelectorMediaType.Tab
|
||||||
|| this.state.defaultMediaType === ReceiverSelectorMediaType.Screen;
|
|| this.state.mediaType === ReceiverSelectorMediaType.Screen
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<div className="media-select">
|
<div className="media-select">
|
||||||
Cast
|
Cast
|
||||||
<select value={ this.state.defaultMediaType }
|
<select value={ this.state.mediaType }
|
||||||
onChange={ this.onSelectChange }
|
onChange={ this.onSelectChange }
|
||||||
className="media-select-dropdown">
|
className="media-select-dropdown">
|
||||||
<option value="app" disabled={ shareMedia }>this site's app</option>
|
<option value={ ReceiverSelectorMediaType.App }
|
||||||
<option value="tab" disabled={ !shareMedia }>Tab</option>
|
disabled={ shareMedia }>
|
||||||
<option value="screen" disabled={ !shareMedia }>Screen</option>
|
|
||||||
|
{ _("popupMediaTypeApp") }
|
||||||
|
</option>
|
||||||
|
<option value={ ReceiverSelectorMediaType.Tab }
|
||||||
|
disabled={ !shareMedia }>
|
||||||
|
{ _("popupMediaTypeTab") }
|
||||||
|
</option>
|
||||||
|
<option value={ ReceiverSelectorMediaType.Screen }
|
||||||
|
disabled={ !shareMedia }>
|
||||||
|
{ _("popupMediaTypeScreen") }
|
||||||
|
</option>
|
||||||
</select>
|
</select>
|
||||||
to:
|
to:
|
||||||
</div>
|
</div>
|
||||||
@@ -134,20 +140,14 @@ class PopupApp extends Component<{}, PopupAppState> {
|
|||||||
subject: "receiverSelectorManager:/selected"
|
subject: "receiverSelectorManager:/selected"
|
||||||
, data: {
|
, data: {
|
||||||
receiver
|
receiver
|
||||||
, defaultMediaType: this.state.defaultMediaType
|
, mediaType: this.state.mediaType
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private onSelectChange (ev: React.ChangeEvent<HTMLSelectElement>) {
|
private onSelectChange (ev: React.ChangeEvent<HTMLSelectElement>) {
|
||||||
const mediaTypeMap: { [key: string]: ReceiverSelectorMediaType } = {
|
|
||||||
"app": ReceiverSelectorMediaType.App
|
|
||||||
, "tab": ReceiverSelectorMediaType.Tab
|
|
||||||
, "screen": ReceiverSelectorMediaType.Screen
|
|
||||||
};
|
|
||||||
|
|
||||||
this.setState({
|
this.setState({
|
||||||
defaultMediaType: mediaTypeMap[ev.target.value]
|
mediaType: parseInt(ev.target.value)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -217,6 +217,9 @@ class ReceiverEntry extends Component<ReceiverEntryProps, ReceiverEntryState> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ReactDOM.render(
|
// Render after CSS has loaded
|
||||||
<PopupApp />
|
window.addEventListener("load", () => {
|
||||||
, document.querySelector("#root"));
|
ReactDOM.render(
|
||||||
|
<PopupApp />
|
||||||
|
, document.querySelector("#root"));
|
||||||
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user