Auto-reload transactions after AI makes changes
When the AI updates a category (or any tool result), the transactions page now automatically reloads. ChatPanel triggers a refresh counter in the usePageContext composable when the response includes a tool result, and TransactionsView watches that counter to reload data. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -145,7 +145,7 @@ import ChatToolResult from '@/views/chat/ChatToolResult.vue'
|
|||||||
import type { ChatConversation, ChatMessage } from '@/types'
|
import type { ChatConversation, ChatMessage } from '@/types'
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const { pageContext } = usePageContext()
|
const { pageContext, triggerRefresh } = usePageContext()
|
||||||
|
|
||||||
const panelOpen = ref(false)
|
const panelOpen = ref(false)
|
||||||
const conversations = ref<ChatConversation[]>([])
|
const conversations = ref<ChatConversation[]>([])
|
||||||
@@ -280,6 +280,11 @@ async function sendMessage() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
messages.value.push(data.assistantMessage)
|
messages.value.push(data.assistantMessage)
|
||||||
|
|
||||||
|
// If the AI used a tool that modified data, tell the page to reload
|
||||||
|
if (data.assistantMessage.toolResultType) {
|
||||||
|
triggerRefresh()
|
||||||
|
}
|
||||||
} catch (err: any) {
|
} catch (err: any) {
|
||||||
messages.value.push({
|
messages.value.push({
|
||||||
id: tempId(),
|
id: tempId(),
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import { ref } from 'vue'
|
import { ref } from 'vue'
|
||||||
|
|
||||||
const pageContext = ref('')
|
const pageContext = ref('')
|
||||||
|
const refreshTrigger = ref(0)
|
||||||
|
|
||||||
export function usePageContext() {
|
export function usePageContext() {
|
||||||
function setPageContext(context: string) {
|
function setPageContext(context: string) {
|
||||||
@@ -11,5 +12,9 @@ export function usePageContext() {
|
|||||||
pageContext.value = ''
|
pageContext.value = ''
|
||||||
}
|
}
|
||||||
|
|
||||||
return { pageContext, setPageContext, clearPageContext }
|
function triggerRefresh() {
|
||||||
|
refreshTrigger.value++
|
||||||
|
}
|
||||||
|
|
||||||
|
return { pageContext, setPageContext, clearPageContext, refreshTrigger, triggerRefresh }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -232,7 +232,11 @@ const startDate = ref('')
|
|||||||
const endDate = ref('')
|
const endDate = ref('')
|
||||||
const statusFilter = ref('All')
|
const statusFilter = ref('All')
|
||||||
|
|
||||||
const { setPageContext, clearPageContext } = usePageContext()
|
const { setPageContext, clearPageContext, refreshTrigger } = usePageContext()
|
||||||
|
|
||||||
|
watch(refreshTrigger, () => {
|
||||||
|
loadTransactions()
|
||||||
|
})
|
||||||
|
|
||||||
watchEffect(() => {
|
watchEffect(() => {
|
||||||
const filters: string[] = []
|
const filters: string[] = []
|
||||||
|
|||||||
Reference in New Issue
Block a user