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 = (
,
},
{
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 = (