mami/src/mami.js/context.js
flash cf71bab92d Rewrote connection handling.
This has been in the works for over a month and might break things because it's a very radical change.
If it causes you to be unable to join chat, report it on the forum or try joining using the legacy chat on https://sockchat.flashii.net.
2024-04-17 15:42:50 +00:00

90 lines
2.8 KiB
JavaScript

#include events.js
const MamiContext = function(globalEventTarget, eventTarget) {
if(typeof globalEventTarget !== 'object' && globalEventTarget === null)
throw 'globalEventTarget must be undefined or a non-null object';
if(eventTarget === undefined)
eventTarget = 'mami';
else if(typeof eventTarget !== 'object' || eventTarget === null)
throw 'eventTarget must be a string or a non-null object';
if(typeof eventTarget === 'string')
eventTarget = globalEventTarget.scopeTo(eventTarget);
let isUnloading = false;
let settings;
let views;
let sound;
let textTriggers;
let eeprom;
let conMan;
let protoWorker;
return {
get globalEvents() { return globalEventTarget; },
get events() { return eventTarget; },
get isUnloading() { return isUnloading; },
set isUnloading(state) {
isUnloading = !!state;
},
get settings() { return settings; },
set settings(value) {
if(settings !== undefined)
throw 'settings is already defined';
if(typeof value !== 'object' || value === null)
throw 'settings must be a non-null object';
settings = value;
},
get views() { return views; },
set views(value) {
if(views !== undefined)
throw 'views is already defined';
if(typeof value !== 'object' || value === null)
throw 'views must be a non-null object';
views = value;
},
get sound() { return sound; },
set sound(value) {
if(sound !== undefined)
throw 'sound is already defined';
if(typeof value !== 'object' || value === null)
throw 'sound must be a non-null object';
sound = value;
},
get textTriggers() { return textTriggers; },
set textTriggers(value) {
if(typeof value !== 'object' || value === null)
throw 'textTriggers must be a non-null object';
textTriggers = value;
},
get eeprom() { return eeprom; },
set eeprom(value) {
if(typeof value !== 'object' || value === null)
throw 'eeprom must be a non-null object';
eeprom = value;
},
get conMan() { return conMan; },
set conMan(value) {
if(typeof value !== 'object' || value === null)
throw 'conMan must be a non-null object';
conMan = value;
},
get protoWorker() { return protoWorker; },
set protoWorker(value) {
if(typeof value !== 'object' || value === null)
throw 'protoWorker must be a non-null object';
protoWorker = value;
},
};
};