forked from baron/baron-sso
feat: integrate orgfront and expose internal ids
This commit is contained in:
@@ -73,6 +73,8 @@ import {
|
||||
type OrgChartTenantSelection,
|
||||
buildAuthenticatedOrgChartTenantPickerUrl,
|
||||
filterNonHanmacFamilyTenants,
|
||||
isHanmacFamilyTenant,
|
||||
isHanmacFamilyUser,
|
||||
parseOrgChartTenantSelection,
|
||||
} from "./orgChartPicker";
|
||||
|
||||
@@ -369,7 +371,10 @@ function UserDetailPage() {
|
||||
queryKey: ["tenants", { limit: 100 }],
|
||||
queryFn: () => fetchTenants(100, 0),
|
||||
});
|
||||
const tenants = tenantsData?.items ?? [];
|
||||
const tenants = React.useMemo(
|
||||
() => tenantsData?.items ?? [],
|
||||
[tenantsData?.items],
|
||||
);
|
||||
|
||||
const rpHistoryQuery = useQuery({
|
||||
queryKey: ["user-rp-history", userId],
|
||||
@@ -498,7 +503,7 @@ function UserDetailPage() {
|
||||
);
|
||||
|
||||
const pickerUrl = buildAuthenticatedOrgChartTenantPickerUrl(
|
||||
import.meta.env.VITE_ORGCHART_URL,
|
||||
import.meta.env.ORGFRONT_URL,
|
||||
{
|
||||
tenantId: userType === "hanmac" ? hanmacFamilyTenantId : undefined,
|
||||
},
|
||||
@@ -642,15 +647,33 @@ function UserDetailPage() {
|
||||
Record<string, string | number | boolean>
|
||||
>) || {},
|
||||
});
|
||||
const isUserHanmacFamily = isHanmacFamilyUser(
|
||||
user,
|
||||
tenants,
|
||||
hanmacFamilyTenantId,
|
||||
);
|
||||
const resolvedUserType =
|
||||
metadata.userType === "personal" ||
|
||||
user.companyCode === "personal"
|
||||
? "personal"
|
||||
: metadata.hanmacFamily === true
|
||||
: isUserHanmacFamily
|
||||
? "hanmac"
|
||||
: "external";
|
||||
setUserType(resolvedUserType);
|
||||
setIsHanmacFamily(resolvedUserType === "hanmac");
|
||||
const familyFallbackTenants = [
|
||||
...(user.joinedTenants ?? []),
|
||||
...(user.tenant ? [user.tenant] : []),
|
||||
].filter(
|
||||
(tenant, index, allTenants) =>
|
||||
allTenants.findIndex((item) => item.id === tenant.id) ===
|
||||
index &&
|
||||
isHanmacFamilyTenant(
|
||||
tenant,
|
||||
tenants,
|
||||
hanmacFamilyTenantId,
|
||||
),
|
||||
);
|
||||
setAdditionalAppointments(
|
||||
Array.isArray(rawAppointments)
|
||||
? (rawAppointments as UserAppointment[]).map(
|
||||
@@ -659,22 +682,38 @@ function UserDetailPage() {
|
||||
draftId: createDraftId(),
|
||||
}),
|
||||
)
|
||||
: metadata.hanmacFamily === true && fallbackAppointment
|
||||
? [
|
||||
{
|
||||
: isUserHanmacFamily
|
||||
? familyFallbackTenants.length > 0
|
||||
? familyFallbackTenants.map((tenant) => ({
|
||||
draftId: createDraftId(),
|
||||
tenantId: fallbackAppointment.id,
|
||||
tenantName: fallbackAppointment.name,
|
||||
tenantSlug: fallbackAppointment.slug,
|
||||
isOwner: metadata.primaryTenantIsOwner === true,
|
||||
tenantId: tenant.id,
|
||||
tenantName: tenant.name,
|
||||
tenantSlug: tenant.slug,
|
||||
isOwner:
|
||||
metadata.primaryTenantIsOwner === true &&
|
||||
tenant.id === fallbackAppointment?.id,
|
||||
jobTitle: user.jobTitle,
|
||||
position: user.position,
|
||||
},
|
||||
]
|
||||
}))
|
||||
: fallbackAppointment
|
||||
? [
|
||||
{
|
||||
draftId: createDraftId(),
|
||||
tenantId: fallbackAppointment.id,
|
||||
tenantName: fallbackAppointment.name,
|
||||
tenantSlug: fallbackAppointment.slug,
|
||||
isOwner:
|
||||
metadata.primaryTenantIsOwner ===
|
||||
true,
|
||||
jobTitle: user.jobTitle,
|
||||
position: user.position,
|
||||
},
|
||||
]
|
||||
: []
|
||||
: [],
|
||||
);
|
||||
}
|
||||
}, [user, reset]);
|
||||
}, [hanmacFamilyTenantId, tenants, user, reset]);
|
||||
|
||||
const mutation = useMutation({
|
||||
mutationFn: (data: UserUpdateRequest) => updateUser(userId, data),
|
||||
|
||||
Reference in New Issue
Block a user