Skip to content

Commit 01f1463

Browse files
committed
feat: add options display for selected query and trigger error
1 parent 60611c4 commit 01f1463

File tree

2 files changed

+59
-8
lines changed

2 files changed

+59
-8
lines changed

client/app/pages/vue-query.vue

Lines changed: 58 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ const filteredQueries = computed(() => {
2222
function onQueryNotification(event: QueryCacheNotifyEvent) {
2323
switch (event.type) {
2424
case 'observerResultsUpdated':
25-
// TODO: when data becomes stale/invalidate etc, the query is updated
25+
// When data becomes stale/invalidate etc, the query is updated
2626
// fall through
2727
case 'updated': {
2828
const query = queries.value.find(q => q.queryHash === event.query.queryHash)
@@ -70,6 +70,42 @@ watchEffect(() => {
7070
function selectQuery(query: Query) {
7171
selectedQuery.value = toRaw(query)
7272
}
73+
74+
function getQueryOptions(query: Query) {
75+
// return all query.options except for the functions
76+
77+
return Object.entries(query.options).reduce((acc, [key, value]) => {
78+
if (typeof value === 'function') {
79+
return acc
80+
}
81+
// exclude queryKey and QueryHash
82+
if (key === 'queryKey' || key === 'queryHash') {
83+
return acc
84+
}
85+
acc[key] = value
86+
return acc
87+
}, {} as Record<string, unknown>)
88+
}
89+
90+
function handleRestoreTriggerError(query: Query) {
91+
if (!query.state.error) {
92+
const error = new Error('Unknown error from devtools')
93+
94+
const __previousQueryOptions = query.options
95+
96+
query.setState({
97+
status: 'error',
98+
error,
99+
fetchMeta: {
100+
...query.state.fetchMeta,
101+
...__previousQueryOptions,
102+
},
103+
})
104+
}
105+
else {
106+
query.reset()
107+
}
108+
}
73109
</script>
74110

75111
<template>
@@ -131,6 +167,14 @@ function selectQuery(query: Query) {
131167
:disabled="selectedQuery.state.status === 'pending'"
132168
@click="toRaw(selectedQuery)?.reset()"
133169
/>
170+
<NButton
171+
v-tooltip="selectedQuery.state.status === 'error' ? 'Restore Error' : 'Trigger Error'"
172+
:title="selectedQuery.state.status === 'error' ? 'Restore Error' : 'Trigger Error'"
173+
class="text-primary self-start"
174+
icon="i-carbon-warning"
175+
:disabled="selectedQuery.state.status === 'pending'"
176+
@click="handleRestoreTriggerError(toRaw(selectedQuery) as Query)"
177+
/>
134178
</template>
135179
<div class="grid grid-cols-[auto_1fr] gap-1 px-2 py-2 b-1 b-solid b-gray-200">
136180
<div>
@@ -174,9 +218,9 @@ function selectQuery(query: Query) {
174218
>
175219
<VueJsonPretty
176220
:data="selectedQuery.state.data"
177-
deep="2"
178-
virtual="true"
179-
height="150"
221+
:deep="2"
222+
:virtual="true"
223+
:height="150"
180224
/>
181225
</NSectionBlock>
182226
<NSectionBlock
@@ -217,12 +261,19 @@ function selectQuery(query: Query) {
217261
<div>
218262
{{ selectedQuery.gcTime }}
219263
</div>
264+
<div><strong>Options:</strong></div>
265+
<VueJsonPretty
266+
:data="getQueryOptions(selectedQuery as Query)"
267+
:deep="2"
268+
:virtual="true"
269+
:height="150"
270+
/>
220271
<div><strong>Meta:</strong></div>
221272
<VueJsonPretty
222273
:data="toRaw(selectedQuery)?.meta"
223-
deep="2"
224-
virtual="true"
225-
height="150"
274+
:deep="2"
275+
:virtual="true"
276+
:height="150"
226277
/>
227278
</div>
228279
</NSectionBlock>

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "nuxt-query",
3-
"version": "0.0.1",
3+
"version": "0.0.0",
44
"description": "Nuxt integration for Tanstack Vue Query",
55
"repository": {
66
"type": "git",

0 commit comments

Comments
 (0)