Skip to content

Commit

Permalink
fix:
Browse files Browse the repository at this point in the history
update sponsor address as optional for both CPS and CPSTreasury
  • Loading branch information
sdpisreddevil committed Jan 25, 2024
1 parent f0847ca commit d5b1540
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 17 deletions.
26 changes: 15 additions & 11 deletions CPSCore/src/main/java/community/icon/cps/score/cpscore/CPSCore.java
Original file line number Diff line number Diff line change
Expand Up @@ -2610,12 +2610,13 @@ public void milestoneDbMigration(String ipfsHash) {

@Override
@External
public void updateContributor(String _ipfs_hash, Address _new_contributor, Address _new_sponsor) {
public void updateContributor(String _ipfs_hash, Address _new_contributor, @Optional Address _new_sponsor) {
validateAdmins();

Context.require(!_new_contributor.isContract(), TAG + ": Contract Address not supported.");
Map<String, Object> _proposal_details = getProposalDetails(_ipfs_hash);
String _proposal_status = (String) _proposal_details.get(STATUS);
Context.require(List.of(ACTIVE,PAUSED).contains(_proposal_status), TAG + ": Proposal must be in active or paused state.");
Context.require(List.of(ACTIVE, PAUSED).contains(_proposal_status), TAG + ": Proposal must be in active or paused state.");

// update contributor's address
Address _contributor_address = (Address) _proposal_details.get(CONTRIBUTOR_ADDRESS);
Expand All @@ -2625,18 +2626,21 @@ public void updateContributor(String _ipfs_hash, Address _new_contributor, Addre
contributorProjects.at(_new_contributor).add(_ipfs_hash);

// update sponsor's address
Address _sponsor_address = (Address) _proposal_details.get(SPONSOR_ADDRESS);
removeSponsor(_sponsor_address, _ipfs_hash);
// request update contributor address and sponsor address to cps treasury
if (_new_sponsor != null) {
Address _sponsor_address = (Address) _proposal_details.get(SPONSOR_ADDRESS);
removeSponsor(_sponsor_address, _ipfs_hash);

sponsors.add(_new_sponsor);
sponsorProjects.at(_new_sponsor).add(_ipfs_hash);
sponsors.add(_new_sponsor);
sponsorProjects.at(_new_sponsor).add(_ipfs_hash);

// request update contributor address and sponsor address to cps treasury
callScore(getCpsTreasuryScore(), "updateContributorSponsorAddress", _ipfs_hash, _new_contributor,_new_sponsor);
callScore(getCpsTreasuryScore(), "updateContributorSponsorAddress", _ipfs_hash, _new_contributor, _new_sponsor);
UpdateSponsorAddress(_sponsor_address, _new_sponsor);
} else {
callScore(getCpsTreasuryScore(), "updateContributorSponsorAddress", _ipfs_hash, _new_contributor);
UpdateContributorAddress(_contributor_address, _new_contributor);
}

// emit event
UpdateContributorAddress(_contributor_address, _new_contributor);
UpdateSponsorAddress(_sponsor_address, _new_sponsor);
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import score.*;
import score.annotation.EventLog;
import score.annotation.External;
import score.annotation.Optional;
import score.annotation.Payable;
import scorex.util.ArrayList;

Expand Down Expand Up @@ -604,14 +605,13 @@ public void updateNewProjects(String oldHash, String newHash, int milestoneCount
@Override
@External
public void updateContributorSponsorAddress(String _ipfs_key, Address _new_contributor_address,
Address _new_sponsor_address) {
@Optional Address _new_sponsor_address) {
validateCpsScore();
Context.require(proposalExists(_ipfs_key), TAG + ": This project not exists");

String prefix = proposalPrefix(_ipfs_key);
Map<String, ?> proposalData = getDataFromProposalDB(prefix);
Address contributorAddress = (Address) proposalData.get(consts.CONTRIBUTOR_ADDRESS);
Address sponsorAddress = (Address) proposalData.get(consts.SPONSOR_ADDRESS);

// remove
ArrayDBUtils.remove_array_item_string(contributorProjects.at(contributorAddress.toString()), _ipfs_key);
Expand All @@ -621,11 +621,14 @@ public void updateContributorSponsorAddress(String _ipfs_key, Address _new_contr
setContributorAddress(prefix, _new_contributor_address);

// remove
ArrayDBUtils.remove_array_item_string(sponsorProjects.at(sponsorAddress.toString()),_ipfs_key);
sponsorProjects.at(_new_sponsor_address.toString()).add(_ipfs_key);
if (_new_sponsor_address != null) {
Address sponsorAddress = (Address) proposalData.get(consts.SPONSOR_ADDRESS);
ArrayDBUtils.remove_array_item_string(sponsorProjects.at(sponsorAddress.toString()),_ipfs_key);
sponsorProjects.at(_new_sponsor_address.toString()).add(_ipfs_key);

// update sponsor address
setSponsorAddress(prefix, _new_sponsor_address);
// update sponsor address
setSponsorAddress(prefix, _new_sponsor_address);
}
}

public <T> T callScore(Class<T> t, Address address, String method, Object... params) {
Expand Down

0 comments on commit d5b1540

Please sign in to comment.