mirror of
https://github.com/hensm/fx_cast.git
synced 2026-06-13 02:49:58 +00:00
Move media type checking to receiver selectors
This commit is contained in:
@@ -119,6 +119,12 @@ class ViewController : NSViewController {
|
|||||||
|
|
||||||
receiverView.receiverViewDelegate = self
|
receiverView.receiverViewDelegate = self
|
||||||
|
|
||||||
|
if UInt(initData!.availableMediaTypes) == 0
|
||||||
|
|| (initData!.availableMediaTypes
|
||||||
|
& initData!.defaultMediaType.rawValue) == 0 {
|
||||||
|
receiverView.isEnabled = false
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
self.receiverViews.append(receiverView)
|
self.receiverViews.append(receiverView)
|
||||||
|
|
||||||
@@ -146,6 +152,12 @@ extension ViewController : NSMenuDelegate {
|
|||||||
let mediaType = MediaType(
|
let mediaType = MediaType(
|
||||||
rawValue: self.mediaTypePopUpButton.selectedItem!.tag)!
|
rawValue: self.mediaTypePopUpButton.selectedItem!.tag)!
|
||||||
|
|
||||||
|
if self.initData.availableMediaTypes & mediaType.rawValue != 0 {
|
||||||
|
for receiverView in self.receiverViews {
|
||||||
|
receiverView.isEnabled = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let fileItem = self.mediaTypePopUpButton
|
let fileItem = self.mediaTypePopUpButton
|
||||||
.item(at: self.mediaTypePopUpButton.indexOfItem(
|
.item(at: self.mediaTypePopUpButton.indexOfItem(
|
||||||
withTag: MediaType.file.rawValue))!
|
withTag: MediaType.file.rawValue))!
|
||||||
|
|||||||
@@ -97,14 +97,6 @@ async function getSelection (
|
|||||||
availableMediaTypes &= ~ReceiverSelectorMediaType.File;
|
availableMediaTypes &= ~ReceiverSelectorMediaType.File;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!availableMediaTypes || availableMediaTypes
|
|
||||||
=== ReceiverSelectorMediaType.File) {
|
|
||||||
console.error("fx_cast (Debug): No available media types");
|
|
||||||
resolve(null);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Ensure status manager is initialized
|
// Ensure status manager is initialized
|
||||||
await StatusManager.init();
|
await StatusManager.init();
|
||||||
|
|||||||
@@ -109,6 +109,9 @@ class PopupApp extends Component<{}, PopupAppState> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const canCast = !!(this.state.availableMediaTypes
|
||||||
|
&& this.state.availableMediaTypes & this.state.mediaType);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<div className="media-select">
|
<div className="media-select">
|
||||||
@@ -150,6 +153,7 @@ class PopupApp extends Component<{}, PopupAppState> {
|
|||||||
<ReceiverEntry receiver={ receiver }
|
<ReceiverEntry receiver={ receiver }
|
||||||
onCast={ this.onCast }
|
onCast={ this.onCast }
|
||||||
isLoading={ this.state.isLoading }
|
isLoading={ this.state.isLoading }
|
||||||
|
canCast={ canCast }
|
||||||
key={ i }/> ))}
|
key={ i }/> ))}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
@@ -208,6 +212,7 @@ class PopupApp extends Component<{}, PopupAppState> {
|
|||||||
interface ReceiverEntryProps {
|
interface ReceiverEntryProps {
|
||||||
receiver: Receiver;
|
receiver: Receiver;
|
||||||
isLoading: boolean;
|
isLoading: boolean;
|
||||||
|
canCast: boolean;
|
||||||
onCast (receiver: Receiver): void;
|
onCast (receiver: Receiver): void;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -244,7 +249,7 @@ class ReceiverEntry extends Component<ReceiverEntryProps, ReceiverEntryState> {
|
|||||||
</div>
|
</div>
|
||||||
<button className="receiver-connect"
|
<button className="receiver-connect"
|
||||||
onClick={ this.handleCast }
|
onClick={ this.handleCast }
|
||||||
disabled={this.props.isLoading}>
|
disabled={this.props.isLoading || !this.props.canCast}>
|
||||||
{ this.state.isLoading
|
{ this.state.isLoading
|
||||||
? _("popupCastingButtonTitle"
|
? _("popupCastingButtonTitle"
|
||||||
, (this.state.isLoading
|
, (this.state.isLoading
|
||||||
|
|||||||
Reference in New Issue
Block a user