WIP - refresh list after AI record creation
This commit is contained in:
@@ -53,6 +53,17 @@ const handleSend = async () => {
|
|||||||
role: 'assistant',
|
role: 'assistant',
|
||||||
text: response.reply || 'Let me know what else you need.',
|
text: response.reply || 'Let me know what else you need.',
|
||||||
})
|
})
|
||||||
|
|
||||||
|
if (response.action === 'create_record') {
|
||||||
|
window.dispatchEvent(
|
||||||
|
new CustomEvent('ai-record-created', {
|
||||||
|
detail: {
|
||||||
|
objectApiName: buildContext().objectApiName,
|
||||||
|
record: response.record,
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
}
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
console.error('Failed to send AI chat message:', error)
|
console.error('Failed to send AI chat message:', error)
|
||||||
messages.value.push({
|
messages.value.push({
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, computed, onMounted, watch, nextTick } from 'vue'
|
import { ref, computed, onMounted, onBeforeUnmount, watch, nextTick } from 'vue'
|
||||||
import { useRoute, useRouter } from 'vue-router'
|
import { useRoute, useRouter } from 'vue-router'
|
||||||
import { useApi } from '@/composables/useApi'
|
import { useApi } from '@/composables/useApi'
|
||||||
import { useFields, useViewState } from '@/composables/useFieldViews'
|
import { useFields, useViewState } from '@/composables/useFieldViews'
|
||||||
@@ -48,6 +48,27 @@ const {
|
|||||||
handleSave,
|
handleSave,
|
||||||
} = useViewState(`/runtime/objects/${objectApiName.value}/records`)
|
} = useViewState(`/runtime/objects/${objectApiName.value}/records`)
|
||||||
|
|
||||||
|
const handleAiRecordCreated = (event: Event) => {
|
||||||
|
const detail = (event as CustomEvent).detail || {}
|
||||||
|
if (
|
||||||
|
detail?.objectApiName &&
|
||||||
|
detail.objectApiName.toLowerCase() !== objectApiName.value.toLowerCase()
|
||||||
|
) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (view.value === 'list') {
|
||||||
|
fetchRecords()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
window.addEventListener('ai-record-created', handleAiRecordCreated)
|
||||||
|
})
|
||||||
|
|
||||||
|
onBeforeUnmount(() => {
|
||||||
|
window.removeEventListener('ai-record-created', handleAiRecordCreated)
|
||||||
|
})
|
||||||
|
|
||||||
// Compute breadcrumbs based on the current route and object data
|
// Compute breadcrumbs based on the current route and object data
|
||||||
const updateBreadcrumbs = () => {
|
const updateBreadcrumbs = () => {
|
||||||
if (!objectDefinition.value) {
|
if (!objectDefinition.value) {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, computed, onMounted, watch, nextTick } from 'vue'
|
import { ref, computed, onMounted, onBeforeUnmount, watch, nextTick } from 'vue'
|
||||||
import { useRoute, useRouter } from 'vue-router'
|
import { useRoute, useRouter } from 'vue-router'
|
||||||
import { useApi } from '@/composables/useApi'
|
import { useApi } from '@/composables/useApi'
|
||||||
import { useFields, useViewState } from '@/composables/useFieldViews'
|
import { useFields, useViewState } from '@/composables/useFieldViews'
|
||||||
@@ -41,6 +41,27 @@ const {
|
|||||||
handleSave,
|
handleSave,
|
||||||
} = useViewState(`/runtime/objects/${objectApiName.value}/records`)
|
} = useViewState(`/runtime/objects/${objectApiName.value}/records`)
|
||||||
|
|
||||||
|
const handleAiRecordCreated = (event: Event) => {
|
||||||
|
const detail = (event as CustomEvent).detail || {}
|
||||||
|
if (
|
||||||
|
detail?.objectApiName &&
|
||||||
|
detail.objectApiName.toLowerCase() !== objectApiName.value.toLowerCase()
|
||||||
|
) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (view.value === 'list') {
|
||||||
|
fetchRecords()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
window.addEventListener('ai-record-created', handleAiRecordCreated)
|
||||||
|
})
|
||||||
|
|
||||||
|
onBeforeUnmount(() => {
|
||||||
|
window.removeEventListener('ai-record-created', handleAiRecordCreated)
|
||||||
|
})
|
||||||
|
|
||||||
// View configs
|
// View configs
|
||||||
const listConfig = computed(() => {
|
const listConfig = computed(() => {
|
||||||
if (!objectDefinition.value) return null
|
if (!objectDefinition.value) return null
|
||||||
|
|||||||
Reference in New Issue
Block a user