Add specific URL validation for proposal links

Since all proposals should be created in GitHub, and we have URL
redirects in place in case we switch platforms in the future, enforce
proposal links to utilize the specific URL redirect.

Resolves #2473
This commit is contained in:
Devin Bileck 2019-04-12 12:05:47 -07:00
parent 813365df1e
commit 3bc76cacaf
No known key found for this signature in database
GPG key ID: 38750B26EA8B8C93
2 changed files with 17 additions and 5 deletions

View file

@ -1715,8 +1715,8 @@ dao.proposal.create.publishing=Proposal publishing is in progress ...
dao.proposal=proposal
dao.proposal.display.type=Proposal type
dao.proposal.display.name=Name/nickname
dao.proposal.display.link=Link to detail info
dao.proposal.display.link.prompt=Link to GitHub issue
dao.proposal.display.link=Link to detailed info
dao.proposal.display.link.prompt=Link to proposal
dao.proposal.display.requestedBsq=Requested amount in BSQ
dao.proposal.display.bsqAddress=BSQ address
dao.proposal.display.txId=Proposal transaction ID

View file

@ -29,6 +29,7 @@ import bisq.desktop.util.FormBuilder;
import bisq.desktop.util.GUIUtil;
import bisq.desktop.util.Layout;
import bisq.desktop.util.validation.BsqValidator;
import bisq.desktop.util.validation.RegexValidator;
import bisq.core.btc.BaseCurrencyNetwork;
import bisq.core.dao.DaoFacade;
@ -58,7 +59,6 @@ import bisq.core.locale.Res;
import bisq.core.user.Preferences;
import bisq.core.util.BsqFormatter;
import bisq.core.util.validation.InputValidator;
import bisq.core.util.validation.UrlInputValidator;
import bisq.asset.Asset;
@ -230,8 +230,20 @@ public class ProposalDisplay {
linkInputTextField = addInputTextField(gridPane, ++gridRow,
Res.get("dao.proposal.display.link"));
linkInputTextField.setPromptText(Res.get("dao.proposal.display.link.prompt"));
if (isMakeProposalScreen)
linkInputTextField.setValidator(new UrlInputValidator());
if (isMakeProposalScreen) {
RegexValidator validator = new RegexValidator();
if (proposalType == ProposalType.COMPENSATION_REQUEST) {
validator.setPattern("https://bisq.network/compensation/\\d+");
linkInputTextField.setText("https://bisq.network/compensation/#");
} else if (proposalType == ProposalType.REIMBURSEMENT_REQUEST) {
validator.setPattern("https://bisq.network/reimbursement/\\d+");
linkInputTextField.setText("https://bisq.network/reimbursement/#");
} else {
validator.setPattern("https://bisq.network/proposals/\\d+");
linkInputTextField.setText("https://bisq.network/proposals/#");
}
linkInputTextField.setValidator(validator);
}
inputControls.add(linkInputTextField);
Tuple3<Label, HyperlinkWithIcon, VBox> tuple = addTopLabelHyperlinkWithIcon(gridPane, gridRow,