import { AviLinkLarge } from "../../Components/AviLink"; import { BulkActionModal } from "../../Components/Modals/BulkActionModal"; import { Burger } from "../../../../Components/Icons/Burger"; import { Button, Col, Row } from "antd"; import { Dropdown, Menu } from "antd-latest"; import { Link, useParams } from "react-router-dom"; import { LoadMore } from "../../../../Components/LoadMore"; import { MemberCard } from "../../Components/Previews/Member/Card/MemberCard"; import { NoBulkActionModal } from "../../Components/Modals/NoBulkActionModal"; import { ProposalCard } from "../../Components/Previews/Standard/Card/ProposalCard"; import { ProposalRow } from "../../Components/Previews/Standard/Row/ProposalRow"; import { UserStake } from "../../../../Components/UserWidget"; import { WhitelistCard } from "../../Components/Previews/Whitelist/Card/WhitelistCard"; import { WhitelistProposalRow } from "../../Components/Previews/Whitelist/Row/WhitelistProposalRow"; import { convertDaoProposalsForUI } from "../../Utils/Helpers"; import { defaultDao } from "../../Utils/defaultDao"; import { useActions, useAppState } from "../../../../overmind"; import { useCachedDaoProposals, useCachedDaoWhitelist, useCachedDaoWhitelistProposals, useCachedPool, useCachedUser, } from "../../../../hooks/useCached"; import { useState } from "react"; import ArrowDown from "../../../../Components/Icons/ArrowDown"; import ListToggle from "../../../../Components/Icons/ListToggle"; import MemberRow from "../../Components/Previews/Member/Row/MemberRow"; export const ProposalsPage = () => { const { daoOwner } = useParams<{ daoOwner: string; id: string }>(); return ; }; export const Proposals = (props: { daoOwner: string }) => { const state = useAppState(); const actions = useActions(); const currUser = state.api.auth.user?.username || ""; // crude fix below, refactor const daoOwner = props.daoOwner && props.daoOwner !== "proposals" ? props.daoOwner : defaultDao(state); //state.config.settings.newcoin.daoDomain; const ownDao = state.api.auth.user?.username === daoOwner; const daoProposals = useCachedDaoProposals({ daoOwner }); const daoWhitelistProposals = useCachedDaoWhitelistProposals({ daoOwner }); const daoMembers = useCachedDaoWhitelist({ daoOwner }); const daoOwnerObj = useCachedUser({ username: daoOwner }); const pool = useCachedPool({ owner: daoOwner }); const myPools = state.newcoin.pools || {}; const stakedAmt = myPools[pool.code]; const [toggleView, setToggleView] = useState(false); const [showProposalType, setShowProposalType] = useState("standard"); const [bulkAction, setBulkAction] = useState({ state: false, action: "" }); const [sortSelection, setSortSelection] = useState("all"); let proposals; const proposalTypes = { standard: convertDaoProposalsForUI(daoProposals.rows), whitelist: convertDaoProposalsForUI(daoWhitelistProposals.rows), }; if (showProposalType == "members") proposals = daoMembers.rows; else if (sortSelection == "all") proposals = proposalTypes[showProposalType]; else { proposals = proposalTypes[showProposalType].filter((row) => { if (sortSelection == "byMe") return row.proposer == currUser; if (sortSelection == "byOthers") return row.proposer != currUser; if (sortSelection == "expired") return row.time_data.time_left_seconds < 0; if (sortSelection == "needsApproval") return row.status == "created" && row.proposer == currUser; if (sortSelection == "needsExecution") return row.status == "approved" && row.time_data.time_left_seconds < 0 && row.proposer == currUser; if (sortSelection == "needsVoting") return row.status == "approved" && row.time_data.time_left_seconds > 0; }); } const menu = ( setSortSelection("needsApproval")}>Needs Approval

, }, { key: "2", label:

setSortSelection("needsVoting")}>Needs Votes

, }, { key: "3", label:

setSortSelection("needsExecution")}>Needs Execution

, }, { key: "4", label:

setSortSelection("expired")}>Expired

, }, { key: "5", label:

setSortSelection("all")}>See All

, }, { key: "6", label:

setSortSelection("byMe")}>By Me

, }, { key: "7", label:

setSortSelection("byOthers")}>By Others

, }, ]} /> ); const menu2 = ( { const s = proposals.filter((row) => row.status == "created" && row.proposer == currUser); if (s.length > 0) { setSortSelection("needsApproval"); setBulkAction({ state: true, action: "approve" }); } else setBulkAction({ state: "none", action: "approve" }); }} > Approve All

), }, { key: "2", label: (

{ const s = proposals.filter( (row) => row.status == "approved" && row.time_data.time_left_seconds < 0 && row.proposer == currUser, ); if (s.length > 0) { setSortSelection("needsExecution"); setBulkAction({ state: true, action: "execute" }); } else setBulkAction({ state: "none", action: "execute" }); }} > Execute All

), }, ]} /> ); let proposalsState; showProposalType == "whitelist" && (proposalsState = (state.newcoin.daos[daoOwner] || {})["whitelistProposals"] || {}); showProposalType == "standard" && (proposalsState = (state.newcoin.daos[daoOwner] || {})["standardProposals"] || {}); showProposalType == "members" && (proposalsState = (state.newcoin.daos[daoOwner] || {})["memberProposals"] || {}); let inProgress; showProposalType == "whitelist" && (inProgress = !!state.indicators.specific[`newcoin.daoGetWhitelistProposals`]); showProposalType == "standard" && (inProgress = !!state.indicators.specific[`newcoin.daoGetProposals`]); showProposalType == "members" && (inProgress = !!state.indicators.specific[`newcoin.daoGetWhitelist`]); const shouldLoadMore = !inProgress && (!proposalsState || proposalsState?.more); const loadMore = () => { showProposalType == "whitelist" && actions.newcoin.daoGetWhitelistProposals({ daoOwner }); showProposalType == "standard" && actions.newcoin.daoGetProposals({ daoOwner }); showProposalType == "members" && actions.newcoin.daoGetWhitelist({ daoOwner }); }; if (!inProgress && !daoProposals.dao_id && !ownDao) { return window.location.pathname === "/dao/create" ? null : (

Can't find anything!

Try to search with another name.

); } return (

DAO

{Math.round(stakedAmt)} ${pool.code} Staked

setShowProposalType("standard")} > {" "} Proposals

setShowProposalType("whitelist")} > {" "} Member Proposals

setShowProposalType("members")} > {" "} Members

{ownDao && ( e.preventDefault()}> Multi Select {bulkAction.state === true && ( )} {bulkAction.state === "none" && } )} e.preventDefault()}> Sort By setToggleView(!toggleView)}> {toggleView ? : }
{showProposalType == "standard" && proposals .reverse() .map((proposal) => !toggleView ? ( ) : ( ), )} {showProposalType == "whitelist" && proposals .reverse() .map((proposal) => !toggleView ? ( ) : ( ), )} {showProposalType == "members" && proposals.map((member) => !toggleView ? ( ) : ( ), )} {shouldLoadMore && } ); }; export default Proposals; //