/
reloadcontroller.js
66 lines (53 loc) · 1.64 KB
/
reloadcontroller.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
AppUpdate.ReloadController = ClassX.extend(AppUpdate.Class, function(base){
var _self;
var reload = Package.reload.Reload;
var autoUpdate = Package.autoupdate.Autoupdate;
var hasNewUpdateBool = new ReactiveVar(false);
var reloadFunction = null;
this.settings = {
enabled: true,
environments: {
development: false,
test: true,
production: true
}
}
this.preventReload = function() {
if(!_self.settings.enabled)
return;
if(_self.settings.enabled) {
var envSettings = Meteor.settings || {};
if(!_.isUndefined(envSettings.public) && !_.isUndefined(envSettings.public.env))
{
if(!_self.settings.environments.development && envSettings.public.env == "development")
return;
if(envSettings.public.env == "test" && !_self.settings.environments.test)
return;
if(!_self.settings.environments.production && envSettings.public.env == "production")
return;
}
reload._onMigrate(function(retry) {
if(Session.get("MeteorReload-ManualReset")) {
Session.set("MeteorReload-ManualReset", false);
return [true,{}]
}
reloadFunction = retry;
return false;
})
}
}
this.hasNewUpdate = function() {
hasNewUpdateBool.set(autoUpdate.newClientAvailable());
return hasNewUpdateBool.get();
}
this.manualReload = function() {
Session.set("MeteorReload-ManualReset", true);
if(reloadFunction && _.isFunction(reloadFunction)) {
reloadFunction();
}
}
this.constructor = function() {
_self = this;
}
});
AppUpdate.reload = new AppUpdate.ReloadController();