49 lines
1.4 KiB
JavaScript
49 lines
1.4 KiB
JavaScript
|
export function instanceComputations(store) {
|
||
|
store.compute(
|
||
|
'isUserLoggedIn',
|
||
|
['currentInstance', 'loggedInInstances'],
|
||
|
(currentInstance, loggedInInstances) => !!(currentInstance && Object.keys(loggedInInstances).includes(currentInstance))
|
||
|
)
|
||
|
|
||
|
store.compute(
|
||
|
'loggedInInstancesAsList',
|
||
|
['currentInstance', 'loggedInInstances', 'loggedInInstancesInOrder'],
|
||
|
(currentInstance, loggedInInstances, loggedInInstancesInOrder) => {
|
||
|
return loggedInInstancesInOrder.map(instanceName => {
|
||
|
return Object.assign({
|
||
|
current: currentInstance === instanceName,
|
||
|
name: instanceName
|
||
|
}, loggedInInstances[instanceName])
|
||
|
})
|
||
|
}
|
||
|
)
|
||
|
|
||
|
store.compute(
|
||
|
'currentInstanceData',
|
||
|
['currentInstance', 'loggedInInstances'],
|
||
|
(currentInstance, loggedInInstances) => {
|
||
|
return Object.assign({
|
||
|
name: currentInstance
|
||
|
}, loggedInInstances[currentInstance])
|
||
|
})
|
||
|
|
||
|
store.compute(
|
||
|
'accessToken',
|
||
|
['currentInstanceData'],
|
||
|
(currentInstanceData) => currentInstanceData.access_token
|
||
|
)
|
||
|
|
||
|
store.compute(
|
||
|
'currentTheme',
|
||
|
['currentInstance', 'instanceThemes'],
|
||
|
(currentInstance, instanceThemes) => {
|
||
|
return instanceThemes[currentInstance] || 'default'
|
||
|
}
|
||
|
)
|
||
|
|
||
|
store.compute(
|
||
|
'currentVerifyCredentials',
|
||
|
['currentInstance', 'verifyCredentials'],
|
||
|
(currentInstance, verifyCredentials) => verifyCredentials && verifyCredentials[currentInstance]
|
||
|
)
|
||
|
}
|