Electron-445 - Change API from presence status to meeting status

This commit is contained in:
Kiran Niranjan
2018-05-10 13:10:41 +05:30
committed by kiranniranjan
parent 296af7fad5
commit 2fe67c6fb6
4 changed files with 19 additions and 29 deletions

View File

@@ -21,7 +21,7 @@ const cmds = keyMirror({
openScreenPickerWindow: null, openScreenPickerWindow: null,
popupMenu: null, popupMenu: null,
optimizeMemoryConsumption: null, optimizeMemoryConsumption: null,
setPresenceStatus: null setIsInMeeting: null
}); });
module.exports = { module.exports = {

View File

@@ -17,7 +17,7 @@ const { bringToFront } = require('./bringToFront.js');
const eventEmitter = require('./eventEmitter'); const eventEmitter = require('./eventEmitter');
const { isMac } = require('./utils/misc'); const { isMac } = require('./utils/misc');
const { openScreenPickerWindow } = require('./desktopCapturer'); const { openScreenPickerWindow } = require('./desktopCapturer');
const { optimizeMemory, setPresenceStatus } = require('./memoryMonitor'); const { optimizeMemory, setIsInMeeting } = require('./memoryMonitor');
const apiEnums = require('./enums/api.js'); const apiEnums = require('./enums/api.js');
const apiCmds = apiEnums.cmds; const apiCmds = apiEnums.cmds;
@@ -153,9 +153,9 @@ electron.ipcMain.on(apiName, (event, arg) => {
optimizeMemory(arg.memory); optimizeMemory(arg.memory);
} }
break; break;
case apiCmds.setPresenceStatus: case apiCmds.setIsInMeeting:
if (typeof arg.status === 'string') { if (typeof arg.isInMeeting === 'boolean') {
setPresenceStatus(arg.status); setIsInMeeting(arg.isInMeeting);
} }
break; break;
default: default:

View File

@@ -6,13 +6,12 @@ const { getMainWindow, setIsAutoReload } = require('./windowMgr');
const systemIdleTime = require('@paulcbetts/system-idle-time'); const systemIdleTime = require('@paulcbetts/system-idle-time');
const { getConfigField } = require('./config'); const { getConfigField } = require('./config');
const awayStatus = 'AWAY';
const maxMemory = 800; const maxMemory = 800;
let maxIdleTime = 4 * 60 * 1000; let maxIdleTime = 4 * 60 * 1000;
let reloadThreshold = 30 * 60 * 1000; let reloadThreshold = 30 * 60 * 1000;
let reloadedTimeStamp; let reloadedTimeStamp;
let userPresenceStatus; let isInMeeting = false;
// once a minute // once a minute
setInterval(gatherMemory, 1000 * 60); setInterval(gatherMemory, 1000 * 60);
@@ -41,7 +40,7 @@ function optimizeMemory(memoryInfo) {
const memoryConsumed = (memoryInfo && memoryInfo.workingSetSize / 1024) || 0; const memoryConsumed = (memoryInfo && memoryInfo.workingSetSize / 1024) || 0;
const canReload = (!reloadedTimeStamp || (new Date().getTime() - reloadedTimeStamp) > reloadThreshold); const canReload = (!reloadedTimeStamp || (new Date().getTime() - reloadedTimeStamp) > reloadThreshold);
if (memoryConsumed > maxMemory && systemIdleTime.getIdleTime() > maxIdleTime && canReload && !isUserActive()) { if (memoryConsumed > maxMemory && systemIdleTime.getIdleTime() > maxIdleTime && canReload && !isInMeeting) {
getConfigField('memoryRefresh') getConfigField('memoryRefresh')
.then((enabled) => { .then((enabled) => {
if (enabled) { if (enabled) {
@@ -53,7 +52,7 @@ function optimizeMemory(memoryInfo) {
log.send(logLevels.INFO, 'Reloading the app to optimize memory usage as' + log.send(logLevels.INFO, 'Reloading the app to optimize memory usage as' +
' memory consumption was ' + memoryConsumed + ' memory consumption was ' + memoryConsumed +
' user activity tick was ' + systemIdleTime.getIdleTime() + ' user activity tick was ' + systemIdleTime.getIdleTime() +
' user presence status was ' + userPresenceStatus ); ' user was in a meeting? ' + isInMeeting );
mainWindow.reload(); mainWindow.reload();
} }
} }
@@ -62,23 +61,14 @@ function optimizeMemory(memoryInfo) {
} }
/** /**
* Checks the user presence status to see * Sets the current user meeting status
* if the user is active * @param bool - Whether user is in an active meeting
* @return {boolean}
*/ */
function isUserActive() { function setIsInMeeting(bool) {
return !(userPresenceStatus && userPresenceStatus === awayStatus); isInMeeting = bool;
}
/**
* Sets the current user presence status
* @param status
*/
function setPresenceStatus(status) {
userPresenceStatus = status;
} }
module.exports = { module.exports = {
optimizeMemory, optimizeMemory,
setPresenceStatus setIsInMeeting
}; };

View File

@@ -64,10 +64,10 @@ const throttledSetBadgeCount = throttle(1000, function(count) {
}); });
}); });
const throttledSetPresenceStatus = throttle(1000, function(status) { const throttledSetIsInMeetingStatus = throttle(1000, function(isInMeeting) {
local.ipcRenderer.send(apiName, { local.ipcRenderer.send(apiName, {
cmd: apiCmds.setPresenceStatus, cmd: apiCmds.setIsInMeeting,
status: status isInMeeting
}); });
}); });
@@ -296,11 +296,11 @@ function createAPI() {
}, },
/** /**
* Sets user presence status * Sets if the user is in an active meeting
* will be used to handle memory refresh functionality * will be used to handle memory refresh functionality
*/ */
setPresenceStatus: function (status) { setIsInMeeting: function (isInMeeting) {
throttledSetPresenceStatus(status); throttledSetIsInMeetingStatus(isInMeeting);
} }
}; };