Merge pull request #12031 from Budibase/backmerge-20231011
Backmerge master 20231011
This commit is contained in:
commit
a609b2b747
|
@ -26,13 +26,6 @@ jobs:
|
|||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Maximize build space
|
||||
uses: easimon/maximize-build-space@master
|
||||
with:
|
||||
root-reserve-mb: 35000
|
||||
swap-size-mb: 1024
|
||||
remove-android: "true"
|
||||
remove-dotnet: "true"
|
||||
- name: Checkout repo and submodules
|
||||
uses: actions/checkout@v3
|
||||
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'Budibase/budibase'
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"version": "2.11.15-alpha.3",
|
||||
"version": "2.11.19",
|
||||
"npmClient": "yarn",
|
||||
"packages": [
|
||||
"packages/*"
|
||||
|
|
|
@ -948,12 +948,15 @@ export const buildFormSchema = (component, asset) => {
|
|||
|
||||
if (component._component.endsWith("formblock")) {
|
||||
let schema = {}
|
||||
|
||||
const datasource = getDatasourceForProvider(asset, component)
|
||||
const info = getSchemaForDatasource(component, datasource)
|
||||
|
||||
if (!info?.schema) {
|
||||
return schema
|
||||
}
|
||||
|
||||
if (!component.fields) {
|
||||
Object.values(info?.schema)
|
||||
Object.values(info.schema)
|
||||
.filter(
|
||||
({ autocolumn, name }) =>
|
||||
!autocolumn && !["_rev", "_id"].includes(name)
|
||||
|
|
|
@ -64,6 +64,7 @@ const INITIAL_FRONTEND_STATE = {
|
|||
},
|
||||
features: {
|
||||
componentValidation: false,
|
||||
disableUserMetadata: false,
|
||||
},
|
||||
errors: [],
|
||||
hasAppPackage: false,
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
import { TableNames } from "constants"
|
||||
import { Grid } from "@budibase/frontend-core"
|
||||
import { API } from "api"
|
||||
import { store } from "builderStore"
|
||||
import GridAddColumnModal from "components/backend/DataTable/modals/grid/GridCreateColumnModal.svelte"
|
||||
import GridCreateEditRowModal from "components/backend/DataTable/modals/grid/GridCreateEditRowModal.svelte"
|
||||
import GridEditUserModal from "components/backend/DataTable/modals/grid/GridEditUserModal.svelte"
|
||||
|
@ -17,11 +18,11 @@
|
|||
import GridUsersTableButton from "components/backend/DataTable/modals/grid/GridUsersTableButton.svelte"
|
||||
|
||||
const userSchemaOverrides = {
|
||||
firstName: { displayName: "First name" },
|
||||
lastName: { displayName: "Last name" },
|
||||
email: { displayName: "Email" },
|
||||
roleId: { displayName: "Role" },
|
||||
status: { displayName: "Status" },
|
||||
firstName: { displayName: "First name", disabled: true },
|
||||
lastName: { displayName: "Last name", disabled: true },
|
||||
email: { displayName: "Email", disabled: true },
|
||||
roleId: { displayName: "Role", disabled: true },
|
||||
status: { displayName: "Status", disabled: true },
|
||||
}
|
||||
|
||||
$: id = $tables.selected?._id
|
||||
|
@ -60,14 +61,14 @@
|
|||
datasource={gridDatasource}
|
||||
canAddRows={!isUsersTable}
|
||||
canDeleteRows={!isUsersTable}
|
||||
canEditRows={!isUsersTable}
|
||||
canEditColumns={!isUsersTable}
|
||||
canEditRows={!isUsersTable || !$store.features.disableUserMetadata}
|
||||
canEditColumns={!isUsersTable || !$store.features.disableUserMetadata}
|
||||
schemaOverrides={isUsersTable ? userSchemaOverrides : null}
|
||||
showAvatars={false}
|
||||
on:updatedatasource={handleGridTableUpdate}
|
||||
>
|
||||
<svelte:fragment slot="filter">
|
||||
{#if isUsersTable}
|
||||
{#if isUsersTable && $store.features.disableUserMetadata}
|
||||
<GridUsersTableButton />
|
||||
{/if}
|
||||
<GridFilterButton />
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
}
|
||||
|
||||
$: datasource = getDatasourceForProvider($currentAsset, componentInstance)
|
||||
$: resourceId = datasource.resourceId || datasource.tableId
|
||||
$: resourceId = datasource?.resourceId || datasource?.tableId
|
||||
|
||||
$: if (!isEqual(value, cachedValue)) {
|
||||
cachedValue = cloneDeep(value)
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit 30385682141e5ba9d98de7d71d5be1672109cd15
|
||||
Subproject commit 044bec6447066b215932d6726c437e7ec5a9e42e
|
|
@ -289,6 +289,7 @@ async function performAppCreate(ctx: UserCtx) {
|
|||
},
|
||||
features: {
|
||||
componentValidation: true,
|
||||
disableUserMetadata: true,
|
||||
},
|
||||
}
|
||||
|
||||
|
@ -310,10 +311,13 @@ async function performAppCreate(ctx: UserCtx) {
|
|||
}
|
||||
})
|
||||
|
||||
// Keep existing validation setting
|
||||
// Keep existing feature flags
|
||||
if (!existing.features?.componentValidation) {
|
||||
newApplication.features!.componentValidation = false
|
||||
}
|
||||
if (!existing.features?.disableUserMetadata) {
|
||||
newApplication.features!.disableUserMetadata = false
|
||||
}
|
||||
|
||||
// Migrate navigation settings and screens if required
|
||||
if (existing) {
|
||||
|
|
|
@ -1,13 +1,15 @@
|
|||
import { cache } from "@budibase/backend-core"
|
||||
import { cache, db as dbCore } from "@budibase/backend-core"
|
||||
import { utils } from "@budibase/shared-core"
|
||||
import { FieldSubtype } from "@budibase/types"
|
||||
import { FieldSubtype, DocumentType, SEPARATOR } from "@budibase/types"
|
||||
import { InvalidBBRefError } from "./errors"
|
||||
|
||||
const ROW_PREFIX = DocumentType.ROW + SEPARATOR
|
||||
|
||||
export async function processInputBBReferences(
|
||||
value: string | string[] | { _id: string } | { _id: string }[],
|
||||
subtype: FieldSubtype
|
||||
): Promise<string | null> {
|
||||
const referenceIds: string[] = []
|
||||
let referenceIds: string[] = []
|
||||
|
||||
if (Array.isArray(value)) {
|
||||
referenceIds.push(
|
||||
|
@ -26,6 +28,17 @@ export async function processInputBBReferences(
|
|||
)
|
||||
}
|
||||
|
||||
// make sure all reference IDs are correct global user IDs
|
||||
// they may be user metadata references (start with row prefix)
|
||||
// and these need to be converted to global IDs
|
||||
referenceIds = referenceIds.map(id => {
|
||||
if (id?.startsWith(ROW_PREFIX)) {
|
||||
return dbCore.getGlobalIDFromUserMetadataID(id)
|
||||
} else {
|
||||
return id
|
||||
}
|
||||
})
|
||||
|
||||
switch (subtype) {
|
||||
case FieldSubtype.USER:
|
||||
const { notFoundIds } = await cache.user.getUsers(referenceIds)
|
||||
|
|
|
@ -154,6 +154,15 @@ describe("bbReferenceProcessor", () => {
|
|||
|
||||
expect(result).toEqual(null)
|
||||
})
|
||||
|
||||
it("should convert user medata IDs to global IDs", async () => {
|
||||
const userId = _.sample(users)!._id!
|
||||
const userMetadataId = backendCore.db.generateUserMetadataID(userId)
|
||||
const result = await config.doInTenant(() =>
|
||||
processInputBBReferences(userMetadataId, FieldSubtype.USER)
|
||||
)
|
||||
expect(result).toBe(userId)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
|
|
|
@ -66,4 +66,5 @@ export interface AppIcon {
|
|||
|
||||
export interface AppFeatures {
|
||||
componentValidation?: boolean
|
||||
disableUserMetadata?: boolean
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue