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 () => {