The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Rocket.Chat/app/cloud/client/admin/cloud.js

222 lines
4.3 KiB

import './cloud.html';
import { Meteor } from 'meteor/meteor';
import { ReactiveVar } from 'meteor/reactive-var';
import { Template } from 'meteor/templating';
import { Tracker } from 'meteor/tracker';
import queryString from 'query-string';
import toastr from 'toastr';
import { t } from '../../../utils';
import { SideNav } from '../../../ui-utils/client';
Template.cloud.onCreated(function() {
const instance = this;
instance.info = new ReactiveVar();
instance.loading = new ReactiveVar(true);
instance.isLoggedIn = new ReactiveVar(false);
instance.loadRegStatus = function _loadRegStatus() {
Meteor.call('cloud:checkRegisterStatus', (error, info) => {
if (error) {
console.warn('cloud:checkRegisterStatus', error);
return;
}
instance.info.set(info);
instance.loading.set(false);
});
};
instance.getLoggedIn = function _getLoggedIn() {
Meteor.call('cloud:checkUserLoggedIn', (error, result) => {
if (error) {
console.warn(error);
return;
}
instance.isLoggedIn.set(result);
});
};
instance.oauthAuthorize = function _oauthAuthorize() {
Meteor.call('cloud:getOAuthAuthorizationUrl', (error, url) => {
if (error) {
console.warn(error);
return;
}
window.location.href = url;
});
};
instance.logout = function _logout() {
Meteor.call('cloud:logout', (error) => {
if (error) {
console.warn(error);
return;
}
instance.getLoggedIn();
});
};
instance.connectWorkspace = function _connectWorkspace(token) {
Meteor.call('cloud:connectWorkspace', token, (error, success) => {
if (error) {
toastr.error(error);
instance.loadRegStatus();
return;
}
if (!success) {
toastr.error('An error occured connecting');
instance.loadRegStatus();
return;
}
toastr.success(t('Connected'));
instance.loadRegStatus();
});
};
instance.disconnectWorkspace = function _disconnectWorkspace() {
Meteor.call('cloud:disconnectWorkspace', (error, success) => {
if (error) {
toastr.error(error);
instance.loadRegStatus();
return;
}
if (!success) {
toastr.error('An error occured disconnecting');
instance.loadRegStatus();
return;
}
toastr.success(t('Disconnected'));
instance.loadRegStatus();
});
};
instance.syncWorkspace = function _syncWorkspace() {
Meteor.call('cloud:syncWorkspace', (error, success) => {
if (error) {
toastr.error(error);
instance.loadRegStatus();
return;
}
if (!success) {
toastr.error('An error occured syncing');
instance.loadRegStatus();
return;
}
toastr.success(t('Sync Complete'));
instance.loadRegStatus();
});
};
instance.registerWorkspace = function _registerWorkspace() {
Meteor.call('cloud:registerWorkspace', (error, success) => {
if (error) {
toastr.error(error);
instance.loadRegStatus();
return;
}
if (!success) {
toastr.error('An error occured');
instance.loadRegStatus();
return;
}
return instance.syncWorkspace();
});
};
const params = queryString.parse(location.search);
if (params.token) {
instance.connectWorkspace(params.token);
} else {
instance.loadRegStatus();
}
instance.getLoggedIn();
});
Template.cloud.helpers({
info() {
return Template.instance().info.get();
},
isLoggedIn() {
return Template.instance().isLoggedIn.get();
},
});
Template.cloud.events({
'click .update-email-btn'() {
const val = $('input[name=cloudEmail]').val();
Meteor.call('cloud:updateEmail', val, false, (error) => {
if (error) {
console.warn(error);
return;
}
toastr.success(t('Saved'));
});
},
'click .resend-email-btn'() {
const val = $('input[name=cloudEmail]').val();
Meteor.call('cloud:updateEmail', val, true, (error) => {
if (error) {
console.warn(error);
return;
}
toastr.success(t('Requested'));
});
},
'click .login-btn'(e, i) {
i.oauthAuthorize();
},
'click .logout-btn'(e, i) {
i.logout();
},
'click .connect-btn'(e, i) {
const token = $('input[name=cloudToken]').val();
i.connectWorkspace(token);
},
'click .register-btn'(e, i) {
i.registerWorkspace();
},
'click .disconnect-btn'(e, i) {
i.disconnectWorkspace();
},
'click .sync-btn'(e, i) {
i.syncWorkspace();
},
});
Template.cloud.onRendered(() => {
Tracker.afterFlush(() => {
SideNav.setFlex('adminFlex');
SideNav.openFlex();
});
});