2025-06-11 00:14:17 +02:00
|
|
|
import { LocalDatabaseNode } from '@colanode/client/types';
|
|
|
|
|
import { Avatar } from '@colanode/ui/components/avatars/avatar';
|
|
|
|
|
import { useWorkspace } from '@colanode/ui/contexts/workspace';
|
2025-07-21 09:22:15 +02:00
|
|
|
import { useLiveQuery } from '@colanode/ui/hooks/use-live-query';
|
2025-01-27 12:32:15 +01:00
|
|
|
|
|
|
|
|
interface DatabaseContainerTabProps {
|
|
|
|
|
databaseId: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export const DatabaseContainerTab = ({
|
|
|
|
|
databaseId,
|
|
|
|
|
}: DatabaseContainerTabProps) => {
|
|
|
|
|
const workspace = useWorkspace();
|
|
|
|
|
|
2025-07-21 09:22:15 +02:00
|
|
|
const nodeGetQuery = useLiveQuery({
|
2025-06-11 00:14:17 +02:00
|
|
|
type: 'node.get',
|
2025-02-05 22:40:35 +01:00
|
|
|
nodeId: databaseId,
|
2025-11-11 07:00:14 -08:00
|
|
|
userId: workspace.userId,
|
2025-01-27 12:32:15 +01:00
|
|
|
});
|
|
|
|
|
|
2025-06-11 00:14:17 +02:00
|
|
|
if (nodeGetQuery.isPending) {
|
2025-01-29 13:56:44 +01:00
|
|
|
return <p className="text-sm text-muted-foreground">Loading...</p>;
|
|
|
|
|
}
|
|
|
|
|
|
2025-06-11 00:14:17 +02:00
|
|
|
const database = nodeGetQuery.data as LocalDatabaseNode;
|
2025-01-27 12:32:15 +01:00
|
|
|
if (!database) {
|
2025-01-29 13:56:44 +01:00
|
|
|
return <p className="text-sm text-muted-foreground">Not found</p>;
|
2025-01-27 12:32:15 +01:00
|
|
|
}
|
|
|
|
|
|
2025-01-29 13:56:44 +01:00
|
|
|
const name =
|
|
|
|
|
database.attributes.name && database.attributes.name.length > 0
|
|
|
|
|
? database.attributes.name
|
|
|
|
|
: 'Unnamed';
|
|
|
|
|
|
2025-01-27 12:32:15 +01:00
|
|
|
return (
|
|
|
|
|
<div className="flex items-center space-x-2">
|
|
|
|
|
<Avatar
|
|
|
|
|
size="small"
|
|
|
|
|
id={database.id}
|
2025-01-29 13:56:44 +01:00
|
|
|
name={name}
|
2025-01-27 12:32:15 +01:00
|
|
|
avatar={database.attributes.avatar}
|
|
|
|
|
/>
|
2025-01-29 13:56:44 +01:00
|
|
|
<span>{name}</span>
|
2025-01-27 12:32:15 +01:00
|
|
|
</div>
|
|
|
|
|
);
|
|
|
|
|
};
|