mirror of https://github.com/qortal/qortal-ui
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.
38 lines
864 B
38 lines
864 B
import { store } from './api.js' |
|
|
|
let config = false |
|
let loaded = false |
|
const configWatchers = [] |
|
const waitingForConfig = [] |
|
|
|
const subscribeToStore = () => { |
|
if (!store) return setTimeout(() => subscribeToStore(), 50) // 0.05s |
|
|
|
store.subscribe(() => { |
|
const cA = store.getState().app |
|
const c = store.getState().config |
|
if (!c.loaded) return |
|
if (!loaded) waitingForConfig.forEach(r => r(cA)) |
|
configWatchers.forEach(fn => fn(cA)) |
|
config = cA |
|
}) |
|
} |
|
|
|
subscribeToStore() |
|
|
|
export function getConfig() { |
|
return config |
|
} |
|
|
|
export function watchConfig(fn) { |
|
// config ? fn(config) : void 0 |
|
fn(config) |
|
configWatchers.push(fn) |
|
} |
|
|
|
export function waitForConfig() { |
|
return new Promise((resolve, reject) => { |
|
if (config) return resolve(config) |
|
waitingForConfig.push(resolve) |
|
}) |
|
} |