mirror of
https://github.com/hensm/fx_cast.git
synced 2026-06-09 17:19:59 +00:00
55 lines
1.4 KiB
TypeScript
55 lines
1.4 KiB
TypeScript
"use strict";
|
|
|
|
import mediaCasting from "./mediaCasting";
|
|
|
|
import { stringify } from "./utils";
|
|
|
|
import { ReceiverSelection
|
|
, ReceiverSelectorMediaType } from "../receiver_selectors";
|
|
|
|
|
|
interface LoadSenderOptions {
|
|
tabId: number;
|
|
frameId: number;
|
|
selection: ReceiverSelection;
|
|
}
|
|
|
|
/**
|
|
* Loads the appropriate sender for a given receiver
|
|
* selector response.
|
|
*/
|
|
export default async function loadSender (opts: LoadSenderOptions) {
|
|
// Cancelled
|
|
if (!opts.selection) {
|
|
return;
|
|
}
|
|
|
|
switch (opts.selection.mediaType) {
|
|
case ReceiverSelectorMediaType.Tab:
|
|
case ReceiverSelectorMediaType.Screen: {
|
|
await browser.tabs.executeScript(opts.tabId, {
|
|
code: stringify`
|
|
window.selectedMedia = ${opts.selection.mediaType};
|
|
window.selectedReceiver = ${opts.selection.receiver};
|
|
`
|
|
, frameId: opts.frameId
|
|
});
|
|
|
|
await browser.tabs.executeScript(opts.tabId, {
|
|
file: "senders/mirroringCast.js"
|
|
, frameId: opts.frameId
|
|
});
|
|
|
|
break;
|
|
}
|
|
|
|
case ReceiverSelectorMediaType.File: {
|
|
const fileUrl = new URL(`file://${opts.selection.filePath}`);
|
|
const mediaSession = await mediaCasting.loadMediaUrl(
|
|
fileUrl.href, opts.selection.receiver);
|
|
|
|
break;
|
|
}
|
|
}
|
|
}
|