forked from cybrespace/pinafore
		
	
		
			
				
	
	
		
			59 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
function computeForInstance (store, computedKey, key, defaultValue) {
 | 
						|
  store.compute(computedKey,
 | 
						|
    [key, 'currentInstance'],
 | 
						|
    (instanceData, currentInstance) => (currentInstance && instanceData[currentInstance]) || defaultValue)
 | 
						|
}
 | 
						|
 | 
						|
export function instanceComputations (store) {
 | 
						|
  computeForInstance(store, 'currentTheme', 'instanceThemes', 'default')
 | 
						|
  computeForInstance(store, 'currentVerifyCredentials', 'verifyCredentials', null)
 | 
						|
  computeForInstance(store, 'currentInstanceInfo', 'instanceInfos', null)
 | 
						|
  computeForInstance(store, 'pinnedPage', 'pinnedPages', '/local')
 | 
						|
  computeForInstance(store, 'lists', 'instanceLists', [])
 | 
						|
  computeForInstance(store, 'currentStatusModifications', 'statusModifications', null)
 | 
						|
  computeForInstance(store, 'currentCustomEmoji', 'customEmoji', [])
 | 
						|
  computeForInstance(store, 'currentComposeData', 'composeData', {})
 | 
						|
 | 
						|
  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 && currentInstanceData.access_token
 | 
						|
  )
 | 
						|
 | 
						|
  store.compute(
 | 
						|
    'maxStatusChars',
 | 
						|
    ['currentInstanceInfo'],
 | 
						|
    (currentInstanceInfo) => (
 | 
						|
      // unofficial api used in glitch-soc and pleroma
 | 
						|
      (currentInstanceInfo && currentInstanceInfo.max_toot_chars) || 500
 | 
						|
    )
 | 
						|
  )
 | 
						|
}
 |