fix(auth): unify scheme creator display
This commit is contained in:
@@ -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],
|
||||
);
|
||||
};
|
||||
Reference in New Issue
Block a user