ФУНКЦИИ - МЕЖПРОЕКТНАЯ КОММУНИКАЦИЯ: маппинг имени профиля
This commit is contained in:
parent
95225280e7
commit
b698741687
|
|
@ -1775,7 +1775,16 @@ function sanitizeSelfProfilePatch(payload) {
|
||||||
|
|
||||||
function sanitizeTaskerProfilePatch(payload) {
|
function sanitizeTaskerProfilePatch(payload) {
|
||||||
const patch = {};
|
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 =
|
const hasAvatar =
|
||||||
Object.hasOwn(payload ?? {}, "avatarUrl") ||
|
Object.hasOwn(payload ?? {}, "avatarUrl") ||
|
||||||
Object.hasOwn(payload ?? {}, "avatar_url") ||
|
Object.hasOwn(payload ?? {}, "avatar_url") ||
|
||||||
|
|
@ -1800,6 +1809,24 @@ function firstNonEmptyString(...values) {
|
||||||
return null;
|
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) {
|
function nullableProfileUrl(value) {
|
||||||
return typeof value === "string" && value.trim() ? value.trim() : null;
|
return typeof value === "string" && value.trim() ? value.trim() : null;
|
||||||
}
|
}
|
||||||
|
|
@ -2090,6 +2117,8 @@ async function syncTaskManagerUserProfile(user) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const taskerNameParts = splitTaskerProfileName(user.name);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
return await requestTaskManagerInternalJson("/api/internal/nodedc/users/profile-sync/", {
|
return await requestTaskManagerInternalJson("/api/internal/nodedc/users/profile-sync/", {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
|
|
@ -2097,6 +2126,9 @@ async function syncTaskManagerUserProfile(user) {
|
||||||
email: user.email,
|
email: user.email,
|
||||||
subject: user.authentikUserId ?? undefined,
|
subject: user.authentikUserId ?? undefined,
|
||||||
name: user.name,
|
name: user.name,
|
||||||
|
displayName: user.name,
|
||||||
|
firstName: taskerNameParts.firstName,
|
||||||
|
lastName: taskerNameParts.lastName,
|
||||||
avatarUrl: resolveUserAvatarPublicUrl(user),
|
avatarUrl: resolveUserAvatarPublicUrl(user),
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue