diff --git a/packages/bbui/src/Form/DatePicker.svelte b/packages/bbui/src/Form/DatePicker.svelte index cc2ed50ead..9e0c40b11d 100644 --- a/packages/bbui/src/Form/DatePicker.svelte +++ b/packages/bbui/src/Form/DatePicker.svelte @@ -13,8 +13,9 @@ const dispatch = createEventDispatcher() const onChange = e => { - value = e.detail - dispatch("change", e.detail) + const isoString = e.detail.toISOString() + value = isoString + dispatch("change", isoString) } diff --git a/packages/server/src/db/linkedRows/LinkController.js b/packages/server/src/db/linkedRows/LinkController.js index d526bf159b..b66e2debb5 100644 --- a/packages/server/src/db/linkedRows/LinkController.js +++ b/packages/server/src/db/linkedRows/LinkController.js @@ -1,6 +1,10 @@ const CouchDB = require("../index") const { IncludeDocs, getLinkDocuments } = require("./linkUtils") -const { generateLinkID } = require("../utils") +const { + generateLinkID, + InternalTables, + getUserMetadataParams, +} = require("../utils") const Sentry = require("@sentry/node") const { FieldTypes, RelationshipTypes } = require("../../constants") @@ -208,6 +212,19 @@ class LinkController { const linkedTable = await this._db.get(field.tableId) const linkedSchema = linkedTable.schema[field.fieldName] + // We need to map the global users to metadata in each app for relationships + if (field.tableId === InternalTables.USER_METADATA) { + const users = await this._db.allDocs(getUserMetadataParams(null, {})) + const metadataRequired = rowField.filter( + userId => !users.rows.some(user => user.id === userId) + ) + + // ensure non-existing user metadata is created in the app DB + await this._db.bulkDocs( + metadataRequired.map(userId => ({ _id: userId })) + ) + } + // iterate through the link IDs in the row field, see if any don't exist already for (let linkId of rowField) { if (linkedSchema.relationshipType === RelationshipTypes.ONE_TO_MANY) {