38 lines
997 B
TypeScript
38 lines
997 B
TypeScript
|
import {get, writable} from "svelte/store";
|
||
|
import {peerStore} from "./PeerStore";
|
||
|
import {visibilityStore} from "./VisibilityStore";
|
||
|
|
||
|
/**
|
||
|
* A store that contains "true" if the webcam should be stopped for privacy reasons - i.e. if the the user left the the page while not in a discussion.
|
||
|
*/
|
||
|
function createPrivacyShutdownStore() {
|
||
|
let privacyEnabled = false;
|
||
|
|
||
|
const { subscribe, set, update } = writable(privacyEnabled);
|
||
|
|
||
|
visibilityStore.subscribe((isVisible) => {
|
||
|
if (!isVisible && get(peerStore).size === 0) {
|
||
|
privacyEnabled = true;
|
||
|
set(true);
|
||
|
}
|
||
|
if (isVisible) {
|
||
|
privacyEnabled = false;
|
||
|
set(false);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
peerStore.subscribe((peers) => {
|
||
|
if (peers.size === 0 && get(visibilityStore) === false) {
|
||
|
privacyEnabled = true;
|
||
|
set(true);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
|
||
|
return {
|
||
|
subscribe,
|
||
|
};
|
||
|
}
|
||
|
|
||
|
export const privacyShutdownStore = createPrivacyShutdownStore();
|