feat(server): SmartTextEditorValue.attachments multiregion support (#3513)
This commit is contained in:
committed by
GitHub
parent
42db2f6b82
commit
9b5873e4f5
@@ -65,7 +65,7 @@ generates:
|
||||
PendingWorkspaceCollaborator: '@/modules/workspacesCore/helpers/graphTypes#PendingWorkspaceCollaboratorGraphQLReturn'
|
||||
WorkspaceCollaborator: '@/modules/workspacesCore/helpers/graphTypes#WorkspaceCollaboratorGraphQLReturn'
|
||||
Webhook: '@/modules/webhooks/helpers/graphTypes#WebhookGraphQLReturn'
|
||||
SmartTextEditorValue: '@/modules/core/services/richTextEditorService#SmartTextEditorValueSchema'
|
||||
SmartTextEditorValue: '@/modules/core/services/richTextEditorService#SmartTextEditorValueGraphQLReturn'
|
||||
BlobMetadata: '@/modules/blobstorage/domain/types#BlobStorageItem'
|
||||
ServerWorkspacesInfo: '@/modules/core/helpers/graphTypes#GraphQLEmptyReturn'
|
||||
ActivityCollection: '@/modules/activitystream/helpers/graphTypes#ActivityCollectionGraphQLReturn'
|
||||
|
||||
@@ -223,13 +223,14 @@ export = {
|
||||
*/
|
||||
text(parent) {
|
||||
const commentText = parent?.text || ''
|
||||
return ensureCommentSchema(commentText as SmartTextEditorValueSchema)
|
||||
return {
|
||||
...ensureCommentSchema(commentText),
|
||||
projectId: parent.streamId
|
||||
}
|
||||
},
|
||||
|
||||
rawText(parent) {
|
||||
const { doc } = ensureCommentSchema(
|
||||
(parent.text as SmartTextEditorValueSchema) || ''
|
||||
)
|
||||
const { doc } = ensureCommentSchema(parent.text || '')
|
||||
return documentToBasicString(doc)
|
||||
},
|
||||
async hasParent(parent) {
|
||||
|
||||
@@ -8,7 +8,7 @@ import { AutomateFunctionGraphQLReturn, AutomateFunctionReleaseGraphQLReturn, Au
|
||||
import { WorkspaceGraphQLReturn, WorkspaceBillingGraphQLReturn, WorkspaceSsoGraphQLReturn, WorkspaceMutationsGraphQLReturn, WorkspaceInviteMutationsGraphQLReturn, WorkspaceProjectMutationsGraphQLReturn, PendingWorkspaceCollaboratorGraphQLReturn, WorkspaceCollaboratorGraphQLReturn, ProjectRoleGraphQLReturn } from '@/modules/workspacesCore/helpers/graphTypes';
|
||||
import { WorkspaceBillingMutationsGraphQLReturn } from '@/modules/gatekeeper/helpers/graphTypes';
|
||||
import { WebhookGraphQLReturn } from '@/modules/webhooks/helpers/graphTypes';
|
||||
import { SmartTextEditorValueSchema } from '@/modules/core/services/richTextEditorService';
|
||||
import { SmartTextEditorValueGraphQLReturn } from '@/modules/core/services/richTextEditorService';
|
||||
import { BlobStorageItem } from '@/modules/blobstorage/domain/types';
|
||||
import { ActivityCollectionGraphQLReturn } from '@/modules/activitystream/helpers/graphTypes';
|
||||
import { ServerAppGraphQLReturn, ServerAppListItemGraphQLReturn } from '@/modules/auth/helpers/graphTypes';
|
||||
@@ -4723,7 +4723,7 @@ export type ResolversTypes = {
|
||||
ServerWorkspacesInfo: ResolverTypeWrapper<GraphQLEmptyReturn>;
|
||||
SessionPaymentStatus: SessionPaymentStatus;
|
||||
SetPrimaryUserEmailInput: SetPrimaryUserEmailInput;
|
||||
SmartTextEditorValue: ResolverTypeWrapper<SmartTextEditorValueSchema>;
|
||||
SmartTextEditorValue: ResolverTypeWrapper<SmartTextEditorValueGraphQLReturn>;
|
||||
SortDirection: SortDirection;
|
||||
Stream: ResolverTypeWrapper<StreamGraphQLReturn>;
|
||||
StreamAccessRequest: ResolverTypeWrapper<StreamAccessRequestGraphQLReturn>;
|
||||
@@ -4988,7 +4988,7 @@ export type ResolversParentTypes = {
|
||||
ServerStats: GraphQLEmptyReturn;
|
||||
ServerWorkspacesInfo: GraphQLEmptyReturn;
|
||||
SetPrimaryUserEmailInput: SetPrimaryUserEmailInput;
|
||||
SmartTextEditorValue: SmartTextEditorValueSchema;
|
||||
SmartTextEditorValue: SmartTextEditorValueGraphQLReturn;
|
||||
Stream: StreamGraphQLReturn;
|
||||
StreamAccessRequest: StreamAccessRequestGraphQLReturn;
|
||||
StreamCollaborator: StreamCollaboratorGraphQLReturn;
|
||||
|
||||
@@ -1,16 +1,19 @@
|
||||
import { db } from '@/db/knex'
|
||||
import { mainDb } from '@/db/knex'
|
||||
import { getBlobsFactory } from '@/modules/blobstorage/repositories'
|
||||
import { Resolvers } from '@/modules/core/graph/generated/graphql'
|
||||
import { getProjectDbClient } from '@/modules/multiregion/dbSelector'
|
||||
import { isNonNullable } from '@speckle/shared'
|
||||
import { keyBy } from 'lodash'
|
||||
|
||||
export = {
|
||||
SmartTextEditorValue: {
|
||||
async attachments(parent) {
|
||||
const { blobIds } = parent
|
||||
const { blobIds, projectId } = parent
|
||||
if (!blobIds) return null
|
||||
|
||||
const db = projectId ? await getProjectDbClient({ projectId }) : mainDb
|
||||
const blobs = await getBlobsFactory({ db })({ blobIds })
|
||||
|
||||
const blobsById = keyBy(blobs, (b) => b.id)
|
||||
return blobIds.map((blobId) => blobsById[blobId] || null).filter(isNonNullable)
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { JSONContent } from '@tiptap/core'
|
||||
import { isString, isObjectLike, get, has } from 'lodash'
|
||||
import { RichTextEditor } from '@speckle/shared'
|
||||
import { MaybeNullOrUndefined, RichTextEditor } from '@speckle/shared'
|
||||
|
||||
const { isDocEmpty, documentToBasicString, convertBasicStringToDocument } =
|
||||
RichTextEditor
|
||||
@@ -13,6 +13,13 @@ export type SmartTextEditorValueSchema = {
|
||||
blobIds?: string[]
|
||||
}
|
||||
|
||||
export type SmartTextEditorValueGraphQLReturn = SmartTextEditorValueSchema & {
|
||||
/**
|
||||
* We need to know the project ID to be able to fetch the blobs
|
||||
*/
|
||||
projectId: MaybeNullOrUndefined<string>
|
||||
}
|
||||
|
||||
export function isTextEditorDoc(value: unknown): value is JSONContent {
|
||||
return !isString(value) && isObjectLike(value) && get(value, 'type') === 'doc'
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user