zoom_video_sdk_user.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292
  1. import { ZoomVideoSDKErrors } from './zoom_video_sdk_defines.js'
  2. import messages from './electron_zoomvideosdk_pb.js'
  3. import { setUserInfo } from './zoom_video_sdk_user_util.js'
  4. export default (function () {
  5. var instance
  6. /**
  7. * Return an instance to manage users present in a video SDK session.
  8. * @module zoom_video_sdk_user
  9. * @return {ZoomVideoSDKUser}
  10. */
  11. function init (opts) {
  12. const clientOpts = {...opts}
  13. // Private methods and variables
  14. if (!clientOpts.addon) {
  15. return null
  16. }
  17. const _addon = clientOpts.addon.GetUserHelper()
  18. const _renderAddon = clientOpts.addon.GetVideoSDKRender()
  19. return {
  20. // Public methods and variables
  21. /**
  22. * Subscribe video/share
  23. * @method subscribe
  24. * @param {Object} user
  25. * @param {Number} dataType 0 means subscribe video, 1 means subscribe share
  26. * @param {Number} recv_handle
  27. * @param {Number} resolution subscribe size
  28. * @return {Number} If the function succeed, the return value is ZoomVideoSDKErrors_Success.
  29. Otherwise failed. To get extended error information, {@link ZoomVideoSDKErrors} enum.
  30. */
  31. subscribe: function (opts) {
  32. if (_renderAddon) {
  33. const clientOpts = {...opts}
  34. const user = setUserInfo(clientOpts.user)
  35. const dataType = Number(clientOpts.dataType)
  36. const recv_handle = Number(clientOpts.recv_handle)
  37. const resolution = Number(clientOpts.resolution)
  38. try {
  39. const SubscribeParams = new messages.SubscribeParams()
  40. SubscribeParams.setZnUser(user)
  41. SubscribeParams.setZnType(dataType)
  42. SubscribeParams.setZnRecvHandle(recv_handle)
  43. SubscribeParams.setZnResolution(resolution)
  44. const bytes = SubscribeParams.serializeBinary()
  45. return _renderAddon.Subscribe(bytes)
  46. } catch (error) {
  47. return ZoomVideoSDKErrors.ZoomVideoSDKErrors_Invalid_Parameter;
  48. }
  49. }
  50. return ZoomVideoSDKErrors.ZoomVideoSDKErrors_Internal_Error
  51. },
  52. /**
  53. * Unsubscribe video/share
  54. * @method unSubscribe
  55. * @param {Number} recv_handle
  56. * @param {Object} user
  57. * @param {Number} dataType 0 means UnSubscribe video, 1 means UnSubscribe share
  58. * @return {Number} If the function succeed, the return value is ZoomVideoSDKErrors_Success.
  59. Otherwise failed. To get extended error information, {@link ZoomVideoSDKErrors} enum.
  60. */
  61. unSubscribe: function (opts) {
  62. if (_renderAddon) {
  63. const clientOpts = {...opts}
  64. const recv_handle = Number(clientOpts.recv_handle)
  65. const user = setUserInfo(clientOpts.user)
  66. const dataType = Number(clientOpts.dataType)
  67. try {
  68. const UnSubscribeParams = new messages.UnSubscribeParams()
  69. UnSubscribeParams.setZnRecvHandle(recv_handle)
  70. UnSubscribeParams.setZnUser(user)
  71. UnSubscribeParams.setZnType(dataType)
  72. const bytes = UnSubscribeParams.serializeBinary()
  73. return _renderAddon.UnSubscribe(bytes)
  74. } catch (error) {
  75. return ZoomVideoSDKErrors.ZoomVideoSDKErrors_Invalid_Parameter;
  76. }
  77. }
  78. return ZoomVideoSDKErrors.ZoomVideoSDKErrors_Internal_Error
  79. },
  80. /**
  81. * Subscribe camera stream
  82. * @method subscribeMultiCameraStream
  83. * @param {Object} user
  84. * @param {Number} cameraStreamID the id which camera stream will be subscribed
  85. * @param {Number} recv_handle
  86. * @param {Number} resolution subscribe size
  87. * @return {Number} If the function succeed, the return value is ZoomVideoSDKErrors_Success.
  88. Otherwise failed. To get extended error information, {@link ZoomVideoSDKErrors} enum.
  89. */
  90. subscribeMultiCameraStream: function (opts) {
  91. if (_renderAddon) {
  92. const clientOpts = {...opts}
  93. const user = setUserInfo(clientOpts.user)
  94. const cameraStreamID = Number(clientOpts.cameraStreamID)
  95. const recv_handle = Number(clientOpts.recv_handle)
  96. const resolution = Number(clientOpts.resolution)
  97. try {
  98. const SubscribeMultiCameraStreamParams = new messages.SubscribeMultiCameraStreamParams()
  99. SubscribeMultiCameraStreamParams.setZnUser(user)
  100. SubscribeMultiCameraStreamParams.setCamerastreamid(cameraStreamID)
  101. SubscribeMultiCameraStreamParams.setZnRecvHandle(recv_handle)
  102. SubscribeMultiCameraStreamParams.setZnResolution(resolution)
  103. const bytes = SubscribeMultiCameraStreamParams.serializeBinary()
  104. return _renderAddon.SubscribeMultiCameraStream(bytes)
  105. } catch (error) {
  106. return ZoomVideoSDKErrors.ZoomVideoSDKErrors_Invalid_Parameter;
  107. }
  108. }
  109. return ZoomVideoSDKErrors.ZoomVideoSDKErrors_Internal_Error
  110. },
  111. /**
  112. * the id which camera stream will be subscribed
  113. * @method unSubscribeMultiCameraStream
  114. * @param {Number} recv_handle
  115. * @param {Object} user
  116. * @param {Number} cameraStreamID the id which camera stream will be unsubscribed
  117. * @return {Number} If the function succeed, the return value is ZoomVideoSDKErrors_Success.
  118. Otherwise failed. To get extended error information, {@link ZoomVideoSDKErrors} enum.
  119. */
  120. unSubscribeMultiCameraStream: function (opts) {
  121. if (_renderAddon) {
  122. const clientOpts = {...opts}
  123. const recv_handle = Number(clientOpts.recv_handle)
  124. const user = setUserInfo(clientOpts.user)
  125. const cameraStreamID = Number(clientOpts.cameraStreamID)
  126. try {
  127. const UnSubscribeMultiCameraStreamParams = new messages.UnSubscribeMultiCameraStreamParams()
  128. UnSubscribeMultiCameraStreamParams.setZnRecvHandle(recv_handle)
  129. UnSubscribeMultiCameraStreamParams.setZnUser(user)
  130. UnSubscribeMultiCameraStreamParams.setCamerastreamid(cameraStreamID)
  131. const bytes = UnSubscribeMultiCameraStreamParams.serializeBinary()
  132. return _renderAddon.UnSubscribeMultiCameraStream(bytes)
  133. } catch (error) {
  134. return ZoomVideoSDKErrors.ZoomVideoSDKErrors_Invalid_Parameter;
  135. }
  136. }
  137. return ZoomVideoSDKErrors.ZoomVideoSDKErrors_Internal_Error
  138. },
  139. /**
  140. * Get multi-camera data pipe list.
  141. * @method getMultiCameraStreamList
  142. * @param {Object} user
  143. * @return {Array} the return value is the pipe list.
  144. */
  145. getMultiCameraStreamList: function (opts) {
  146. if (_renderAddon) {
  147. const clientOpts = {...opts}
  148. const user = setUserInfo(clientOpts.user)
  149. try {
  150. const GetMultiCameraStreamList = new messages.GetMultiCameraStreamList()
  151. GetMultiCameraStreamList.setUser(user)
  152. const bytes = GetMultiCameraStreamList.serializeBinary()
  153. const result = _renderAddon.GetMultiCameraStreamList(bytes)
  154. const message = new messages.MultiCameraStreamList.deserializeBinary(result)
  155. const tempList = message.getCamerastreaminfoList()
  156. let cameraStreamList = []
  157. for (let val of tempList) {
  158. let obj = {
  159. cameraStreamID: val.getCamerastreamid()
  160. }
  161. cameraStreamList.push(obj)
  162. }
  163. return cameraStreamList
  164. } catch (error) {
  165. return ZoomVideoSDKErrors.ZoomVideoSDKErrors_Invalid_Parameter;
  166. }
  167. }
  168. return ZoomVideoSDKErrors.ZoomVideoSDKErrors_Internal_Error
  169. },
  170. /**
  171. * Change name of user object
  172. * @method changeName
  173. * @param {String} name the new name of the user object
  174. * @param {Object} user the user object
  175. * @return {Boolean} true if success. Otherwise returns false.
  176. */
  177. changeName: function (opts) {
  178. if (_addon) {
  179. const clientOpts = {...opts}
  180. try {
  181. const name = clientOpts.name
  182. const user = setUserInfo(clientOpts.user)
  183. const ChangeNameParams = new messages.ChangeNameParams()
  184. ChangeNameParams.setZnName(name)
  185. ChangeNameParams.setUser(user)
  186. const bytes = ChangeNameParams.serializeBinary()
  187. return _addon.ChangeName(bytes)
  188. } catch (error) {
  189. return ZoomVideoSDKErrors.ZoomVideoSDKErrors_Invalid_Parameter;
  190. }
  191. }
  192. return ZoomVideoSDKErrors.ZoomVideoSDKErrors_Internal_Error
  193. },
  194. /**
  195. * make some user as session host
  196. * @method makeHost
  197. * @param {Object} user the user object
  198. * @return {Boolean} true if success. Otherwise returns false.
  199. */
  200. makeHost: function (opts) {
  201. if (_addon) {
  202. const clientOpts = {...opts}
  203. try {
  204. const user = setUserInfo(clientOpts.user)
  205. const MakeHostParams = new messages.MakeHostParams()
  206. MakeHostParams.setUser(user)
  207. const bytes = MakeHostParams.serializeBinary()
  208. return _addon.MakeHost(bytes)
  209. } catch (error) {
  210. return ZoomVideoSDKErrors.ZoomVideoSDKErrors_Invalid_Parameter;
  211. }
  212. }
  213. return ZoomVideoSDKErrors.ZoomVideoSDKErrors_Internal_Error
  214. },
  215. /**
  216. * make some user as session manager(coHost)
  217. * @method makeManager
  218. * @param {Object} user the user object
  219. * @return {Boolean} true if success. Otherwise returns false.
  220. */
  221. makeManager: function (opts) {
  222. if (_addon) {
  223. const clientOpts = {...opts}
  224. try {
  225. const user = setUserInfo(clientOpts.user)
  226. const MakeManagerParams = new messages.MakeManagerParams()
  227. MakeManagerParams.setUser(user)
  228. const bytes = MakeManagerParams.serializeBinary()
  229. return _addon.MakeManager(bytes)
  230. } catch (error) {
  231. return ZoomVideoSDKErrors.ZoomVideoSDKErrors_Invalid_Parameter;
  232. }
  233. }
  234. return ZoomVideoSDKErrors.ZoomVideoSDKErrors_Internal_Error
  235. },
  236. /**
  237. * revoke some user's manager right
  238. * @method revokeManager
  239. * @param {Object} user the user object
  240. * @return {Boolean} true if success. Otherwise returns false.
  241. */
  242. revokeManager: function (opts) {
  243. if (_addon) {
  244. const clientOpts = {...opts}
  245. try {
  246. const user = setUserInfo(clientOpts.user)
  247. const RevokeManagerParams = new messages.RevokeManagerParams()
  248. RevokeManagerParams.setUser(user)
  249. const bytes = RevokeManagerParams.serializeBinary()
  250. return _addon.RevokeManager(bytes)
  251. } catch (error) {
  252. return ZoomVideoSDKErrors.ZoomVideoSDKErrors_Invalid_Parameter;
  253. }
  254. }
  255. return ZoomVideoSDKErrors.ZoomVideoSDKErrors_Internal_Error
  256. },
  257. /**
  258. * remove some user from current session
  259. * @method removeUser
  260. * @param {Object} user the user object
  261. * @return {Number} If the function succeed, the return value is ZoomVideoSDKErrors_Success.
  262. Otherwise failed. To get extended error information, {@link ZoomVideoSDKErrors} enum.
  263. */
  264. removeUser: function (opts) {
  265. if (_addon) {
  266. const clientOpts = {...opts}
  267. try {
  268. const user = setUserInfo(clientOpts.user)
  269. const RemoveUserParams = new messages.RemoveUserParams()
  270. RemoveUserParams.setUser(user)
  271. const bytes = RemoveUserParams.serializeBinary()
  272. return _addon.RemoveUser(bytes)
  273. } catch (error) {
  274. return ZoomVideoSDKErrors.ZoomVideoSDKErrors_Invalid_Parameter;
  275. }
  276. }
  277. return ZoomVideoSDKErrors.ZoomVideoSDKErrors_Internal_Error
  278. }
  279. }
  280. };
  281. return {
  282. getInstance: function (opts) {
  283. if (!instance) {
  284. instance = init(opts)
  285. }
  286. return instance
  287. }
  288. }
  289. })()