Skip to content

Commit e4b0823

Browse files
authored
Ensure correct database, view, table, fields state on route (baserow#4766)
1 parent 5692cc0 commit e4b0823

File tree

2 files changed

+15
-11
lines changed

2 files changed

+15
-11
lines changed

web-frontend/modules/database/pages/table.vue

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<template>
2-
<div v-if="database && table">
2+
<div>
33
<DefaultErrorPage v-if="dataError && !view?.id" :error="dataError" />
44

55
<Table
@@ -78,25 +78,24 @@ function parseIntOrNull(x) {
7878
return x != null ? parseInt(x) : null
7979
}
8080
81-
// Database and table is selected by the middleware
82-
83-
const database = computed(() => $store.getters['application/getSelected'])
84-
const table = computed(() => $store.getters['table/getSelected'])
85-
8681
const { data, error, pending, status, refresh } = await useAsyncData(
8782
`database-table-page-${route.params.databaseId}-${route.params.tableId}-${route.params.viewId ?? 'null'}`,
8883
async () => {
8984
// Use current route params (not captured params) so refresh works correctly
9085
const currentParams = { ...route.params }
9186
const viewId = currentParams.viewId ? parseInt(currentParams.viewId) : null
87+
// It's okay to use the `table/getSelected` because the correct ones are selected
88+
// using the `modules/database/middleware/selectWorkspaceDatabaseTable.js`
89+
// middleware.
90+
const currentTable = $store.getters['table/getSelected']
91+
const currentDatabase = $store.getters['application/getSelected']
9292
9393
const result = {
9494
view: undefined,
95+
database: currentDatabase,
96+
table: currentTable,
9597
}
9698
97-
const currentTable = $store.getters['table/getSelected']
98-
const currentDatabase = $store.getters['application/getSelected']
99-
10099
if ($store.state.view.tableId !== currentTable.id) {
101100
await $store.dispatch('view/fetchAll', currentTable)
102101
}
@@ -128,6 +127,7 @@ const { data, error, pending, status, refresh } = await useAsyncData(
128127
// Fetch the Fields
129128
await $store.dispatch('field/fetchAll', currentTable)
130129
const fetchedFields = $store.getters['field/getAll']
130+
result.fields = fetchedFields
131131
132132
// Select view
133133
if (viewId !== null && viewId !== 0) {
@@ -184,9 +184,10 @@ if (data.value?.redirect) {
184184
/**
185185
* Expose the actual values via computed shortcuts
186186
*/
187-
187+
const database = computed(() => data.value?.database)
188+
const table = computed(() => data.value?.table)
188189
const view = computed(() => data.value?.view || {})
189-
const fields = computed(() => $store.getters['field/getAll'])
190+
const fields = computed(() => data.value?.fields)
190191
const dataError = computed(() => data.value?.error)
191192
192193
/**

web-frontend/modules/database/searchTypes.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ export class DatabaseTableSearchType extends BaseSearchType {
5656
params: {
5757
databaseId: result.metadata.database_id,
5858
tableId: result.metadata.table_id,
59+
rowId: null,
5960
},
6061
}
6162
}
@@ -92,6 +93,7 @@ export class DatabaseFieldSearchType extends BaseSearchType {
9293
params: {
9394
databaseId: result.metadata.database_id,
9495
tableId: result.metadata.table_id,
96+
rowId: null,
9597
},
9698
}
9799
}
@@ -131,6 +133,7 @@ export class DatabaseRowSearchType extends BaseSearchType {
131133
tableId: result.metadata.table_id,
132134
viewId: '',
133135
rowId: result.metadata.row_id,
136+
viewId: '',
134137
},
135138
}
136139
}

0 commit comments

Comments
 (0)