2013-09-27 12:05:39 -07:00
|
|
|
/*global app, $, me*/
|
2013-09-26 20:19:46 -07:00
|
|
|
"use strict";
|
|
|
|
|
|
|
|
var HumanModel = require('human-model');
|
|
|
|
|
|
|
|
module.exports = HumanModel.define({
|
|
|
|
initialize: function () {
|
|
|
|
var self = this;
|
|
|
|
$(window).blur(function () {
|
|
|
|
self.focused = false;
|
|
|
|
});
|
|
|
|
$(window).focus(function () {
|
|
|
|
self.focused = true;
|
2013-09-27 12:05:39 -07:00
|
|
|
if (me._activeContact) {
|
|
|
|
me.setActiveContact(me._activeContact);
|
|
|
|
}
|
2013-09-26 20:19:46 -07:00
|
|
|
self.markActive();
|
|
|
|
});
|
2013-09-27 09:47:54 -07:00
|
|
|
|
2013-10-14 13:36:19 -07:00
|
|
|
app.desktop.on('sleep', function () {
|
|
|
|
clearTimeout(this.idleTimer);
|
|
|
|
console.log('went to sleep');
|
|
|
|
self.markInactive();
|
|
|
|
});
|
2013-10-11 15:40:42 -07:00
|
|
|
|
2014-01-06 22:01:17 -08:00
|
|
|
self.cacheStatus = app.cache.state;
|
|
|
|
app.cache.on('change', function (state) {
|
|
|
|
self.cacheStatus = state;
|
|
|
|
});
|
|
|
|
|
2014-01-23 11:11:56 -08:00
|
|
|
document.addEventListener('deviceid', function (event) {
|
|
|
|
self.deviceID = event.deviceid;
|
|
|
|
});
|
|
|
|
|
2013-09-26 20:19:46 -07:00
|
|
|
this.markActive();
|
|
|
|
},
|
|
|
|
session: {
|
2014-01-05 04:19:46 -08:00
|
|
|
focused: ['bool', false, true],
|
|
|
|
active: ['bool', false, false],
|
|
|
|
connected: ['bool', false, false],
|
|
|
|
hasConnected: ['bool', false, false],
|
|
|
|
idleTimeout: ['number', false, 600000],
|
2013-09-27 09:47:54 -07:00
|
|
|
idleSince: 'date',
|
2014-01-05 04:19:46 -08:00
|
|
|
allowAlerts: ['bool', false, false],
|
|
|
|
badge: 'string',
|
|
|
|
pageTitle: 'string',
|
2014-01-06 22:01:17 -08:00
|
|
|
hasActiveCall: ['boolean', false, false],
|
2014-01-23 11:11:56 -08:00
|
|
|
cacheStatus: 'string',
|
2014-01-27 14:55:26 -08:00
|
|
|
deviceID: ['string', false, '']
|
2013-09-27 09:47:54 -07:00
|
|
|
},
|
|
|
|
derived: {
|
|
|
|
title: {
|
|
|
|
deps: ['pageTitle', 'badge'],
|
|
|
|
fn: function () {
|
|
|
|
var base = this.pageTitle ? 'Otalk - ' + this.pageTitle : 'Otalk';
|
|
|
|
if (this.badge) {
|
|
|
|
return this.badge + ' • ' + base;
|
|
|
|
}
|
|
|
|
return base;
|
|
|
|
}
|
2014-01-23 11:11:56 -08:00
|
|
|
},
|
|
|
|
deviceIDReady: {
|
|
|
|
deps: ['connected', 'deviceID'],
|
|
|
|
fn: function () {
|
2014-01-27 14:43:28 -08:00
|
|
|
return (this.connected && !!this.deviceID);
|
2014-01-23 11:11:56 -08:00
|
|
|
}
|
2013-09-27 09:47:54 -07:00
|
|
|
}
|
2013-09-26 20:19:46 -07:00
|
|
|
},
|
|
|
|
markActive: function () {
|
|
|
|
clearTimeout(this.idleTimer);
|
|
|
|
|
|
|
|
var wasInactive = !this.active;
|
|
|
|
this.active = true;
|
|
|
|
this.idleSince = new Date(Date.now());
|
|
|
|
|
|
|
|
this.idleTimer = setTimeout(this.markInactive.bind(this), this.idleTimeout);
|
|
|
|
},
|
|
|
|
markInactive: function () {
|
|
|
|
if (this.focused) {
|
|
|
|
return this.markActive();
|
|
|
|
}
|
|
|
|
|
|
|
|
this.active = false;
|
|
|
|
this.idleSince = new Date(Date.now());
|
|
|
|
}
|
|
|
|
});
|