Skip to content

Commit ecb4571

Browse files
committed
[CORE-645] Nebula - Add active chain in context filters (#5782)
## Problem solved Short description of the bug fixed or feature added <!-- start pr-codex --> --- ## PR-Codex overview This PR enhances the `ChatPageContent` component by integrating the `useActiveWalletChain` hook, which allows the component to manage context filters based on the user's active wallet chain. It refines state management and ensures context filters are updated appropriately. ### Detailed summary - Added `useActiveWalletChain` to track the active wallet chain. - Renamed the state variable `_contextFilters` to `contextFilters`. - Updated the `setContextFilters` function to use `useCallback`. - Modified the logic to update context filters based on active wallet address and chain ID. - Simplified the effect to set context filters conditionally based on user interactions and active chain. > ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}` <!-- end pr-codex -->
1 parent 58bc4a9 commit ecb4571

File tree

1 file changed

+25
-18
lines changed

1 file changed

+25
-18
lines changed

apps/dashboard/src/app/nebula-app/(app)/components/ChatPageContent.tsx

Lines changed: 25 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import { useThirdwebClient } from "@/constants/thirdweb.client";
33
import type { Account } from "@3rdweb-sdk/react/hooks/useApi";
44
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
5-
import { useActiveAccount } from "thirdweb/react";
5+
import { useActiveAccount, useActiveWalletChain } from "thirdweb/react";
66
import { type ContextFilters, promptNebula } from "../api/chat";
77
import { createSession, updateSession } from "../api/session";
88
import type { ExecuteConfig, SessionInfo } from "../api/types";
@@ -21,6 +21,7 @@ export function ChatPageContent(props: {
2121
initialPrompt: string | undefined;
2222
}) {
2323
const address = useActiveAccount()?.address;
24+
const activeChain = useActiveWalletChain();
2425
const client = useThirdwebClient();
2526
const [userHasSubmittedMessage, setUserHasSubmittedMessage] = useState(false);
2627
const [messages, setMessages] = useState<Array<ChatMessage>>(() => {
@@ -37,7 +38,7 @@ export function ChatPageContent(props: {
3738
const [hasUserUpdatedContextFilters, setHasUserUpdatedContextFilters] =
3839
useState(false);
3940

40-
const [_contextFilters, _setContextFilters] = useState<
41+
const [contextFilters, _setContextFilters] = useState<
4142
ContextFilters | undefined
4243
>(() => {
4344
const contextFilterRes = props.session?.context_filter;
@@ -50,31 +51,37 @@ export function ChatPageContent(props: {
5051
return value;
5152
});
5253

53-
function setContextFilters(filters: ContextFilters | undefined) {
54-
_setContextFilters(filters);
54+
const setContextFilters = useCallback((v: ContextFilters | undefined) => {
55+
_setContextFilters(v);
5556
setHasUserUpdatedContextFilters(true);
56-
}
57+
}, []);
5758

5859
const isNewSession = !props.session;
5960

6061
// if this is a new session, user has not manually updated context filters
61-
// and no wallet address is set in context filters, add the current wallet address
62-
const contextFilters = useMemo(() => {
62+
// update the context filters to the current user's wallet address and chain id
63+
// eslint-disable-next-line no-restricted-syntax
64+
useEffect(() => {
6365
if (
64-
isNewSession &&
65-
!hasUserUpdatedContextFilters &&
66-
address &&
67-
(!_contextFilters?.walletAddresses ||
68-
_contextFilters.walletAddresses.length === 0)
66+
!isNewSession ||
67+
hasUserUpdatedContextFilters ||
68+
!address ||
69+
!activeChain
6970
) {
70-
return {
71-
..._contextFilters,
72-
walletAddresses: [address],
73-
};
71+
return;
7472
}
7573

76-
return _contextFilters;
77-
}, [_contextFilters, address, isNewSession, hasUserUpdatedContextFilters]);
74+
_setContextFilters((_contextFilters) => {
75+
const updatedContextFilters: ContextFilters = _contextFilters
76+
? { ..._contextFilters }
77+
: {};
78+
79+
updatedContextFilters.walletAddresses = [address];
80+
updatedContextFilters.chainIds = [activeChain.id.toString()];
81+
82+
return updatedContextFilters;
83+
});
84+
}, [address, isNewSession, hasUserUpdatedContextFilters, activeChain]);
7885

7986
const config: ExecuteConfig = useMemo(() => {
8087
return {

0 commit comments

Comments
 (0)