main
vue 53 lines 1.55 KB
Raw
1 <template>
2 <div class="active-response-details">
3 <n-spin :show="loadingActiveResponse" class="min-h-48">
4 <template v-if="activeResponseDetails?.markdown_content">
5 <Markdown :source="activeResponseDetails.markdown_content" />
6 </template>
7 <template v-else>
8 <n-empty v-if="!loadingActiveResponse" description="No description found" class="h-48 justify-center" />
9 </template>
10 </n-spin>
11 </div>
12 </template>
13
14 <script setup lang="ts">
15 import type { ActiveResponseDetails, SupportedActiveResponse } from "@/types/activeResponse.d"
16 import { NEmpty, NSpin, useMessage } from "naive-ui"
17 import { defineAsyncComponent, onBeforeMount, ref } from "vue"
18 import Api from "@/api"
19
20 const { activeResponse } = defineProps<{
21 activeResponse: SupportedActiveResponse
22 }>()
23
24 const Markdown = defineAsyncComponent(() => import("@/components/common/Markdown.vue"))
25
26 const message = useMessage()
27 const loadingActiveResponse = ref(false)
28 const activeResponseDetails = ref<ActiveResponseDetails>()
29
30 function getAvailableIntegrations() {
31 loadingActiveResponse.value = true
32
33 Api.activeResponse
34 .getDetails(activeResponse.name)
35 .then(res => {
36 if (res.data.success) {
37 activeResponseDetails.value = res.data?.active_response
38 } else {
39 message.warning(res.data?.message || "An error occurred. Please try again later.")
40 }
41 })
42 .catch(err => {
43 message.error(err.response?.data?.message || "An error occurred. Please try again later.")
44 })
45 .finally(() => {
46 loadingActiveResponse.value = false
47 })
48 }
49
50 onBeforeMount(() => {
51 getAvailableIntegrations()
52 })
53 </script>