1<template>
2 <SavedRepliesList v-if="savedRepliesActiveScreen.screen == 'list'" />
3 <SavedReplyView v-else-if="savedRepliesActiveScreen.screen == 'view'" />
4</template>
5
6<script setup lang="ts">
7import { createListResource } from "frappe-ui";
8import SavedRepliesList from "./SavedRepliesList.vue";
9import SavedReplyView from "./SavedReplyView.vue";
10import { onUnmounted, provide, ref } from "vue";
11import { SavedReplyListResourceSymbol } from "../../../types";
12import { activeFilter } from "./savedReplies";
13
14const savedRepliesActiveScreen = ref({
15 screen: "list",
16 data: null,
17});
18const savedRepliesSearchQuery = ref("");
19
20const savedReplyListResource = createListResource({
21 doctype: "OD Saved Reply",
22 fields: ["name", "title", "owner", "scope"],
23 filters: {
24 scope: activeFilter.value == "All" ? undefined : ["=", activeFilter.value],
25 },
26 cache: ["SavedReplyList"],
27 auto: true,
28 orderBy: "modified desc",
29 start: 0,
30 pageLength: 999,
31});
32
33provide(SavedReplyListResourceSymbol, savedReplyListResource);
34provide("savedRepliesActiveScreen", savedRepliesActiveScreen);
35provide("savedRepliesSearchQuery", savedRepliesSearchQuery);
36
37onUnmounted(() => {
38 savedRepliesSearchQuery.value = "";
39 savedReplyListResource.filters = {
40 scope: activeFilter.value == "All" ? undefined : ["=", activeFilter.value],
41 };
42});
43</script>
44