mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
975419db54
This rule prevents using an async function as a Promise executor (e.g. as the argument to a `Promise` constructor). This pattern is usually a mistake because it implies that the Promise constructor was not necessary in the first place. It also makes error handling difficult, as any errors thrown would be uncaught unless you wrap the body in a try/catch block.
66 lines
1.5 KiB
JavaScript
66 lines
1.5 KiB
JavaScript
function delay (time) {
|
|
return new Promise(resolve => setTimeout(resolve, time))
|
|
}
|
|
|
|
async function loadFromMock3Box (key) {
|
|
const res = await 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 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: () => {},
|
|
})
|
|
}
|
|
|
|
static async getConfig (address) {
|
|
const backup = await loadFromMock3Box(`${address}-metamask-metamaskBackup`)
|
|
return backup
|
|
? { spaces: { metamask: {} } }
|
|
: {}
|
|
}
|
|
}
|
|
|
|
module.exports = Mock3Box
|