import * as React from "react"; import { ContributionRewardExtProposal as Entity, IContributionRewardProposalState as Data, } from "@daostack/arc.js"; import { Arc as Protocol, ArcConfig as ProtocolConfig, Component, ComponentLogs, ComponentProps, Proposal, } from "../../../"; import { CreateContextFeed } from "../../../runtime/ContextFeed"; interface RequiredProps extends ComponentProps { // Proposal ID id?: string | Entity; } interface InferredProps extends RequiredProps { config: ProtocolConfig; id: string | Entity; } class InferredContributionRewardExtProposal extends Component< InferredProps, Entity, Data > { protected createEntity(): Entity { const { config, id } = this.props; if (!config) { throw Error( "Arc Config Missing: Please provide this field as a prop, or use the inference component." ); } const proposalId = typeof id === "string" ? id : id.id; return new Entity(config.connection, proposalId); } public static get Entity() { return CreateContextFeed( this.EntityContext.Consumer, this.LogsContext.Consumer, "ContributionRewardExtProposal" ); } public static get Data() { return CreateContextFeed( this.DataContext.Consumer, this.LogsContext.Consumer, "ContributionRewardExtProposal" ); } public static get Logs() { return CreateContextFeed( this.LogsContext.Consumer, this.LogsContext.Consumer, "ContributionRewardExtProposal" ); } public static EntityContext = React.createContext( undefined ); public static DataContext = React.createContext(undefined); public static LogsContext = React.createContext( undefined ); } function useContributionRewardExtProposal(): [ Data | undefined, Entity | undefined ] { const data = React.useContext( InferredContributionRewardExtProposal.DataContext ); const entity = React.useContext( InferredContributionRewardExtProposal.EntityContext ); return [data, entity]; } class ContributionRewardExtProposal extends React.Component { public render() { const { id, children } = this.props; const renderInferred = (id: string | Entity) => ( {(config: ProtocolConfig) => ( {children} )} ); if (!id) { return ( {(proposal: Entity) => renderInferred(proposal.id)} ); } else { return renderInferred(id); } } public static get Entity() { return InferredContributionRewardExtProposal.Entity; } public static get Data() { return InferredContributionRewardExtProposal.Data; } public static get Logs() { return InferredContributionRewardExtProposal.Logs; } } export default ContributionRewardExtProposal; export { InferredContributionRewardExtProposal, ContributionRewardExtProposal, Entity as ContributionRewardExtProposalEntity, Data as ContributionRewardExtProposalData, useContributionRewardExtProposal, };