| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- app.UpdateChecker = class UpdateChecker {
- constructor() {
- this.lastCheck = Date.now();
- $.on(window, "focus", () => this.onFocus());
- if (app.serviceWorker) {
- app.serviceWorker.on("updateready", () => this.onUpdateReady());
- }
- setTimeout(() => this.checkDocs(), 0);
- }
- check() {
- if (app.serviceWorker) {
- app.serviceWorker.update();
- } else {
- ajax({
- url: $('script[src*="application"]').getAttribute("src"),
- dataType: "application/javascript",
- error: (_, xhr) => {
- if (xhr.status === 404) {
- return this.onUpdateReady();
- }
- },
- });
- }
- }
- onUpdateReady() {
- new app.views.Notif("UpdateReady", { autoHide: null });
- }
- checkDocs() {
- if (!app.settings.get("manualUpdate")) {
- app.docs.updateInBackground();
- } else {
- app.docs.checkForUpdates((i) => {
- if (i > 0) {
- return this.onDocsUpdateReady();
- }
- });
- }
- }
- onDocsUpdateReady() {
- new app.views.Notif("UpdateDocs", { autoHide: null });
- }
- onFocus() {
- if (Date.now() - this.lastCheck > 21600e3) {
- this.lastCheck = Date.now();
- this.check();
- }
- }
- };
|