import { CircleAlert } from 'lucide-react'; import { CreatedByFieldAttributes, DatabaseViewFilterAttributes, } from '@colanode/core'; import { Avatar } from '@colanode/ui/components/avatars/avatar'; import { BoardViewColumn } from '@colanode/ui/components/databases/boards/board-view-column'; import { Spinner } from '@colanode/ui/components/ui/spinner'; import { BoardViewContext } from '@colanode/ui/contexts/board-view'; import { useDatabase } from '@colanode/ui/contexts/database'; import { useDatabaseView } from '@colanode/ui/contexts/database-view'; import { useWorkspace } from '@colanode/ui/contexts/workspace'; import { useQuery } from '@colanode/ui/hooks/use-query'; interface BoardViewColumnsCreatedByProps { field: CreatedByFieldAttributes; } export const BoardViewColumnsCreatedBy = ({ field, }: BoardViewColumnsCreatedByProps) => { const workspace = useWorkspace(); const database = useDatabase(); const view = useDatabaseView(); const createdByCountQuery = useQuery({ type: 'record.field.value.count', databaseId: database.id, filters: view.filters, fieldId: field.id, accountId: workspace.accountId, workspaceId: workspace.id, }); if (createdByCountQuery.isPending) { return null; } const users = createdByCountQuery.data?.items ?? []; return ( <> {users.map((user) => { const filter: DatabaseViewFilterAttributes = { id: '1', type: 'field', fieldId: field.id, operator: 'is_in', value: [user.value], }; return ( false, drop: () => null, header: ( ), canDrag: () => false, onDragEnd: () => {}, }} > ); })} ); }; interface BoardViewColumnCreatedByHeaderProps { field: CreatedByFieldAttributes; createdBy: string; } const BoardViewColumnCreatedByHeader = ({ createdBy, }: BoardViewColumnCreatedByHeaderProps) => { const workspace = useWorkspace(); const userQuery = useQuery({ type: 'user.get', userId: createdBy, accountId: workspace.accountId, workspaceId: workspace.id, }); if (userQuery.isPending) { return (

Loading...

); } const user = userQuery.data; if (!user) { return (

Unknown

); } return (

{user.name}

); };