diff --git a/src/app/(agent)/agent/message/page.tsx b/src/app/(agent)/agent/message/page.tsx index 538c36c..dc992cb 100644 --- a/src/app/(agent)/agent/message/page.tsx +++ b/src/app/(agent)/agent/message/page.tsx @@ -1,11 +1,15 @@ 'use client'; +import { useSearchParams } from 'next/navigation'; import { MessagingPage } from '@/components/message'; export default function AgentMessagePage() { + const searchParams = useSearchParams(); + const conversationId = searchParams.get('conversationId'); + return (
- +
); } diff --git a/src/app/(agent)/agent/network/page.tsx b/src/app/(agent)/agent/network/page.tsx index 217a756..75348fa 100644 --- a/src/app/(agent)/agent/network/page.tsx +++ b/src/app/(agent)/agent/network/page.tsx @@ -7,6 +7,7 @@ import { NetworkSidebar } from './component/NetworkSidebar'; import { InvitationCard } from './component/InvitationCard'; import { ConnectionCard } from './component/ConnectionCard'; import { connectionRequestsService, ConnectionRequest, ConnectionRequestCounts } from '@/services/connection-requests.service'; +import { messagesService } from '@/services/messages.service'; export default function NetworkPage() { const router = useRouter(); @@ -100,8 +101,20 @@ export default function NetworkPage() { } }; - const handleMessage = (userId: string) => { - router.push('/agent/message'); + const [messagingUserId, setMessagingUserId] = useState(null); + + const handleMessage = async (userId: string) => { + if (messagingUserId) return; + setMessagingUserId(userId); + try { + const conversation = await messagesService.startConversation({ userId }); + router.push(`/agent/message?conversationId=${conversation.id}`); + } catch (err) { + console.error('Failed to start conversation:', err); + router.push('/agent/message'); + } finally { + setMessagingUserId(null); + } }; return ( diff --git a/src/app/(user)/user/message/page.tsx b/src/app/(user)/user/message/page.tsx index 09867bb..ff2aad8 100644 --- a/src/app/(user)/user/message/page.tsx +++ b/src/app/(user)/user/message/page.tsx @@ -1,11 +1,15 @@ 'use client'; +import { useSearchParams } from 'next/navigation'; import { MessagingPage } from '@/components/message'; export default function UserMessagePage() { + const searchParams = useSearchParams(); + const conversationId = searchParams.get('conversationId'); + return (
- +
); } diff --git a/src/components/message/MessagingPage.tsx b/src/components/message/MessagingPage.tsx index b941822..c408b28 100644 --- a/src/components/message/MessagingPage.tsx +++ b/src/components/message/MessagingPage.tsx @@ -126,7 +126,7 @@ interface ConnectedAgent { state: string | null; } -export function MessagingPage() { +export function MessagingPage({ initialConversationId }: { initialConversationId?: string | null }) { const { data: session } = useSession(); const { conversations, @@ -298,6 +298,20 @@ export function MessagingPage() { } }, [conversations]); + // Auto-select conversation when navigated with initialConversationId + const initialConvHandledRef = useRef(false); + useEffect(() => { + if ( + initialConversationId && + !initialConvHandledRef.current && + conversations.length > 0 && + !isLoading + ) { + initialConvHandledRef.current = true; + selectConversation(initialConversationId); + } + }, [initialConversationId, conversations, isLoading, selectConversation]); + // Convert current conversation avatar when selected useEffect(() => { const convertCurrentAvatar = async () => {