ФУНКЦИИ - МЕЖПРОЕКТНАЯ КОММУНИКАЦИЯ: маппинг имени профиля
This commit is contained in:
parent
95225280e7
commit
b698741687
|
|
@ -1775,7 +1775,16 @@ function sanitizeSelfProfilePatch(payload) {
|
|||
|
||||
function sanitizeTaskerProfilePatch(payload) {
|
||||
const patch = {};
|
||||
const name = firstNonEmptyString(payload?.displayName, payload?.display_name, payload?.name);
|
||||
const changedFields = Array.isArray(payload?.changedFields) ? payload.changedFields : [];
|
||||
const taskerFullName = joinTaskerProfileName(
|
||||
payload?.firstName ?? payload?.first_name,
|
||||
payload?.lastName ?? payload?.last_name
|
||||
);
|
||||
const taskerDisplayName = firstNonEmptyString(payload?.displayName, payload?.display_name, payload?.name);
|
||||
const name =
|
||||
hasChangedField(changedFields, ["display_name"]) || !hasChangedField(changedFields, ["first_name", "last_name"])
|
||||
? firstNonEmptyString(taskerDisplayName, taskerFullName)
|
||||
: firstNonEmptyString(taskerFullName, taskerDisplayName);
|
||||
const hasAvatar =
|
||||
Object.hasOwn(payload ?? {}, "avatarUrl") ||
|
||||
Object.hasOwn(payload ?? {}, "avatar_url") ||
|
||||
|
|
@ -1800,6 +1809,24 @@ function firstNonEmptyString(...values) {
|
|||
return null;
|
||||
}
|
||||
|
||||
function joinTaskerProfileName(firstName, lastName) {
|
||||
return [firstName, lastName].filter((value) => typeof value === "string" && value.trim()).join(" ").trim();
|
||||
}
|
||||
|
||||
function splitTaskerProfileName(name) {
|
||||
const trimmedName = typeof name === "string" ? name.trim() : "";
|
||||
const parts = trimmedName.split(/\s+/, 2);
|
||||
|
||||
return {
|
||||
firstName: parts[0] ?? "",
|
||||
lastName: parts.length > 1 ? trimmedName.slice(parts[0].length).trim() : "",
|
||||
};
|
||||
}
|
||||
|
||||
function hasChangedField(changedFields, fields) {
|
||||
return fields.some((field) => changedFields.includes(field));
|
||||
}
|
||||
|
||||
function nullableProfileUrl(value) {
|
||||
return typeof value === "string" && value.trim() ? value.trim() : null;
|
||||
}
|
||||
|
|
@ -2090,6 +2117,8 @@ async function syncTaskManagerUserProfile(user) {
|
|||
return null;
|
||||
}
|
||||
|
||||
const taskerNameParts = splitTaskerProfileName(user.name);
|
||||
|
||||
try {
|
||||
return await requestTaskManagerInternalJson("/api/internal/nodedc/users/profile-sync/", {
|
||||
method: "POST",
|
||||
|
|
@ -2097,6 +2126,9 @@ async function syncTaskManagerUserProfile(user) {
|
|||
email: user.email,
|
||||
subject: user.authentikUserId ?? undefined,
|
||||
name: user.name,
|
||||
displayName: user.name,
|
||||
firstName: taskerNameParts.firstName,
|
||||
lastName: taskerNameParts.lastName,
|
||||
avatarUrl: resolveUserAvatarPublicUrl(user),
|
||||
},
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in New Issue