Skip to content
Snippets Groups Projects
Select Git revision
  • 84c7c8a937bdc862a47a8968a102acca4b40e0da
  • 5.4 default protected
  • 5.5
  • dev/5.5
  • dev/5.4
  • dev/5.3_downgrade
  • feature/experimenttime_hack
  • 5.3 protected
  • _IntenSelect5.3
  • IntenSelect5.3
  • 4.27 protected
  • 4.26 protected
  • 5.0 protected
  • 4.22 protected
  • 4.21 protected
  • UE5.4-2024.1
  • UE5.4-2024.1-rc1
  • UE5.3-2023.1-rc3
  • UE5.3-2023.1-rc2
  • UE5.3-2023.1-rc
20 results

IMC_MovementLeftHand.uasset

Blame
  • mainStore.ts 4.00 KiB
    import {defineStore} from 'pinia'
    import {DBMetaInfoResponse, keepAlive, KeepAliveResponse, TableIdentifier, useAPI} from "@/services/api";
    import {computed, Ref, ref, shallowReactive} from "vue";
    
    export type APIStatus = "connecting" | "disconnected" | KeepAliveResponse
    
    export const useMainStore = defineStore('main', () => {
      const sessionId = ref(null as string)
      const dbUrl = ref(null as string)
      const originalDBSchema = ref(null as DBMetaInfoResponse)
      const virtualDBSchema = ref(null as DBMetaInfoResponse)
      const dbSchemas = shallowReactive({"original": originalDBSchema, "virtual": virtualDBSchema} as {
        [source: string]: Ref<DBMetaInfoResponse>
      })
    
      const api = useAPI()
    
      const apiStatus = ref<APIStatus>("connecting")
      testAPI() // ASYNC call!
    
      const sessionCreated = computed(() => sessionId.value != null)
      const sessionReady = computed(() => sessionCreated.value && (dbUrl.value != null))
      const schemaReady = computed(() => sessionReady.value && (originalDBSchema.value != null))
    
      async function testAPI() {
        if (apiStatus.value === "disconnected")
          apiStatus.value = "connecting"
        const r = await keepAlive()
        if (r?.data) {
          if (r.data.session_status !== "session valid") reset()
          apiStatus.value = r.data
        } else {
          reset()
          apiStatus.value = "disconnected"
        }
        return apiStatus.value
      }
    
      function reset() {
        sessionId.value = null
        dbUrl.value = null
        originalDBSchema.value = null
        virtualDBSchema.value = null
      }
    
      async function startSession() {
        const r = await api.startSession()
        if (r) {
          sessionId.value = r.data.session_id
          return true
        } else return false
      }
    
      async function stopSession() {
        await api.stopSession().finally(reset);
      }
    
      async function testDBConn() {
        const r = await api.testDBConn()
        if (r?.data?.db_url)
          dbUrl.value = r.data.db_url
        else
          dbUrl.value = null
      }
    
      async function retrieveAndStoreDBInfo() {
        const [r1, r2] = await Promise.all([api.testDBConn(), api.getDBSchema()]) //.then(res => this.dbUrl = res.data.db_url), api.getDBSchema()
        if (r1?.data)
          dbUrl.value = r1.data.db_url
        if (r2?.data)