Ver código fonte

electron: call into JitsiMeet to open a desktop picker

#416
dev1
virtuacoplenny 8 anos atrás
pai
commit
0173067481
3 arquivos alterados com 37 adições e 7 exclusões
  1. 4
    0
      JitsiTrackError.js
  2. 14
    0
      JitsiTrackErrors.js
  3. 19
    7
      modules/RTC/ScreenObtainer.js

+ 4
- 0
JitsiTrackError.js Ver arquivo

@@ -12,6 +12,10 @@ TRACK_ERROR_TO_MESSAGE_MAP[JitsiTrackErrors.CHROME_EXTENSION_USER_CANCELED]
12 12
     = 'User canceled Chrome\'s screen sharing prompt';
13 13
 TRACK_ERROR_TO_MESSAGE_MAP[JitsiTrackErrors.CHROME_EXTENSION_GENERIC_ERROR]
14 14
     = 'Unknown error from Chrome extension';
15
+TRACK_ERROR_TO_MESSAGE_MAP[JitsiTrackErrors.ELECTRON_DESKTOP_PICKER_ERROR]
16
+    = 'Unkown error from desktop picker';
17
+TRACK_ERROR_TO_MESSAGE_MAP[JitsiTrackErrors.ELECTRON_DESKTOP_PICKER_NOT_FOUND]
18
+    = 'Failed to detect desktop picker';
15 19
 TRACK_ERROR_TO_MESSAGE_MAP[JitsiTrackErrors.GENERAL]
16 20
     = 'Generic getUserMedia error';
17 21
 TRACK_ERROR_TO_MESSAGE_MAP[JitsiTrackErrors.PERMISSION_DENIED]

+ 14
- 0
JitsiTrackErrors.js Ver arquivo

@@ -28,6 +28,20 @@ export const CHROME_EXTENSION_USER_CANCELED
28 28
  */
29 29
 export const CONSTRAINT_FAILED = 'gum.constraint_failed';
30 30
 
31
+/**
32
+ * A generic error which indicates an error occurred while selecting
33
+ * a DesktopCapturerSource from the electron app.
34
+ */
35
+export const ELECTRON_DESKTOP_PICKER_ERROR
36
+    = 'gum.electron_desktop_picker_error';
37
+
38
+/**
39
+ * An error which indicates a custom desktop picker could not be detected
40
+ * for the electron app.
41
+ */
42
+export const ELECTRON_DESKTOP_PICKER_NOT_FOUND
43
+    = 'gum.electron_desktop_picker_not_found';
44
+
31 45
 /**
32 46
  * An error which indicates that the jidesha extension for Firefox is
33 47
  * needed to proceed with screen sharing, and that it is not installed.

+ 19
- 7
modules/RTC/ScreenObtainer.js Ver arquivo

@@ -116,13 +116,25 @@ const ScreenObtainer = {
116 116
                     });
117 117
             };
118 118
         } else if (RTCBrowserType.isElectron()) {
119
-            obtainDesktopStream = (_, onSuccess, onFailure) =>
120
-                window.JitsiMeetElectron.obtainDesktopStream(
121
-                    streamId =>
122
-                        onGetStreamResponse({ streamId }, onSuccess, onFailure),
123
-                    err => onFailure(new JitsiTrackError(
124
-                        JitsiTrackErrors.CHROME_EXTENSION_GENERIC_ERROR, err))
125
-                );
119
+            obtainDesktopStream = (_, onSuccess, onFailure) => {
120
+                if (window.JitsiMeetScreenObtainer
121
+                    && window.JitsiMeetScreenObtainer.openDesktopPicker) {
122
+                    window.JitsiMeetScreenObtainer.openDesktopPicker(
123
+                        streamId =>
124
+                            onGetStreamResponse({ streamId },
125
+                            onSuccess,
126
+                            onFailure
127
+                        ),
128
+                        err => onFailure(new JitsiTrackError(
129
+                            JitsiTrackErrors.ELECTRON_DESKTOP_PICKER_ERROR,
130
+                            err
131
+                        ))
132
+                    );
133
+                } else {
134
+                    onFailure(new JitsiTrackError(
135
+                        JitsiTrackErrors.ELECTRON_DESKTOP_PICKER_NOT_FOUND));
136
+                }
137
+            };
126 138
         } else if (RTCBrowserType.isTemasysPluginUsed()) {
127 139
             // XXX Don't require Temasys unless it's to be used because it
128 140
             // doesn't run on React Native, for example.

Carregando…
Cancelar
Salvar