Skip to content

Commit

Permalink
Fix snapshot/shutter bugs, fix loading state when navigating between dao
Browse files Browse the repository at this point in the history
  • Loading branch information
mudrila committed Nov 22, 2023
1 parent 7bfd64e commit afb3e4c
Show file tree
Hide file tree
Showing 6 changed files with 13 additions and 12 deletions.
6 changes: 3 additions & 3 deletions app/daos/[daoAddress]/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ export default function DaoPageLayout({
params: { daoAddress?: string };
}) {
const { node } = useFractal();
const loading = useDAOController({ daoAddress });
const { nodeLoading, reloadingDAO } = useDAOController({ daoAddress });
const { chain } = useNetwork();

const validSafe = node.safe;
Expand All @@ -84,7 +84,7 @@ export default function DaoPageLayout({
display = children;
} else if (!chain) {
// if we're disconnected
if (loading || validSafe) {
if (nodeLoading || reloadingDAO || validSafe) {
display = children;
} else {
display = <InvalidSafe />;
Expand All @@ -94,7 +94,7 @@ export default function DaoPageLayout({
const invalidChain = !supportedChains.map(c => c.chainId).includes(chain.id);
if (invalidChain) {
display = <InvalidChain />;
} else if (loading || validSafe) {
} else if (nodeLoading || reloadingDAO || validSafe) {
display = children;
} else {
display = <InvalidSafe />;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ export function ProposalAction({
);

const showActionButton =
(isSnapshotProposal && canVote) ||
(isSnapshotProposal && canVote && isActiveProposal) ||
(user.votingWeight.gt(0) &&
(isActiveProposal ||
proposal.state === FractalProposalState.EXECUTABLE ||
Expand Down
8 changes: 2 additions & 6 deletions src/hooks/DAO/loaders/snapshot/useSnapshotProposal.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,7 @@ export default function useSnapshotProposal(proposal: FractalProposal | null | u
[snapshotProposal]
);

const getVoteWeight = useCallback(
(vote: SnapshotVote) =>
vote.votingWeight * vote.votingWeightByStrategy.reduce((prev, curr) => prev + curr, 0),
[]
);
const getVoteWeight = useCallback((vote: SnapshotVote) => vote.votingWeight, []);

const loadProposal = useCallback(async () => {
if (snapshotProposal?.snapshotProposalId) {
Expand Down Expand Up @@ -78,7 +74,7 @@ export default function useSnapshotProposal(proposal: FractalProposal | null | u
const votesQueryResult = await client
.query({
query: gql`query SnapshotProposalVotes {
votes(where: {proposal: "${snapshotProposal.snapshotProposalId}"}) {
votes(where: {proposal: "${snapshotProposal.snapshotProposalId}"}, first: 100) {
id
voter
vp
Expand Down
1 change: 1 addition & 0 deletions src/hooks/DAO/loaders/snapshot/useSnapshotProposals.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ export const useSnapshotProposals = () => {
query: gql`
query Proposals {
proposals(
first: 50,
where: {
space_in: ["${daoSnapshotURL}"]
},
Expand Down
3 changes: 2 additions & 1 deletion src/hooks/DAO/loaders/useFractalNode.ts
Original file line number Diff line number Diff line change
Expand Up @@ -123,9 +123,10 @@ export const useFractalNode = ({ daoAddress }: { daoAddress?: string }) => {
const chainId = chain ? chain.id : disconnectedChain.id;
useEffect(() => {
if (daoAddress && chainId + daoAddress !== currentValidSafe.current) {
setNodeLoading(true);
setDAO(chainId, daoAddress);
}
}, [daoAddress, setDAO, action, currentValidSafe, chainId]);
}, [daoAddress, setDAO, currentValidSafe, chainId]);

return nodeLoading;
};
5 changes: 4 additions & 1 deletion src/hooks/DAO/useDAOController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import { useGovernanceContracts } from './loaders/useGovernanceContracts';

export default function useDAOController({ daoAddress }: { daoAddress?: string }) {
const [currentDAOAddress, setCurrentDAOAddress] = useState<string>();
const [reloadingDAO, setReloadingDAO] = useState(false);
const {
node: {
nodeHierarchy: { parentAddress },
Expand All @@ -21,8 +22,10 @@ export default function useDAOController({ daoAddress }: { daoAddress?: string }
} = useFractal();
useEffect(() => {
if (daoAddress && currentDAOAddress !== daoAddress) {
setReloadingDAO(true);
action.resetDAO().then(() => {
setCurrentDAOAddress(daoAddress);
setReloadingDAO(false);
});
}
}, [daoAddress, currentDAOAddress, action]);
Expand All @@ -35,5 +38,5 @@ export default function useDAOController({ daoAddress }: { daoAddress?: string }
useFractalTreasury();
useERC20Claim();
useSnapshotProposals();
return nodeLoading;
return { nodeLoading, reloadingDAO };
}

0 comments on commit afb3e4c

Please sign in to comment.