react-native-context-center
Version:
React native package for Impekable context center customer app
68 lines (58 loc) • 2.11 kB
JavaScript
import {NativeModules,NativeAppEventEmitter,Platform} from 'react-native';
const { CCManager } = NativeModules;
function parseAccessManager(manager) {
if (manager) {
this.token = manager.token;
}
return true;
}
class ClientManager{
constructor(token){
this.token = token;
this.setupEventHandler();
this.initEventHandler();
}
setupEventHandler(){
this.onTokenExpired = null;
this.onTokenWillExpire = null;
this.onTokenInvalid = null;
}
initEventHandler(){
this._clientManagerTokenExpiredSubscription = NativeAppEventEmitter.addListener(
'accessManagerTokenExpired',
() => {
console.log('_clientManagerTokenExpiredSubscription')
if (this.onTokenExpired) this.onTokenExpired();
},
);
this._clientManagerTokenWillExpireSubscription = NativeAppEventEmitter.addListener(
'accessManagerTokenWillExpire',
(error) => {
console.log('_clientManagerTokenWillExpireSubscription:',error)
if (this.onTokenWillExpire) this.onTokenWillExpire(error);
},
);
this._clientManagerTokenInvalidSubscription = NativeAppEventEmitter.addListener(
'accessManagerTokenInvalid',
(error) => {
console.log('_clientManagerTokenInvalidSubscription:',error)
if (this.onTokenInvalid) this.onTokenInvalid(error);
},
);
CCManager.initWithToken(this.token).then(parseAccessManager.bind(this));
}
registerClient(){
if(Platform.OS === 'ios'){
CCManager.setupTwilio()
}
}
updateToken(newToken){
CCManager.updateToken(newToken).then(parseAccessManager.bind(this))
}
removeListeners() {
this._clientManagerTokenExpiredSubscription.remove();
this._clientManagerTokenWillExpireSubscription.remove();
this._clientManagerTokenInvalidSubscription.remove();
}
}
export default ClientManager;