28 lines
		
	
	
		
			820 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			28 lines
		
	
	
		
			820 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import { defineStore } from 'pinia'
 | 
						|
import { ref } from 'vue'
 | 
						|
 | 
						|
export const useServicesStore = defineStore('services', () => {
 | 
						|
  const services = ref<Record<string, string>>({})
 | 
						|
 | 
						|
  async function fetchServices() {
 | 
						|
    try {
 | 
						|
      const response = await fetch('/cgi/.well-known/services')
 | 
						|
      if (!response.ok) {
 | 
						|
        throw new Error('Network response was not ok')
 | 
						|
      }
 | 
						|
      const data = await response.json()
 | 
						|
      services.value = data
 | 
						|
    } catch (error) {
 | 
						|
      console.error('Failed to fetch services:', error)
 | 
						|
      services.value = {}
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  function getSerivceUrl(serviceName: string, ...parts: string[]): string | null {
 | 
						|
    const baseUrl = services.value[serviceName] || null
 | 
						|
    return baseUrl ? `${baseUrl}/${parts.join('/')}` : null
 | 
						|
  }
 | 
						|
 | 
						|
  return { services, fetchServices, getSerivceUrl }
 | 
						|
})
 |