Merge remote-tracking branch 'remotes/upstream/develop' into tiles-start-positions
This commit is contained in:
commit
7f61e9addd
182 changed files with 17118 additions and 4494 deletions
36
front/src/Stores/StreamableCollectionStore.ts
Normal file
36
front/src/Stores/StreamableCollectionStore.ts
Normal file
|
@ -0,0 +1,36 @@
|
|||
import { derived, get, Readable, writable } from "svelte/store";
|
||||
import { ScreenSharingLocalMedia, screenSharingLocalMedia } from "./ScreenSharingStore";
|
||||
import { peerStore, screenSharingStreamStore } from "./PeerStore";
|
||||
import type { RemotePeer } from "../WebRtc/SimplePeer";
|
||||
import { LayoutMode } from "../WebRtc/LayoutManager";
|
||||
|
||||
export type Streamable = RemotePeer | ScreenSharingLocalMedia;
|
||||
|
||||
export const layoutModeStore = writable<LayoutMode>(LayoutMode.Presentation);
|
||||
|
||||
/**
|
||||
* A store that contains everything that can produce a stream (so the peers + the local screen sharing stream)
|
||||
*/
|
||||
function createStreamableCollectionStore(): Readable<Map<string, Streamable>> {
|
||||
return derived(
|
||||
[screenSharingStreamStore, peerStore, screenSharingLocalMedia],
|
||||
([$screenSharingStreamStore, $peerStore, $screenSharingLocalMedia], set) => {
|
||||
const peers = new Map<string, Streamable>();
|
||||
|
||||
const addPeer = (peer: Streamable) => {
|
||||
peers.set(peer.uniqueId, peer);
|
||||
};
|
||||
|
||||
$screenSharingStreamStore.forEach(addPeer);
|
||||
$peerStore.forEach(addPeer);
|
||||
|
||||
if ($screenSharingLocalMedia?.stream) {
|
||||
addPeer($screenSharingLocalMedia);
|
||||
}
|
||||
|
||||
set(peers);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
export const streamableCollectionStore = createStreamableCollectionStore();
|
Loading…
Add table
Add a link
Reference in a new issue