diff --git a/packages/builder/src/stores/backend/tables.js b/packages/builder/src/stores/backend/tables.js index bf41bc41e6..75679532f3 100644 --- a/packages/builder/src/stores/backend/tables.js +++ b/packages/builder/src/stores/backend/tables.js @@ -140,8 +140,15 @@ export function createTablesStore() { if (index === -1) { return } + + // This function has to merge state as there discrepancies with the table + // API endpoints. The table list endpoint and get table endpoint use the + // "type" property to mean different things. store.update(state => { - state.list[index] = table + state.list[index] = { + ...table, + type: state.list[index].type, + } return state }) } diff --git a/packages/frontend-core/src/components/sheet/cells/HeaderCell.svelte b/packages/frontend-core/src/components/sheet/cells/HeaderCell.svelte index f4e222ff53..e5f674c6ec 100644 --- a/packages/frontend-core/src/components/sheet/cells/HeaderCell.svelte +++ b/packages/frontend-core/src/components/sheet/cells/HeaderCell.svelte @@ -18,9 +18,7 @@ dispatch, config, ui, - table, - rows, - API, + columns, } = getContext("sheet") let anchor @@ -83,15 +81,7 @@ } const makeDisplayColumn = async () => { - const tableDefinition = $table - if (!tableDefinition) { - return - } - await API.saveTable({ - ...tableDefinition, - primaryDisplay: column.name, - }) - await rows.actions.refreshTableDefinition() + await columns.actions.changePrimaryDisplay(column.name) open = false } diff --git a/packages/frontend-core/src/components/sheet/stores/columns.js b/packages/frontend-core/src/components/sheet/stores/columns.js index 45a38ec91b..db912558eb 100644 --- a/packages/frontend-core/src/components/sheet/stores/columns.js +++ b/packages/frontend-core/src/components/sheet/stores/columns.js @@ -126,6 +126,14 @@ export const deriveStores = context => { }) }) + // Updates the tables primary display column + const changePrimaryDisplay = async column => { + return await saveTable({ + ...get(table), + primaryDisplay: column, + }) + } + // Persists column changes by saving metadata against table schema const saveChanges = async () => { const $columns = get(columns) @@ -153,8 +161,11 @@ export const deriveStores = context => { } }) + await saveTable({ ...$table, schema: newSchema }) + } + + const saveTable = async newTable => { // Update local state - const newTable = { ...$table, schema: newSchema } table.set(newTable) // Broadcast event so that we can keep sync with external state @@ -170,6 +181,7 @@ export const deriveStores = context => { ...columns, actions: { saveChanges, + changePrimaryDisplay, }, }, }