File tree Expand file tree Collapse file tree 6 files changed +81
-12
lines changed
Expand file tree Collapse file tree 6 files changed +81
-12
lines changed Original file line number Diff line number Diff line change @@ -12,6 +12,8 @@ changes.
1212
1313### Added
1414
15+ - Add Proposal discussion context that manages username [ Issue 3341] ( https://github.com/IntersectMBO/govtool/issues/3341 )
16+
1517### Fixed
1618
1719- Fix scroll on a drawer on smaller resolution
Original file line number Diff line number Diff line change @@ -6,6 +6,7 @@ import { DataActionsBarProvider } from "./dataActionsBar";
66import { FeatureFlagProvider } from "./featureFlag" ;
77import { GovernanceActionProvider } from "./governanceAction" ;
88import { AdaHandleProvider } from "./adaHandle" ;
9+ import { ProposalDiscussionProvider } from "./proposalDiscussion" ;
910
1011interface Props {
1112 children : React . ReactNode ;
@@ -14,17 +15,19 @@ interface Props {
1415const ContextProviders = ( { children } : Props ) => (
1516 < AppContextProvider >
1617 < GovernanceActionProvider >
17- < FeatureFlagProvider >
18- < AdaHandleProvider >
19- < ModalProvider >
20- < SnackbarProvider >
21- < DataActionsBarProvider >
22- < CardanoProvider > { children } </ CardanoProvider >
23- </ DataActionsBarProvider >
24- </ SnackbarProvider >
25- </ ModalProvider >
26- </ AdaHandleProvider >
27- </ FeatureFlagProvider >
18+ < ProposalDiscussionProvider >
19+ < FeatureFlagProvider >
20+ < AdaHandleProvider >
21+ < ModalProvider >
22+ < SnackbarProvider >
23+ < DataActionsBarProvider >
24+ < CardanoProvider > { children } </ CardanoProvider >
25+ </ DataActionsBarProvider >
26+ </ SnackbarProvider >
27+ </ ModalProvider >
28+ </ AdaHandleProvider >
29+ </ FeatureFlagProvider >
30+ </ ProposalDiscussionProvider >
2831 </ GovernanceActionProvider >
2932 </ AppContextProvider >
3033) ;
Original file line number Diff line number Diff line change @@ -8,3 +8,4 @@ export * from "./usersnapContext";
88export * from "./wallet" ;
99export * from "./featureFlag" ;
1010export * from "./governanceAction" ;
11+ export * from "./proposalDiscussion" ;
Original file line number Diff line number Diff line change 1+ import {
2+ PropsWithChildren ,
3+ useMemo ,
4+ createContext ,
5+ useContext ,
6+ useState ,
7+ } from "react" ;
8+
9+ type ProposalDiscussionContextType = {
10+ username : string ;
11+ setUsername : ( username : string ) => void ;
12+ } | null ;
13+
14+ const ProposalDiscussionContext =
15+ createContext < ProposalDiscussionContextType > ( null ) ;
16+
17+ /**
18+ * Provides proposal discussion context to its children components.
19+ *
20+ * @param children - The child components to render.
21+ */
22+ const ProposalDiscussionProvider = ( { children } : PropsWithChildren ) => {
23+ const [ username , setUsername ] = useState < string > ( "" ) ;
24+
25+ const value = useMemo (
26+ ( ) => ( {
27+ username,
28+ setUsername,
29+ } ) ,
30+ [ username ] ,
31+ ) ;
32+
33+ return (
34+ < ProposalDiscussionContext . Provider value = { value } >
35+ { children }
36+ </ ProposalDiscussionContext . Provider >
37+ ) ;
38+ } ;
39+
40+ /**
41+ * Custom hook to use the ProposalDiscussionContext.
42+ * @returns The context value.
43+ */
44+ const useProposalDiscussion = ( ) => {
45+ const context = useContext ( ProposalDiscussionContext ) ;
46+ if ( ! context ) {
47+ throw new Error (
48+ "useProposalDiscussion must be used within a ProposalDiscussionProvider" ,
49+ ) ;
50+ }
51+ return context ;
52+ } ;
53+
54+ export { ProposalDiscussionProvider , useProposalDiscussion } ;
Original file line number Diff line number Diff line change 11import React , { ComponentProps , Suspense } from "react" ;
22import { Box , CircularProgress } from "@mui/material" ;
33import "@intersect.mbo/pdf-ui/style" ;
4- import { useCardano , useGovernanceActions } from "@/context" ;
4+ import {
5+ useCardano ,
6+ useGovernanceActions ,
7+ useProposalDiscussion ,
8+ } from "@/context" ;
59import { useValidateMutation } from "@/hooks/mutations" ;
610import { useScreenDimension } from "@/hooks/useScreenDimension" ;
711import { Footer , TopNav } from "@/components/organisms" ;
@@ -18,6 +22,7 @@ export const ProposalDiscussionPillar = () => {
1822 const { voter } = useGetVoterInfo ( ) ;
1923 const { createGovernanceActionJsonLD, createHash } = useGovernanceActions ( ) ;
2024 const { fetchDRepVotingPowerList } = useGetDRepVotingPowerList ( ) ;
25+ const { username, setUsername } = useProposalDiscussion ( ) ;
2126
2227 return (
2328 < Box
@@ -67,6 +72,8 @@ export const ProposalDiscussionPillar = () => {
6772 > [ "validateMetadata" ]
6873 }
6974 fetchDRepVotingPowerList = { fetchDRepVotingPowerList }
75+ username = { username }
76+ setUsername = { setUsername }
7077 />
7178 </ Suspense >
7279 </ Box >
Original file line number Diff line number Diff line change @@ -27,6 +27,8 @@ type ProposalDiscussionProps = {
2727 fetchDRepVotingPowerList : (
2828 identifiers : string [ ] ,
2929 ) => Promise < DRepVotingPowerListResponse > ;
30+ username : string ;
31+ setUsername : ( username : string ) => void ;
3032} ;
3133
3234type GovernanceActionsOutcomesProps = {
You can’t perform that action at this time.
0 commit comments