1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-11-24 19:10:22 +01:00
metamask-extension/development/mock-3box.js
Erik Marks 76a2a9bb8b
@metamask/eslint config@5.0.0 (#10358)
* @metamask/eslint-config@5.0.0
* Update eslintrc and prettierrc
* yarn lint:fix
2021-02-04 10:15:23 -08:00

69 lines
1.6 KiB
JavaScript

function delay(time) {
return new Promise((resolve) => setTimeout(resolve, time));
}
async function loadFromMock3Box(key) {
const res = await window.fetch(`http://localhost:8889?key=${key}`);
const text = await res.text();
return text.length ? JSON.parse(text) : null;
}
async function saveToMock3Box(key, newDataAtKey) {
const res = await window.fetch('http://localhost:8889', {
method: 'POST',
body: JSON.stringify({
key,
data: newDataAtKey,
}),
});
return res.text();
}
class Mock3Box {
static openBox(address) {
this.address = address;
return Promise.resolve({
onSyncDone: (cb) => {
setTimeout(cb, 200);
},
openSpace: async (spaceName, config) => {
const { onSyncDone } = config;
this.spaceName = spaceName;
setTimeout(onSyncDone, 150);
await delay(50);
return {
private: {
get: async (key) => {
await delay(50);
const res = await loadFromMock3Box(
`${this.address}-${this.spaceName}-${key}`,
);
return res;
},
set: async (key, data) => {
await saveToMock3Box(
`${this.address}-${this.spaceName}-${key}`,
data,
);
await delay(50);
return null;
},
},
};
},
logout: () => undefined,
});
}
static async getConfig(address) {
const backup = await loadFromMock3Box(`${address}-metamask-metamaskBackup`);
return backup ? { spaces: { metamask: {} } } : {};
}
}
module.exports = Mock3Box;