| Server IP : 209.209.40.120 / Your IP : 216.73.217.112 Web Server : Microsoft-IIS/10.0 System : Windows NT NEWWWW 10.0 build 17763 (Windows Server 2019) i586 User : NEWWWW$ ( 0) PHP Version : 8.3.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : C:/framework7/node_modules/framework7/modules/service-worker/ |
Upload File : |
import { getWindow } from 'ssr-window';
import { extend } from '../../shared/utils.js';
const SW = {
registrations: [],
register(path, scope) {
const app = this;
const window = getWindow();
if (!('serviceWorker' in window.navigator) || !app.serviceWorker.container) {
return new Promise((resolve, reject) => {
reject(new Error('Service worker is not supported'));
});
}
return new Promise((resolve, reject) => {
app.serviceWorker.container.register(path, scope ? {
scope
} : {}).then(reg => {
SW.registrations.push(reg);
app.emit('serviceWorkerRegisterSuccess', reg);
resolve(reg);
}).catch(error => {
app.emit('serviceWorkerRegisterError', error);
reject(error);
});
});
},
unregister(registration) {
const app = this;
const window = getWindow();
if (!('serviceWorker' in window.navigator) || !app.serviceWorker.container) {
return new Promise((resolve, reject) => {
reject(new Error('Service worker is not supported'));
});
}
let registrations;
if (!registration) registrations = SW.registrations;else if (Array.isArray(registration)) registrations = registration;else registrations = [registration];
return Promise.all(registrations.map(reg => new Promise((resolve, reject) => {
reg.unregister().then(() => {
if (SW.registrations.indexOf(reg) >= 0) {
SW.registrations.splice(SW.registrations.indexOf(reg), 1);
}
app.emit('serviceWorkerUnregisterSuccess', reg);
resolve();
}).catch(error => {
app.emit('serviceWorkerUnregisterError', reg, error);
reject(error);
});
})));
}
};
export default {
name: 'sw',
params: {
serviceWorker: {
path: undefined,
scope: undefined
}
},
create() {
const app = this;
const window = getWindow();
extend(app, {
serviceWorker: {
container: 'serviceWorker' in window.navigator ? window.navigator.serviceWorker : undefined,
registrations: SW.registrations,
register: SW.register.bind(app),
unregister: SW.unregister.bind(app)
}
});
},
on: {
init() {
const window = getWindow();
if (!('serviceWorker' in window.navigator)) return;
const app = this;
if (app.device.cordova || window.Capacitor && window.Capacitor.isNative) return;
if (!app.serviceWorker.container) return;
const paths = app.params.serviceWorker.path;
const scope = app.params.serviceWorker.scope;
if (!paths || Array.isArray(paths) && !paths.length) return;
const toRegister = Array.isArray(paths) ? paths : [paths];
toRegister.forEach(path => {
app.serviceWorker.register(path, scope);
});
}
}
};