feat(zoom): add plugin (#2916)

This commit is contained in:
Carson Chen Zoom 2019-02-14 00:49:29 -08:00 committed by Daniel Sogl
parent fd27136de7
commit 50e05349ec

View File

@ -0,0 +1,170 @@
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
/**
* @name Zoom
* @description
* A Cordova plugin to use Zoom Video Conferencing services on Cordova applications.
*
* @usage
* ```typescript
* import { Zoom } from '@ionic-native/zoom';
*
*
* constructor(private zoomService: Zoom) { }
*
* ...
*
* // Initialize Zoom SDK, need to be called when app fired up.
* this.zoomService.initialize(API_KEY, API_SECRET)
* .then((success: any) => console.log(success))
* .catch((error: any) => console.log(error));
*
* // Log user in with Zoom username and password.
* this.zoomService.login(userName, password)
* .then((success: any) => console.log(success))
* .catch((error: any) => console.log(error));
*
* // Log user out.
* this.zoomService.logout()
* .then((success: boolean) => console.log(success))
* .catch((error: any) => console.log(error));
*
* // Check whether user is logged in.
* this.zoomService.isLoggedIn()
* .then((success: boolean) => console.log(success))
* .catch((error: any) => console.log(error));
*
* // meeting options (Only available for Android)
* let options = {
* "no_driving_mode":true,
* "no_invite":true,
* "no_meeting_end_message":true,
* "no_titlebar":false,
* "no_bottom_toolbar":false,
* "no_dial_in_via_phone":true,
* "no_dial_out_to_phone":true,
* "no_disconnect_audio":true,
* "no_share":true,
* "no_audio":true,
* "no_video":true,
* "no_meeting_error_message":true
* };
*
* // Join meeting.
* this.zoomService.joinMeeting(meetingNumber, meetingPassword, displayName, options)
* .then((success: any) => console.log(success))
* .catch((error: any) => console.log(error));
*
* // Start an existing meeting for non-login user.
* this.zoomService.startMeetingWithZAK(meetingNumber, displayName, zoomToken, zoomAccessToken, userId, options)
* .then((success: any) => console.log(success))
* .catch((error: any) => console.log(error));
*
* // Start an existing meeting for logged in user.
* this.zoomService.startMeeting(meetingNumber, vanityId, options)
* .then((success: any) => console.log(success))
* .catch((error: any) => console.log(error));
*
* // Start an instant meeting for logged in user.
* this.zoomService.startInstantMeeting()
* .then((success: anu) => console.log(success))
* .catch((error: any) => console.log(error));
*
* // Set language.
* this.zoomService.setLanguage("en-US")
* .then((success: any) => console.log(success))
* .catch((error: any) => console.log(error));
* ```
*/
@Plugin({
pluginName: 'Zoom',
plugin: 'cordova.plugin.zoom', // npm package name, example: cordova-plugin-camera
pluginRef: 'cordova.plugins.Zoom', // the variable reference to call the plugin, example: navigator.geolocation
repo: 'https://github.com/zoom/zoom-sdk-ionic', // the github repository URL for the plugin
platforms: ['Android', 'iOS'] // Array of platforms supported, example: ['Android', 'iOS']
})
@Injectable()
export class Zoom extends IonicNativePlugin {
/**
* Initialize Zoom SDK.
* @param appKey Zoom SDK app key.
* @param appSecret Zoom SDK app secret.
* @return {Promise<any>}
*/
@Cordova()
initialize(appKey: string, appSecret: string): Promise<any> { return; }
/**
* Log user in with Zoom username and password.
* @param username user's Zoom username.
* @param password user's Zoom password.
* @return {Promise<any>}
*/
@Cordova()
login(username: string, password: string): Promise<any> { return; }
/**
* Log user out.
* @return {Promise<any>} true if logout success / false if failed.
*/
@Cordova()
logout(): Promise<any> { return; }
/**
* Check whether the user is logged in.
* @return {Promise<boolean>} true if is logged in / false if not.
*/
@Cordova()
isLoggedIn(): Promise<boolean> { return; }
/**
* Join a meeting for logged in user.
* @param meetingNo meeting number.
* @param meetingPassword meeting password.
* @param options meeting options.
* @return {Promise<any>>}
*/
@Cordova()
joinMeeting(meetingNo: string, meetingPassword: string, displayName: string, options: any): Promise<any> { return; }
/**
* Start a meeting for non-login user.
* @param meetingNo meeting number.
* @param displayName display name shown in meeting.
* @param zoomToken zoom token retrieved from Zoom Rest API.
* @param zoomAccessToken zoom access token retrieved from Zoom Rest API.
* @param userId user ID retrieved from Zoom Rest API.
* @param options meeting options.
* @return {Promise<any>}
*/
@Cordova()
startMeetingWithZAK(meetingNo: string, displayName: string, zoomToken: string, zoomAccessToken: string, userId: string, options: any): Promise<any> { return; }
/**
* Start a meeting for logged in user.
* @param meetingNo meeting number.
* @param options meeting option.
* @return {Promise<any>}
*/
@Cordova()
startMeeting(meetingNo: string, options: any): Promise<any> { return; }
/**
* Start an instant meeting for logged in user.
* @param options meeting option.
* @return {Promise<any>}
*/
@Cordova()
startInstantMeeting(options: any): Promise<any> { return; }
/**
* Set language.
* @param languageTag language name.
* @return {Promise<any>}
*/
@Cordova()
setLocale(languageTag: string): Promise<any> { return; }
}