fix(auth): unify scheme creator display

This commit is contained in:
2026-07-30 14:21:20 +08:00
parent 1d7e07174f
commit 8836549697
17 changed files with 106 additions and 18 deletions
@@ -0,0 +1,31 @@
import { resolveSchemeCreatorName } from "./useSchemeCreatorName";
describe("resolveSchemeCreatorName", () => {
it("shows the current viewer's display name for their own scheme", () => {
expect(
resolveSchemeCreatorName("tjwater", {
username: "tjwater",
name: "Test Account",
}),
).toBe("Test Account");
});
it("keeps the stored username for another user's scheme", () => {
expect(
resolveSchemeCreatorName("operator", {
username: "tjwater",
name: "Test Account",
}),
).toBe("operator");
});
it("falls back safely when identity data is incomplete", () => {
expect(
resolveSchemeCreatorName("tjwater", {
username: "tjwater",
name: " ",
}),
).toBe("tjwater");
expect(resolveSchemeCreatorName(undefined, undefined)).toBe("-");
});
});
@@ -0,0 +1,29 @@
import { useGetIdentity } from "@refinedev/core";
import { useCallback } from "react";
export interface SchemeViewerIdentity {
name?: string | null;
username?: string | null;
}
export const resolveSchemeCreatorName = (
schemeUsername: string | null | undefined,
viewer: SchemeViewerIdentity | null | undefined,
) => {
const username = schemeUsername?.trim();
if (!username) return "-";
const viewerUsername = viewer?.username?.trim();
const viewerName = viewer?.name?.trim();
return viewerUsername === username && viewerName ? viewerName : username;
};
export const useSchemeCreatorName = () => {
const { data: viewer } = useGetIdentity<SchemeViewerIdentity>();
return useCallback(
(schemeUsername: string | null | undefined) =>
resolveSchemeCreatorName(schemeUsername, viewer),
[viewer],
);
};