Добавлены новые зависимости для работы с эмодзи и улучшена структура базы данных. Реализована модель сообщений и обновлены компоненты для поддержки новых функций мессенджера. Обновлены запросы и мутации для работы с сообщениями и чатом.

This commit is contained in:
Bivekich
2025-07-16 22:07:38 +03:00
parent 823ef9a28c
commit 205c9eae98
33 changed files with 3288 additions and 229 deletions

View File

@ -11,7 +11,8 @@ import {
Calendar,
Plus,
Send,
Trash2
Trash2,
User
} from 'lucide-react'
import { OrganizationAvatar } from './organization-avatar'
import { useState } from 'react'
@ -28,6 +29,9 @@ interface Organization {
createdAt: string
users?: Array<{ id: string, avatar?: string }>
isCounterparty?: boolean
isCurrentUser?: boolean
hasOutgoingRequest?: boolean
hasIncomingRequest?: boolean
}
interface OrganizationCardProps {
@ -144,7 +148,12 @@ export function OrganizationCard({
<Badge className={getTypeColor(organization.type)}>
{getTypeLabel(organization.type)}
</Badge>
{organization.isCounterparty && (
{organization.isCurrentUser && (
<Badge className="bg-blue-500/20 text-blue-300 border-blue-500/30">
Это вы
</Badge>
)}
{organization.isCounterparty && !organization.isCurrentUser && (
<Badge className="bg-green-500/20 text-green-300 border-green-500/30">
Уже добавлен
</Badge>
@ -190,16 +199,29 @@ export function OrganizationCard({
<Trash2 className="h-4 w-4 mr-2" />
Удалить из контрагентов
</Button>
) : organization.isCurrentUser ? (
<Button
size="sm"
variant="outline"
disabled
className="bg-blue-500/10 text-blue-300 border-blue-500/30 w-full opacity-50"
>
<User className="h-4 w-4 mr-2" />
Ваша организация
</Button>
) : (
<Dialog open={isDialogOpen} onOpenChange={setIsDialogOpen}>
<DialogTrigger asChild>
<Button
size="sm"
disabled={organization.isCounterparty}
className={`${getActionButtonColor(actionButtonColor, !!organization.isCounterparty)} w-full cursor-pointer`}
disabled={organization.isCounterparty || organization.hasOutgoingRequest || organization.hasIncomingRequest}
className={`${getActionButtonColor(actionButtonColor, !!organization.isCounterparty || !!organization.hasOutgoingRequest || !!organization.hasIncomingRequest)} w-full cursor-pointer`}
>
<Plus className="h-4 w-4 mr-2" />
{organization.isCounterparty ? 'Уже добавлен' : actionButtonText}
{organization.isCounterparty ? 'Уже добавлен' :
organization.hasOutgoingRequest ? 'Заявка отправлена' :
organization.hasIncomingRequest ? 'Уже подал заявку' :
actionButtonText}
</Button>
</DialogTrigger>