diff --git a/packages/client/src/api/rows.js b/packages/client/src/api/rows.js index 29465b9e8f..e3557927aa 100644 --- a/packages/client/src/api/rows.js +++ b/packages/client/src/api/rows.js @@ -112,13 +112,21 @@ export const enrichRows = async (rows, tableId) => { if (!Array.isArray(rows)) { return [] } - if (rows.length && tableId) { - // Fetch table schema so we can check column types - const tableDefinition = await fetchTableDefinition(tableId) - const schema = tableDefinition && tableDefinition.schema - if (schema) { - const keys = Object.keys(schema) - rows.forEach(row => { + if (rows.length) { + // map of tables, incase a row being loaded is not from the same table + const tables = {} + for (let row of rows) { + // fallback to passed in tableId if row doesn't have it specified + let rowTableId = row.tableId || tableId + let table = tables[rowTableId] + if (!table) { + // Fetch table schema so we can check column types + table = await fetchTableDefinition(rowTableId) + tables[rowTableId] = table + } + const schema = table?.schema + if (schema) { + const keys = Object.keys(schema) for (let key of keys) { const type = schema[key].type if (type === "link" && Array.isArray(row[key])) { @@ -137,7 +145,7 @@ export const enrichRows = async (rows, tableId) => { row[`${key}_first`] = url } } - }) + } } } return rows