UNPKG

@salutejs/jazz-sdk-electron-plugins

Version:

Jazz SDK electron plugins

2 lines (1 loc) 2.03 kB
import{createEventBus as e,createModule as a}from"@salutejs/jazz-sdk-electron/preload";import{contextBridge as t,ipcRenderer as s}from"electron";import{createScope as r}from"rx-effects";import{filter as o,take as n}from"rxjs";const c="jazz-sdk-desktop-capturer-ipc-channel",p="jazz-sdk-ask-display-media-stream",i="jazz-sdk-capturer-sources-event";function d(){return a({name:"DesktopCapturerPlugin",factory:y})}function y(){const a=r(),d=a.createController((()=>function(a){const{ipcRenderer:t}=a,s=r(),d=e();let y;const u=e=>{y=e,d({type:"askDisplayMediaStream"})};t.on(p,u),s.add((()=>{t.off(p,u)}));const l=(e,a)=>{d(a)};return t.on(i,l),s.add((()=>{t.off(i,l)})),{capturerSourcesStartProcess:async e=>{const a={payload:e,type:"capturerSourcesStartProcess"};return(await t.invoke(c,a)).payload},capturerSourcesFinishProcess:async()=>(await t.invoke(c,{type:"capturerSourcesFinishProcess"})).payload,getDesktopCapturerSources:async e=>{const a={payload:e,type:"getDesktopCapturerSources"};return(await t.invoke(c,a)).payload},askForMediaAccess:async e=>{const a={payload:{type:e},type:"askForMediaAccess"};return(await t.invoke(c,a)).payload},getMediaAccessStatus:async e=>{const a={payload:{type:e},type:"getMediaAccessStatus"};return(await t.invoke(c,a)).payload},openSystemSettings:async e=>{const a={payload:{key:e},type:"systemSettings"};return(await t.invoke(c,a)).payload},replyDisplayMediaStream:(e,a=!1)=>{const t={source:e,audio:a};y?.sender.send("jazz-sdk-reply-display-media-stream",t),y=void 0},osInfo:async()=>(await t.invoke(c,{type:"osInfo"})).payload,subscribe:(e,a)=>{const t=d.event$.pipe(o((a=>a.type===e))).subscribe((e=>{a("payload"in e?e.payload:void 0)}));return()=>t.unsubscribe()},once:(e,a)=>{const t=d.event$.pipe(o((a=>a.type===e)),n(1)).subscribe((e=>{a("payload"in e?e.payload:void 0)}));return()=>t.unsubscribe()},destroy:()=>{s.destroy()}}}({ipcRenderer:s}))),y={ipcMain:d};return t.exposeInMainWorld("jazz-sdk-desktop-capturer-bridge",y),{destroy:a.destroy}}export{d as desktopCapturerPlugin};