You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.5 KiB
55 lines
1.5 KiB
// index.js
|
|
// Copyright (C) 2022 DTP Technologies, LLC
|
|
// License: Apache-2.0
|
|
|
|
'use strict';
|
|
|
|
const DTP_COMPONENT = { name: 'Site', slug: 'site' };
|
|
|
|
const dtp = window. dtp = window.dtp || { };
|
|
|
|
import DtpSiteApp from './site-app.js';
|
|
import DtpWebLog from 'dtp/dtp-log.js';
|
|
import UIkit from 'uikit';
|
|
|
|
/**
|
|
* Monkeypatch to count characters instead of .length's code point count.
|
|
* @returns character count of string
|
|
*/
|
|
String.prototype.charCount = function () {
|
|
const splat = [...this];
|
|
return splat.length;
|
|
};
|
|
|
|
window.addEventListener('load', async ( ) => {
|
|
// application console log
|
|
dtp.log = new DtpWebLog(DTP_COMPONENT);
|
|
|
|
// service worker
|
|
if ('serviceWorker' in navigator) {
|
|
try {
|
|
dtp.registration = await navigator.serviceWorker.register('/dist/js/service_worker.min.js');
|
|
dtp.log.info('load', 'service worker startup complete', { scope: dtp.registration.scope });
|
|
} catch (error) {
|
|
console.log('service worker startup failed', { error });
|
|
UIkit.modal.alert(`Service worker startup failed: ${error.message}`);
|
|
}
|
|
}
|
|
|
|
dtp.app = new DtpSiteApp(dtp.user);
|
|
if (dtp.user && dtp.user._id) {
|
|
await dtp.app.connect();
|
|
}
|
|
|
|
dtp.log.debug('load', 'dispatching load event');
|
|
window.dispatchEvent(new Event('dtp-load'));
|
|
});
|
|
|
|
document.addEventListener('socketConnected', async ( ) => {
|
|
if (dtp.room) {
|
|
dtp.app.socket.joinChannel(dtp.room._id);
|
|
if (dtp.user && (dtp.user._id === dtp.room.owner._id)) {
|
|
dtp.app.socket.joinChannel(`broadcast:${dtp.room._id}`);
|
|
}
|
|
}
|
|
});
|