Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: Workspace - The new WS names appear in English when Spanish is set up. #55850

Open
wants to merge 9 commits into
base: main
Choose a base branch
from
3 changes: 3 additions & 0 deletions src/languages/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,8 @@
MarkedReimbursedParams,
MarkReimbursedFromIntegrationParams,
MissingPropertyParams,
NewWorkspaceNameParams,

Check failure on line 107 in src/languages/en.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Replace `NewWorkspaceNam` with `MovedFromPersonalSpac`

Check failure on line 107 in src/languages/en.ts

View workflow job for this annotation

GitHub Actions / ESLint check

Replace `NewWorkspaceNam` with `MovedFromPersonalSpac`
MovedFromPersonalSpaceParams,

Check failure on line 108 in src/languages/en.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Replace `MovedFromPersonalSpac` with `NewWorkspaceNam`

Check failure on line 108 in src/languages/en.ts

View workflow job for this annotation

GitHub Actions / ESLint check

Replace `MovedFromPersonalSpac` with `NewWorkspaceNam`
NoLongerHaveAccessParams,
NotAllowedExtensionParams,
NotYouParams,
Expand Down Expand Up @@ -3979,6 +3980,8 @@
newWorkspace: 'New workspace',
getTheExpensifyCardAndMore: 'Get the Expensify Card and more',
confirmWorkspace: 'Confirm Workspace',
myGroupWorkspace: 'My Group Workspace',
workspaceName: ({userName, workspaceNumber}: NewWorkspaceNameParams) => `${userName}'s Workspace${workspaceNumber ? ` ${workspaceNumber}` : ''}`,
},
people: {
genericFailureMessage: 'An error occurred removing a member from the workspace, please try again.',
Expand Down
3 changes: 3 additions & 0 deletions src/languages/es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,8 @@
MarkedReimbursedParams,
MarkReimbursedFromIntegrationParams,
MissingPropertyParams,
NewWorkspaceNameParams,

Check failure on line 106 in src/languages/es.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Replace `NewWorkspaceNam` with `MovedFromPersonalSpac`

Check failure on line 106 in src/languages/es.ts

View workflow job for this annotation

GitHub Actions / ESLint check

Replace `NewWorkspaceNam` with `MovedFromPersonalSpac`
MovedFromPersonalSpaceParams,

Check failure on line 107 in src/languages/es.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Replace `MovedFromPersonalSpac` with `NewWorkspaceNam`

Check failure on line 107 in src/languages/es.ts

View workflow job for this annotation

GitHub Actions / ESLint check

Replace `MovedFromPersonalSpac` with `NewWorkspaceNam`
NoLongerHaveAccessParams,
NotAllowedExtensionParams,
NotYouParams,
Expand Down Expand Up @@ -4024,6 +4025,8 @@
newWorkspace: 'Nuevo espacio de trabajo',
getTheExpensifyCardAndMore: 'Consigue la Tarjeta Expensify y más',
confirmWorkspace: 'Confirmar espacio de trabajo',
myGroupWorkspace: 'Mi Espacio de Trabajo en Grupo',
workspaceName: ({userName, workspaceNumber}: NewWorkspaceNameParams) => `Espacio de trabajo${workspaceNumber ? ` ${workspaceNumber}` : ''} de ${userName}`,
},
people: {
genericFailureMessage: 'Se ha producido un error al intentar eliminar a un miembro del espacio de trabajo. Por favor, inténtalo más tarde.',
Expand Down
3 changes: 3 additions & 0 deletions src/languages/params.ts
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,8 @@ type UserIsAlreadyMemberParams = {login: string; name: string};

type GoToRoomParams = {roomName: string};

type NewWorkspaceNameParams = {userName: string; workspaceNumber?: number};

type RoomNameReservedErrorParams = {reservedName: string};

type RenamedRoomActionParams = {oldName: string; newName: string};
Expand Down Expand Up @@ -830,6 +832,7 @@ export type {
ChatWithAccountManagerParams,
EditDestinationSubtitleParams,
FlightLayoverParams,
NewWorkspaceNameParams,
SubmitsToParams,
SettlementDateParams,
};
39 changes: 22 additions & 17 deletions src/libs/actions/Policy/Policy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ import * as ErrorUtils from '@libs/ErrorUtils';
import {createFile} from '@libs/fileDownload/FileUtils';
import getIsNarrowLayout from '@libs/getIsNarrowLayout';
import GoogleTagManager from '@libs/GoogleTagManager';
import {translateLocal} from '@libs/Localize';
import Log from '@libs/Log';
import * as NetworkStore from '@libs/Network/NetworkStore';
import * as NumberUtils from '@libs/NumberUtils';
Expand Down Expand Up @@ -1568,40 +1569,44 @@ function removeWorkspace(policyID: string) {
*/
function generateDefaultWorkspaceName(email = ''): string {
const emailParts = email ? email.split('@') : sessionEmail.split('@');
let defaultWorkspaceName = '';
if (!emailParts || emailParts.length !== 2) {
return defaultWorkspaceName;
return '';
}
const username = emailParts.at(0) ?? '';
const domain = emailParts.at(1) ?? '';
const userDetails = PersonalDetailsUtils.getPersonalDetailByEmail(sessionEmail);
const displayName = userDetails?.displayName?.trim();
let displayNameForWorkspace = '';

if (!PUBLIC_DOMAINS.some((publicDomain) => publicDomain === domain.toLowerCase())) {
defaultWorkspaceName = `${Str.UCFirst(domain.split('.').at(0) ?? '')}'s Workspace`;
if (!PUBLIC_DOMAINS.some((publicDomain) => publicDomain === domain)) {
displayNameForWorkspace = Str.UCFirst(domain.split('.').at(0) ?? '');
} else if (displayName) {
defaultWorkspaceName = `${Str.UCFirst(displayName)}'s Workspace`;
} else if (PUBLIC_DOMAINS.some((publicDomain) => publicDomain === domain.toLowerCase())) {
defaultWorkspaceName = `${Str.UCFirst(username)}'s Workspace`;
displayNameForWorkspace = Str.UCFirst(displayName);
} else if (PUBLIC_DOMAINS.some((publicDomain) => publicDomain === domain)) {
displayNameForWorkspace = Str.UCFirst(username);
} else {
defaultWorkspaceName = userDetails?.phoneNumber ?? '';
displayNameForWorkspace = userDetails?.phoneNumber ?? '';
}

if (`@${domain.toLowerCase()}` === CONST.SMS.DOMAIN) {
defaultWorkspaceName = 'My Group Workspace';
if (`@${domain}` === CONST.SMS.DOMAIN) {
return translateLocal('workspace.new.myGroupWorkspace');
}

if (isEmptyObject(allPolicies)) {
return defaultWorkspaceName;
return translateLocal('workspace.new.workspaceName', {userName: displayNameForWorkspace});
}

// find default named workspaces and increment the last number
const numberRegEx = new RegExp(`${escapeRegExp(defaultWorkspaceName)} ?(\\d*)`, 'i');
const parsedWorkspaceNumbers = Object.values(allPolicies ?? {})
.filter((policy) => policy?.name && numberRegEx.test(policy.name))
.map((policy) => Number(numberRegEx.exec(policy?.name ?? '')?.[1] ?? '1')); // parse the number at the end
const lastWorkspaceNumber = Math.max(...parsedWorkspaceNumbers);
return lastWorkspaceNumber !== -Infinity ? `${defaultWorkspaceName} ${lastWorkspaceNumber + 1}` : defaultWorkspaceName;
const escapedName = escapeRegExp(displayNameForWorkspace);
const workspaceRegex = new RegExp(`(?:${escapedName}'s Workspace|Espacio de trabajo)\\s*(\\d+)?\\s*(?:de ${escapedName})?$`, 'i');

const workspaceNumbers = Object.values(allPolicies)
.map((policy) => workspaceRegex.exec(policy?.name ?? ''))
.filter(Boolean) // Remove null matches
.map((match) => Number(match?.[1] ?? '0'));
const lastWorkspaceNumber = workspaceNumbers.length > 0 ? Math.max(...workspaceNumbers) : undefined;

return translateLocal('workspace.new.workspaceName', {userName: displayNameForWorkspace, workspaceNumber: lastWorkspaceNumber !== undefined ? lastWorkspaceNumber + 1 : undefined});
}

/**
Expand Down
Loading