From 169a83cd0865a3a473c81d9e83c139e4ca814dd3 Mon Sep 17 00:00:00 2001 From: Denis Bykhov Date: Wed, 7 Feb 2024 15:22:19 +0600 Subject: [PATCH] UBERF-5337 (#4548) Signed-off-by: Denis Bykhov --- dev/prod/src/platform.ts | 4 +++- plugins/contact/src/index.ts | 5 ++++- plugins/contact/src/utils.ts | 5 ++++- pods/server/src/__start.ts | 3 +++ server/front/src/index.ts | 2 ++ server/front/src/starter.ts | 3 +++ tests/docker-compose.yaml | 2 ++ 7 files changed, 21 insertions(+), 3 deletions(-) diff --git a/dev/prod/src/platform.ts b/dev/prod/src/platform.ts index b784411e2c..1036fb2394 100644 --- a/dev/prod/src/platform.ts +++ b/dev/prod/src/platform.ts @@ -21,7 +21,7 @@ import { boardId } from '@hcengineering/board' import calendar, { calendarId } from '@hcengineering/calendar' import { chunterId } from '@hcengineering/chunter' import client, { clientId } from '@hcengineering/client' -import { contactId } from '@hcengineering/contact' +import contactPlugin, { contactId } from '@hcengineering/contact' import gmail, { gmailId } from '@hcengineering/gmail' import { hrId } from '@hcengineering/hr' import { imageCropperId } from '@hcengineering/image-cropper' @@ -92,6 +92,7 @@ interface Config { TITLE?: string LANGUAGES?: string DEFAULT_LANGUAGE?: string + LAST_NAME_FIRST?: string } const devConfig = process.env.CLIENT_TYPE === 'dev-production' @@ -157,6 +158,7 @@ export async function configurePlatform() { setMetadata(uiPlugin.metadata.SearchPopup, view.component.ActionsPopup) + setMetadata(contactPlugin.metadata.LastNameFirst, config.LAST_NAME_FIRST === 'true' ?? false) const languages = config.LANGUAGES ? (config.LANGUAGES as string).split(',').map((l) => l.trim()) : ['en', 'ru'] setMetadata(uiPlugin.metadata.Languages, languages) diff --git a/plugins/contact/src/index.ts b/plugins/contact/src/index.ts index 66de5f7b4c..d62f794083 100644 --- a/plugins/contact/src/index.ts +++ b/plugins/contact/src/index.ts @@ -15,7 +15,7 @@ // import { Account, AttachedDoc, Class, Doc, Ref, Space, Timestamp, UXObject } from '@hcengineering/core' -import type { Asset, Plugin, Resource } from '@hcengineering/platform' +import type { Asset, Metadata, Plugin, Resource } from '@hcengineering/platform' import { IntlString, plugin } from '@hcengineering/platform' import { TemplateField, TemplateFieldCategory } from '@hcengineering/templates' import type { AnyComponent, IconSize, ResolvedLocation } from '@hcengineering/ui' @@ -254,6 +254,9 @@ export const contactPlugin = plugin(contactId, { app: { Contacts: '' as Ref }, + metadata: { + LastNameFirst: '' as Metadata + }, string: { PersonAlreadyExists: '' as IntlString, Person: '' as IntlString, diff --git a/plugins/contact/src/utils.ts b/plugins/contact/src/utils.ts index 788a48c55c..5dd94b18b4 100644 --- a/plugins/contact/src/utils.ts +++ b/plugins/contact/src/utils.ts @@ -18,6 +18,7 @@ import { IconSize, ColorDefinition } from '@hcengineering/ui' import { MD5 } from 'crypto-js' import { Channel, Contact, contactPlugin, Person } from '.' import { AVATAR_COLORS, GravatarPlaceholderType } from './types' +import { getMetadata } from '@hcengineering/platform' /** * @public @@ -220,7 +221,9 @@ export function getLastName (name: string): string { * @public */ export function formatName (name: string): string { - return getLastName(name) + ' ' + getFirstName(name) + return getMetadata(contactPlugin.metadata.LastNameFirst) === true + ? getLastName(name) + ' ' + getFirstName(name) + : getFirstName(name) + ' ' + getLastName(name) } /** diff --git a/pods/server/src/__start.ts b/pods/server/src/__start.ts index e62096a2f1..e7e48a52ea 100644 --- a/pods/server/src/__start.ts +++ b/pods/server/src/__start.ts @@ -21,6 +21,7 @@ import serverToken from '@hcengineering/server-token' import { serverFactories } from '@hcengineering/server-ws' import { start } from '.' import serverNotification from '@hcengineering/server-notification' +import contactPlugin from '@hcengineering/contact' const serverPort = parseInt(process.env.SERVER_PORT ?? '3333') @@ -91,10 +92,12 @@ if (accountsUrl === undefined) { const sesUrl = process.env.SES_URL const cursorMaxTime = process.env.SERVER_CURSOR_MAXTIMEMS +const lastNameFirst = process.env.LAST_NAME_FIRST === 'true' ?? false setMetadata(serverCore.metadata.CursorMaxTimeMS, cursorMaxTime) setMetadata(serverCore.metadata.FrontUrl, frontUrl) setMetadata(serverToken.metadata.Secret, serverSecret) setMetadata(serverNotification.metadata.SesUrl, sesUrl ?? '') +setMetadata(contactPlugin.metadata.LastNameFirst, lastNameFirst) // eslint-disable-next-line @typescript-eslint/no-floating-promises console.log( diff --git a/server/front/src/index.ts b/server/front/src/index.ts index ec1ce187bc..10468a2704 100644 --- a/server/front/src/index.ts +++ b/server/front/src/index.ts @@ -151,6 +151,7 @@ export function start ( title?: string languages: string defaultLanguage: string + lastNameFirst?: string }, port: number, extraConfig?: Record @@ -194,6 +195,7 @@ export function start ( TITLE: config.title, LANGUAGES: config.languages, DEFAULT_LANGUAGE: config.defaultLanguage, + LAST_NAME_FIRST: config.lastNameFirst, ...(extraConfig ?? {}) }) }) diff --git a/server/front/src/starter.ts b/server/front/src/starter.ts index 2ce3e0614a..d40291deef 100644 --- a/server/front/src/starter.ts +++ b/server/front/src/starter.ts @@ -116,6 +116,8 @@ export function startFront (extraConfig?: Record): void { process.exit(1) } + const lastNameFirst = process.env.LAST_NAME_FIRST + const title = process.env.TITLE setMetadata(serverToken.metadata.Secret, serverSecret) @@ -128,6 +130,7 @@ export function startFront (extraConfig?: Record): void { uploadUrl, modelVersion, gmailUrl, + lastNameFirst, telegramUrl, rekoniUrl, calendarUrl, diff --git a/tests/docker-compose.yaml b/tests/docker-compose.yaml index 050ac2fbb9..534d983dbb 100644 --- a/tests/docker-compose.yaml +++ b/tests/docker-compose.yaml @@ -76,6 +76,7 @@ services: - MINIO_ENDPOINT=minio - MINIO_ACCESS_KEY=minioadmin - MINIO_SECRET_KEY=minioadmin + - LAST_NAME_FIRST=true transactor: image: hardcoreeng/transactor pull_policy: never @@ -100,6 +101,7 @@ services: - REKONI_URL=http://rekoni:4005 - FRONT_URL=http://localhost:8083 - ACCOUNTS_URL=http://account:3003 + - LAST_NAME_FIRST=true collaborator: image: hardcoreeng/collaborator links: