-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathException.vue
More file actions
52 lines (40 loc) · 1.13 KB
/
Exception.vue
File metadata and controls
52 lines (40 loc) · 1.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<template>
<VAlert v-model="alert" closable type="error" variant="tonal" class="my-2">
<pre
style="white-space: pre-wrap; overflow-wrap: anywhere"
v-text="exception"
></pre>
</VAlert>
</template>
<script setup lang="ts">
import { computed, watchEffect } from "vue";
import { useVModel } from "@vueuse/core";
import { useSubscribeState } from "@/api";
import { useCtrlExceptionQuery } from "@/graphql/codegen/generated";
interface Props {
modelValue: boolean;
}
type Emits = {
"update:modelValue": [value: boolean];
};
const props = defineProps<Props>();
const emit = defineEmits<Emits>();
const alert = useVModel(props, "modelValue", emit);
const stateSubscription = useSubscribeState();
const { state } = stateSubscription;
const query = useCtrlExceptionQuery({ pause: true, variables: {} });
watchEffect(() => {
if (state.value !== "finished") {
alert.value = false;
return;
}
query.executeQuery();
});
const exception = computed(() =>
state.value !== "finished" ? null : query.data.value?.ctrl.exception
);
watchEffect(() => {
alert.value = !!exception.value;
});
await stateSubscription;
</script>