Proposal deadlines (#28)
* add proposal versioning * remove deadlines * remove acceptedWithFunding * fix lint, remove commented code * refactor backend to provide isVersionTwo * refactor backend to provide isVersionTwo * Revert "refactor backend to provide isVersionTwo" This reverts commit e3b9bc661081e482326f83fa6aa517cf6bdebe6c. * trigger ci * remove "version"
This commit is contained in:
parent
746398c59b
commit
701a2f95a9
|
@ -234,7 +234,7 @@ class Proposal(db.Model):
|
|||
# Payment info
|
||||
target = db.Column(db.String(255), nullable=False)
|
||||
payout_address = db.Column(db.String(255), nullable=False)
|
||||
deadline_duration = db.Column(db.Integer(), nullable=False)
|
||||
deadline_duration = db.Column(db.Integer(), nullable=True)
|
||||
contribution_matching = db.Column(db.Float(), nullable=False, default=0, server_default=db.text("0"))
|
||||
contribution_bounty = db.Column(db.String(255), nullable=False, default='0', server_default=db.text("'0'"))
|
||||
rfp_opt_in = db.Column(db.Boolean(), nullable=True)
|
||||
|
|
|
@ -228,7 +228,6 @@ def get_proposal_drafts():
|
|||
"content": fields.Str(required=True),
|
||||
"target": fields.Str(required=True),
|
||||
"payoutAddress": fields.Str(required=True),
|
||||
"deadlineDuration": fields.Int(required=True),
|
||||
"milestones": fields.List(fields.Dict(), required=True),
|
||||
"rfpOptIn": fields.Bool(required=False, missing=None),
|
||||
})
|
||||
|
|
|
@ -1,14 +1,11 @@
|
|||
import React from 'react';
|
||||
import { Input, Form, Radio } from 'antd';
|
||||
import { RadioChangeEvent } from 'antd/lib/radio';
|
||||
import { Input, Form } from 'antd';
|
||||
import { ProposalDraft } from 'types';
|
||||
import { getCreateErrors } from 'modules/create/utils';
|
||||
import { ONE_DAY } from 'utils/time';
|
||||
import { DONATION } from 'utils/constants';
|
||||
|
||||
interface State {
|
||||
payoutAddress: string;
|
||||
deadlineDuration: number;
|
||||
}
|
||||
|
||||
interface Props {
|
||||
|
@ -21,13 +18,12 @@ export default class CreateFlowPayment extends React.Component<Props, State> {
|
|||
super(props);
|
||||
this.state = {
|
||||
payoutAddress: '',
|
||||
deadlineDuration: ONE_DAY * 60,
|
||||
...(props.initialState || {}),
|
||||
};
|
||||
}
|
||||
|
||||
render() {
|
||||
const { payoutAddress, deadlineDuration } = this.state;
|
||||
const { payoutAddress } = this.state;
|
||||
const errors = getCreateErrors(this.state, true);
|
||||
const payoutHelp =
|
||||
errors.payoutAddress ||
|
||||
|
@ -52,31 +48,6 @@ export default class CreateFlowPayment extends React.Component<Props, State> {
|
|||
onChange={this.handleInputChange}
|
||||
/>
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item label="Funding Deadline">
|
||||
<Radio.Group
|
||||
name="deadlineDuration"
|
||||
value={deadlineDuration}
|
||||
onChange={this.handleRadioChange}
|
||||
size="large"
|
||||
style={{ display: 'flex', textAlign: 'center' }}
|
||||
>
|
||||
{deadlineDuration === 300 && (
|
||||
<Radio.Button style={{ flex: 1 }} value={300}>
|
||||
5 minutes
|
||||
</Radio.Button>
|
||||
)}
|
||||
<Radio.Button style={{ flex: 1 }} value={ONE_DAY * 30}>
|
||||
30 Days
|
||||
</Radio.Button>
|
||||
<Radio.Button style={{ flex: 1 }} value={ONE_DAY * 60}>
|
||||
60 Days
|
||||
</Radio.Button>
|
||||
<Radio.Button style={{ flex: 1 }} value={ONE_DAY * 90}>
|
||||
90 Days
|
||||
</Radio.Button>
|
||||
</Radio.Group>
|
||||
</Form.Item>
|
||||
</Form>
|
||||
);
|
||||
}
|
||||
|
@ -89,11 +60,4 @@ export default class CreateFlowPayment extends React.Component<Props, State> {
|
|||
this.props.updateForm(this.state);
|
||||
});
|
||||
};
|
||||
|
||||
private handleRadioChange = (event: RadioChangeEvent) => {
|
||||
const { value, name } = event.target;
|
||||
this.setState({ [name as string]: value } as any, () => {
|
||||
this.props.updateForm(this.state);
|
||||
});
|
||||
};
|
||||
}
|
||||
|
|
|
@ -118,13 +118,6 @@ class CreateReview extends React.Component<Props> {
|
|||
content: <code>{form.payoutAddress}</code>,
|
||||
error: errors.payoutAddress,
|
||||
},
|
||||
{
|
||||
key: 'deadlineDuration',
|
||||
content: `${Math.floor(
|
||||
moment.duration((form.deadlineDuration || 0) * 1000).asDays(),
|
||||
)} days`,
|
||||
error: errors.deadlineDuration,
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
|
|
|
@ -47,7 +47,6 @@ const createExampleProposal = (): Partial<ProposalDraft> => {
|
|||
immediatePayout: false,
|
||||
},
|
||||
],
|
||||
deadlineDuration: 300,
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -54,7 +54,9 @@ export class ProposalCampaignBlock extends React.Component<Props, State> {
|
|||
const { target, funded, percentFunded } = proposal;
|
||||
const datePublished = proposal.datePublished || Date.now() / 1000;
|
||||
const isRaiseGoalReached = funded.gte(target);
|
||||
const deadline = (datePublished + proposal.deadlineDuration) * 1000;
|
||||
const deadline = proposal.deadlineDuration
|
||||
? (datePublished + proposal.deadlineDuration) * 1000
|
||||
: 0;
|
||||
const isFrozen =
|
||||
proposal.stage === PROPOSAL_STAGE.FAILED ||
|
||||
proposal.stage === PROPOSAL_STAGE.CANCELED;
|
||||
|
|
|
@ -30,7 +30,6 @@ interface CreateFormErrors {
|
|||
content?: string;
|
||||
payoutAddress?: string;
|
||||
milestones?: string[];
|
||||
deadlineDuration?: string;
|
||||
}
|
||||
|
||||
export type KeyOfForm = keyof CreateFormErrors;
|
||||
|
@ -44,7 +43,6 @@ export const FIELD_NAME_MAP: { [key in KeyOfForm]: string } = {
|
|||
content: 'Details',
|
||||
payoutAddress: 'Payout address',
|
||||
milestones: 'Milestones',
|
||||
deadlineDuration: 'Funding deadline',
|
||||
};
|
||||
|
||||
const requiredFields = [
|
||||
|
@ -54,7 +52,6 @@ const requiredFields = [
|
|||
'target',
|
||||
'content',
|
||||
'payoutAddress',
|
||||
'deadlineDuration',
|
||||
];
|
||||
|
||||
export function getCreateErrors(
|
||||
|
@ -240,7 +237,6 @@ export function makeProposalPreviewFromDraft(draft: ProposalDraft): ProposalDeta
|
|||
dateCreated: Date.now() / 1000,
|
||||
datePublished: Date.now() / 1000,
|
||||
dateApproved: Date.now() / 1000,
|
||||
deadlineDuration: 86400 * 60,
|
||||
target: toZat(draft.target),
|
||||
funded: Zat('0'),
|
||||
contributionMatching: 0,
|
||||
|
|
|
@ -39,12 +39,12 @@ export interface ProposalDraft {
|
|||
stage: PROPOSAL_STAGE;
|
||||
target: string;
|
||||
payoutAddress: string;
|
||||
deadlineDuration: number;
|
||||
milestones: CreateMilestone[];
|
||||
team: User[];
|
||||
invites: TeamInvite[];
|
||||
status: STATUS;
|
||||
isStaked: boolean;
|
||||
deadlineDuration?: number;
|
||||
rfp?: RFP;
|
||||
rfpOptIn?: boolean;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue