Skip to content

Commit 0fe6af8

Browse files
Copilotgrillinrelifouts
authored
fix: derive WebSocket URL from API_BASE_URL in conversation screen (#130)
* Initial plan * fix: use API_BASE_URL for WebSocket URL in conversation screen Co-authored-by: grillinr <169214325+grillinr@users.noreply.github.com> * fix: merge reconnection logic from base branch while keeping API_BASE_URL approach Co-authored-by: elifouts <116454864+elifouts@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: grillinr <169214325+grillinr@users.noreply.github.com> Co-authored-by: elifouts <116454864+elifouts@users.noreply.github.com> Co-authored-by: Eli Fouts <eligfouts@gmail.com>
1 parent 38194da commit 0fe6af8

File tree

1 file changed

+17
-7
lines changed

1 file changed

+17
-7
lines changed

frontend/app/conversation/[username].tsx

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import { MessageBubble } from "@/components/MessageBubble";
1717
import { MessageComposer } from "@/components/MessageComposer";
1818
import { useAppColors } from "@/hooks/useAppColors";
1919
import { useAuth } from "@/contexts/AuthContext";
20-
import { getDirectMessages, createDirectMessage } from "@/services/api";
20+
import { API_BASE_URL, getDirectMessages, createDirectMessage } from "@/services/api";
2121
import { ApiDirectMessage } from "@/constants/Types";
2222

2323
type MessageWithState = ApiDirectMessage & {
@@ -26,6 +26,19 @@ type MessageWithState = ApiDirectMessage & {
2626
tempId?: string;
2727
};
2828

29+
const getWebSocketBaseUrl = (baseUrl?: string) => {
30+
if (!baseUrl) {
31+
return "";
32+
}
33+
if (baseUrl.startsWith("https://")) {
34+
return `wss://${baseUrl.slice("https://".length)}`;
35+
}
36+
if (baseUrl.startsWith("http://")) {
37+
return `ws://${baseUrl.slice("http://".length)}`;
38+
}
39+
return baseUrl;
40+
};
41+
2942
export default function ConversationScreen() {
3043
const colors = useAppColors();
3144
const insets = useSafeAreaInsets();
@@ -74,14 +87,11 @@ export default function ConversationScreen() {
7487
let reconnectAttempts = 0;
7588
let reconnectTimeoutId: ReturnType<typeof setTimeout> | null = null;
7689
let isActive = true;
77-
78-
// Connect to WebSocket (reuse existing connection pattern from terminal)
79-
const protocol = __DEV__ ? "ws" : "wss";
80-
const host = __DEV__ ? "10.0.2.2:8080" : "devbits.ddns.net";
81-
const wsUrl = `${protocol}://${host}/messages/${encodeURIComponent(
90+
// Connect to WebSocket using API_BASE_URL
91+
const wsBase = getWebSocketBaseUrl(API_BASE_URL);
92+
const wsUrl = `${wsBase}/messages/${encodeURIComponent(
8293
user.username
8394
)}/stream?token=${encodeURIComponent(token)}`;
84-
8595
const connect = () => {
8696
if (!isActive) {
8797
return;

0 commit comments

Comments
 (0)