Add me and unassigned assignee options
Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
51
ui/src/lib/assignees.ts
Normal file
51
ui/src/lib/assignees.ts
Normal file
@@ -0,0 +1,51 @@
|
||||
export interface AssigneeSelection {
|
||||
assigneeAgentId: string | null;
|
||||
assigneeUserId: string | null;
|
||||
}
|
||||
|
||||
export interface AssigneeOption {
|
||||
id: string;
|
||||
label: string;
|
||||
searchText?: string;
|
||||
}
|
||||
|
||||
export function assigneeValueFromSelection(selection: Partial<AssigneeSelection>): string {
|
||||
if (selection.assigneeAgentId) return `agent:${selection.assigneeAgentId}`;
|
||||
if (selection.assigneeUserId) return `user:${selection.assigneeUserId}`;
|
||||
return "";
|
||||
}
|
||||
|
||||
export function parseAssigneeValue(value: string): AssigneeSelection {
|
||||
if (!value) {
|
||||
return { assigneeAgentId: null, assigneeUserId: null };
|
||||
}
|
||||
if (value.startsWith("agent:")) {
|
||||
const assigneeAgentId = value.slice("agent:".length);
|
||||
return { assigneeAgentId: assigneeAgentId || null, assigneeUserId: null };
|
||||
}
|
||||
if (value.startsWith("user:")) {
|
||||
const assigneeUserId = value.slice("user:".length);
|
||||
return { assigneeAgentId: null, assigneeUserId: assigneeUserId || null };
|
||||
}
|
||||
// Backward compatibility for older drafts/defaults that stored a raw agent id.
|
||||
return { assigneeAgentId: value, assigneeUserId: null };
|
||||
}
|
||||
|
||||
export function currentUserAssigneeOption(currentUserId: string | null | undefined): AssigneeOption[] {
|
||||
if (!currentUserId) return [];
|
||||
return [{
|
||||
id: assigneeValueFromSelection({ assigneeUserId: currentUserId }),
|
||||
label: "Me",
|
||||
searchText: currentUserId === "local-board" ? "me board human local-board" : `me human ${currentUserId}`,
|
||||
}];
|
||||
}
|
||||
|
||||
export function formatAssigneeUserLabel(
|
||||
userId: string | null | undefined,
|
||||
currentUserId: string | null | undefined,
|
||||
): string | null {
|
||||
if (!userId) return null;
|
||||
if (currentUserId && userId === currentUserId) return "Me";
|
||||
if (userId === "local-board") return "Board";
|
||||
return userId.slice(0, 5);
|
||||
}
|
||||
Reference in New Issue
Block a user