Cleanup of EEPROM init code.

This commit is contained in:
flash 2024-04-18 19:37:59 +00:00
parent a08793d992
commit 1dcddffc03
4 changed files with 83 additions and 64 deletions

View file

@ -1,35 +1,37 @@
#include utility.js #include eeprom/script.jsx
const MamiEEPROM = function() { const MamiEEPROM = function(baseUrl, getAuthLine) {
// if(typeof baseUrl !== 'string')
throw 'baseUrl must be a string';
if(typeof getAuthLine !== 'function')
throw 'getAuthLine must be a function';
// when the pools rewrite happen, retrieve this from futami common
const appId = '1';
let client;
return {
get client() {
return client;
},
init: async () => {
await MamiEEPROMLoadScript(baseUrl);
client = new EEPROM(appId, baseUrl, getAuthLine);
},
create: fileInput => {
if(client === undefined)
throw 'eeprom client is uninitialised';
return client.create(fileInput);
},
delete: async fileInfo => {
if(client === undefined)
throw 'eeprom client is uninitialised';
await client.delete(fileInfo);
},
}; };
MamiEEPROM.init = (function() {
let initialised = false;
return () => {
return new Promise((resolve, reject) => {
if(initialised)
return new Promise(resolve => resolve());
const script = $e({
tag: 'script',
attrs: {
charset: 'utf-8',
type: 'text/javascript',
src: `${futami.get('eeprom2')}/scripts/eepromv1a.js`,
onload: () => {
initialised = true;
resolve();
},
onerror: () => {
$r(script);
console.error('Failed to load EEPROM script!');
reject();
},
},
});
document.body.appendChild(script);
});
}; };
})();

View file

@ -0,0 +1,19 @@
#include utility.js
const MamiEEPROMLoadScript = baseUrl => {
return new Promise((resolve, reject) => {
if(typeof baseUrl !== 'string')
throw 'baseUrl must be a string';
const src = `${baseUrl}/scripts/eepromv1a.js`;
let script = $q(`script[src="${src}"]`);
if(script instanceof Element) {
resolve();
return;
}
script = <script src={src} onload={() => { resolve(); }} onerror={() => { $r(script); reject(); }} />;
document.body.appendChild(script);
});
};

View file

@ -1,4 +1,4 @@
window.Umi = { UI: {}, Protocol: { SockChat: { Protocol: {} } } }; window.Umi = { UI: {} };
#include animate.js #include animate.js
#include common.js #include common.js
@ -422,14 +422,12 @@ window.Umi = { UI: {}, Protocol: { SockChat: { Protocol: {} } } };
Umi.UI.InputMenus.Add('emotes', 'Emoticons'); Umi.UI.InputMenus.Add('emotes', 'Emoticons');
let doUpload; let doUpload;
MamiEEPROM.init() ctx.eeprom = new MamiEEPROM(futami.get('eeprom2'), MamiMisuzuAuth.getLine);
ctx.eeprom.init()
.catch(ex => { .catch(ex => {
console.log('Failed to initialise EEPROM.', ex); console.log('Failed to initialise EEPROM.', ex);
ctx.eeprom = undefined;
}) })
.then(() => { .then(() => {
ctx.eeprom = new EEPROM('1', futami.get('eeprom2'), MamiMisuzuAuth.getLine);
Umi.UI.Menus.Add('uploads', 'Upload History', !FUTAMI_DEBUG); Umi.UI.Menus.Add('uploads', 'Upload History', !FUTAMI_DEBUG);
doUpload = async file => { doUpload = async file => {

View file

@ -43,11 +43,12 @@ Umi.UI.Menus = (function() {
return { return {
Add: function(baseId, title, initiallyHidden) { Add: function(baseId, title, initiallyHidden) {
if(ids.indexOf(baseId) < 0) { if(ids.includes(baseId))
return;
ids.push(baseId); ids.push(baseId);
const menuClass = [sidebarMenu, sidebarMenu + '--' + baseId]; const menuClass = [sidebarMenu, `${sidebarMenu}--${baseId}`];
const iconClass = [sidebarSelectorMode, sidebarSelectorMode + '--' + baseId]; const iconClass = [sidebarSelectorMode, `${sidebarSelectorMode}--${baseId}`];
const menus = $i('umi-menus'); const menus = $i('umi-menus');
const icons = $i('umi-menu-icons'); const icons = $i('umi-menu-icons');
@ -64,7 +65,7 @@ Umi.UI.Menus = (function() {
icons.appendChild($e({ icons.appendChild($e({
attrs: { attrs: {
id: 'umi-menu-icons-' + baseId, id: `umi-menu-icons-${baseId}`,
classList: iconClass, classList: iconClass,
title: title, title: title,
onclick: function() { onclick: function() {
@ -73,8 +74,7 @@ Umi.UI.Menus = (function() {
}, },
})); }));
menus.appendChild($e({ attrs: { 'class': menuClass, id: 'umi-menus-' + baseId } })); menus.appendChild($e({ attrs: { 'class': menuClass, id: `umi-menus-${baseId}` } }));
}
}, },
Get: function(baseId, icon) { Get: function(baseId, icon) {
const id = (icon ? 'umi-menu-icons' : 'umi-menus') + '-' + baseId; const id = (icon ? 'umi-menu-icons' : 'umi-menus') + '-' + baseId;