Merge branch 'master' into fix/automation-query-rows-table-with-spaces
This commit is contained in:
commit
757d99a411
|
@ -1,19 +1,20 @@
|
||||||
import { Constants } from "@budibase/frontend-core"
|
import { Constants, APIClient } from "@budibase/frontend-core"
|
||||||
import { FieldTypes } from "../constants"
|
import { FieldTypes } from "../constants"
|
||||||
|
import { Row, Table } from "@budibase/types"
|
||||||
|
|
||||||
export const patchAPI = API => {
|
export const patchAPI = (API: APIClient) => {
|
||||||
/**
|
/**
|
||||||
* Enriches rows which contain certain field types so that they can
|
* Enriches rows which contain certain field types so that they can
|
||||||
* be properly displayed.
|
* be properly displayed.
|
||||||
* The ability to create these bindings has been removed, but they will still
|
* The ability to create these bindings has been removed, but they will still
|
||||||
* exist in client apps to support backwards compatibility.
|
* exist in client apps to support backwards compatibility.
|
||||||
*/
|
*/
|
||||||
const enrichRows = async (rows, tableId) => {
|
const enrichRows = async (rows: Row[], tableId: string) => {
|
||||||
if (!Array.isArray(rows)) {
|
if (!Array.isArray(rows)) {
|
||||||
return []
|
return []
|
||||||
}
|
}
|
||||||
if (rows.length) {
|
if (rows.length) {
|
||||||
const tables = {}
|
const tables: Record<string, Table> = {}
|
||||||
for (let row of rows) {
|
for (let row of rows) {
|
||||||
// Fall back to passed in tableId if row doesn't have it specified
|
// Fall back to passed in tableId if row doesn't have it specified
|
||||||
let rowTableId = row.tableId || tableId
|
let rowTableId = row.tableId || tableId
|
||||||
|
@ -54,7 +55,7 @@ export const patchAPI = API => {
|
||||||
const fetchSelf = API.fetchSelf
|
const fetchSelf = API.fetchSelf
|
||||||
API.fetchSelf = async () => {
|
API.fetchSelf = async () => {
|
||||||
const user = await fetchSelf()
|
const user = await fetchSelf()
|
||||||
if (user && user._id) {
|
if (user && "_id" in user && user._id) {
|
||||||
if (user.roleId === "PUBLIC") {
|
if (user.roleId === "PUBLIC") {
|
||||||
// Don't try to enrich a public user as it will 403
|
// Don't try to enrich a public user as it will 403
|
||||||
return user
|
return user
|
||||||
|
@ -90,13 +91,14 @@ export const patchAPI = API => {
|
||||||
return await enrichRows(rows, tableId)
|
return await enrichRows(rows, tableId)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Wipe any HBS formulae from table definitions, as these interfere with
|
// Wipe any HBS formulas from table definitions, as these interfere with
|
||||||
// handlebars enrichment
|
// handlebars enrichment
|
||||||
const fetchTableDefinition = API.fetchTableDefinition
|
const fetchTableDefinition = API.fetchTableDefinition
|
||||||
API.fetchTableDefinition = async tableId => {
|
API.fetchTableDefinition = async tableId => {
|
||||||
const definition = await fetchTableDefinition(tableId)
|
const definition = await fetchTableDefinition(tableId)
|
||||||
Object.keys(definition?.schema || {}).forEach(field => {
|
Object.keys(definition?.schema || {}).forEach(field => {
|
||||||
if (definition.schema[field]?.type === "formula") {
|
if (definition.schema[field]?.type === "formula") {
|
||||||
|
// @ts-expect-error TODO check what use case removing that would break
|
||||||
delete definition.schema[field].formula
|
delete definition.schema[field].formula
|
||||||
}
|
}
|
||||||
})
|
})
|
|
@ -1,7 +1,7 @@
|
||||||
<script>
|
<script>
|
||||||
import { getContext, onDestroy, onMount, setContext } from "svelte"
|
import { getContext, onDestroy, onMount, setContext } from "svelte"
|
||||||
import { builderStore } from "stores/builder.js"
|
import { builderStore } from "stores/builder.js"
|
||||||
import { blockStore } from "stores/blocks.js"
|
import { blockStore } from "stores/blocks"
|
||||||
|
|
||||||
const component = getContext("component")
|
const component = getContext("component")
|
||||||
const { styleable } = getContext("sdk")
|
const { styleable } = getContext("sdk")
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
import Block from "components/Block.svelte"
|
import Block from "components/Block.svelte"
|
||||||
import BlockComponent from "components/BlockComponent.svelte"
|
import BlockComponent from "components/BlockComponent.svelte"
|
||||||
import { makePropSafe as safe } from "@budibase/string-templates"
|
import { makePropSafe as safe } from "@budibase/string-templates"
|
||||||
import { enrichSearchColumns, enrichFilter } from "utils/blocks.js"
|
import { enrichSearchColumns, enrichFilter } from "utils/blocks"
|
||||||
import { get } from "svelte/store"
|
import { get } from "svelte/store"
|
||||||
|
|
||||||
export let title
|
export let title
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
import Block from "components/Block.svelte"
|
import Block from "components/Block.svelte"
|
||||||
import BlockComponent from "components/BlockComponent.svelte"
|
import BlockComponent from "components/BlockComponent.svelte"
|
||||||
import { makePropSafe as safe } from "@budibase/string-templates"
|
import { makePropSafe as safe } from "@budibase/string-templates"
|
||||||
import { enrichSearchColumns, enrichFilter } from "utils/blocks.js"
|
import { enrichSearchColumns, enrichFilter } from "utils/blocks"
|
||||||
import { Utils } from "@budibase/frontend-core"
|
import { Utils } from "@budibase/frontend-core"
|
||||||
|
|
||||||
export let title
|
export let title
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { makePropSafe as safe } from "@budibase/string-templates"
|
import { makePropSafe as safe } from "@budibase/string-templates"
|
||||||
import { API } from "../api/index.js"
|
import { API } from "../api"
|
||||||
import { UILogicalOperator } from "@budibase/types"
|
import { UILogicalOperator } from "@budibase/types"
|
||||||
import { Constants } from "@budibase/frontend-core"
|
import { Constants } from "@budibase/frontend-core"
|
||||||
|
|
||||||
|
|
|
@ -46,6 +46,8 @@ import { buildLogsEndpoints } from "./logs"
|
||||||
import { buildMigrationEndpoints } from "./migrations"
|
import { buildMigrationEndpoints } from "./migrations"
|
||||||
import { buildRowActionEndpoints } from "./rowActions"
|
import { buildRowActionEndpoints } from "./rowActions"
|
||||||
|
|
||||||
|
export type { APIClient } from "./types"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Random identifier to uniquely identify a session in a tab. This is
|
* Random identifier to uniquely identify a session in a tab. This is
|
||||||
* used to determine the originator of calls to the API, which is in
|
* used to determine the originator of calls to the API, which is in
|
||||||
|
|
|
@ -13,7 +13,7 @@ export interface SelfEndpoints {
|
||||||
generateAPIKey: () => Promise<string | undefined>
|
generateAPIKey: () => Promise<string | undefined>
|
||||||
fetchDeveloperInfo: () => Promise<FetchAPIKeyResponse>
|
fetchDeveloperInfo: () => Promise<FetchAPIKeyResponse>
|
||||||
fetchBuilderSelf: () => Promise<GetGlobalSelfResponse>
|
fetchBuilderSelf: () => Promise<GetGlobalSelfResponse>
|
||||||
fetchSelf: () => Promise<AppSelfResponse>
|
fetchSelf: () => Promise<AppSelfResponse | null>
|
||||||
}
|
}
|
||||||
|
|
||||||
export const buildSelfEndpoints = (API: BaseAPIClient): SelfEndpoints => ({
|
export const buildSelfEndpoints = (API: BaseAPIClient): SelfEndpoints => ({
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
export { createAPIClient } from "./api"
|
export { createAPIClient } from "./api"
|
||||||
|
export type { APIClient } from "./api"
|
||||||
export { fetchData, DataFetchMap } from "./fetch"
|
export { fetchData, DataFetchMap } from "./fetch"
|
||||||
export type { DataFetchType } from "./fetch"
|
export type { DataFetchType } from "./fetch"
|
||||||
export * as Constants from "./constants"
|
export * as Constants from "./constants"
|
||||||
|
|
Loading…
Reference in New Issue