Cleanup
we do not support claiming/withdrawal yet.
This commit is contained in:
parent
1f248812a7
commit
19f212f283
@ -7,17 +7,10 @@ contract Reimbursement is AragonApp {
|
|||||||
bytes32 public constant ADD_REIMBURSEMENT_ROLE = keccak256("ADD_REIMBURSEMENT_ROLE");
|
bytes32 public constant ADD_REIMBURSEMENT_ROLE = keccak256("ADD_REIMBURSEMENT_ROLE");
|
||||||
bytes32 public constant VETO_REIMBURSEMENT_ROLE = keccak256("VETO_REIMBURSEMENT_ROLE");
|
bytes32 public constant VETO_REIMBURSEMENT_ROLE = keccak256("VETO_REIMBURSEMENT_ROLE");
|
||||||
|
|
||||||
bytes32 public constant KERNEL_APP_ADDR_NAMESPACE = 0xd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb;
|
|
||||||
|
|
||||||
// ensure alphabetic order
|
|
||||||
enum Apps { Contribution, Contributor, Proposal, Reimbursement, Token }
|
|
||||||
bytes32[5] public appIds;
|
|
||||||
|
|
||||||
struct ReimbursementData {
|
struct ReimbursementData {
|
||||||
address recipient;
|
address recipient;
|
||||||
uint256 amount;
|
uint256 amount;
|
||||||
address token;
|
address token;
|
||||||
bool claimed;
|
|
||||||
bytes32 hashDigest;
|
bytes32 hashDigest;
|
||||||
uint8 hashFunction;
|
uint8 hashFunction;
|
||||||
uint8 hashSize;
|
uint8 hashSize;
|
||||||
@ -32,20 +25,15 @@ contract Reimbursement is AragonApp {
|
|||||||
uint32 public blocksToWait;
|
uint32 public blocksToWait;
|
||||||
|
|
||||||
event ReimbursementAdded(uint32 id, address indexed addedByAccount, uint256 amount);
|
event ReimbursementAdded(uint32 id, address indexed addedByAccount, uint256 amount);
|
||||||
event ReimbursementClaimed(uint32 id, uint256 amount);
|
|
||||||
event ReimbursementVetoed(uint32 id, address vetoedByAccount);
|
event ReimbursementVetoed(uint32 id, address vetoedByAccount);
|
||||||
|
|
||||||
|
// TODO: remove _appIds when those are removed from the kreditskit
|
||||||
|
// using the appids to find other apps is wrong according to aragon
|
||||||
function initialize(bytes32[5] _appIds) public onlyInit {
|
function initialize(bytes32[5] _appIds) public onlyInit {
|
||||||
appIds = _appIds;
|
|
||||||
blocksToWait = 40320; // 7 days; 15 seconds block time
|
blocksToWait = 40320; // 7 days; 15 seconds block time
|
||||||
initialized();
|
initialized();
|
||||||
}
|
}
|
||||||
|
|
||||||
function getContract(uint8 appId) public view returns (address) {
|
|
||||||
IKernel k = IKernel(kernel());
|
|
||||||
return k.getApp(KERNEL_APP_ADDR_NAMESPACE, appIds[appId]);
|
|
||||||
}
|
|
||||||
|
|
||||||
function totalAmount(bool confirmedOnly) public view returns (uint256 amount) {
|
function totalAmount(bool confirmedOnly) public view returns (uint256 amount) {
|
||||||
for (uint32 i = 1; i <= reimbursementsCount; i++) {
|
for (uint32 i = 1; i <= reimbursementsCount; i++) {
|
||||||
ReimbursementData memory r = reimbursements[i];
|
ReimbursementData memory r = reimbursements[i];
|
||||||
@ -55,7 +43,7 @@ contract Reimbursement is AragonApp {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function get(uint32 reimbursementId) public view returns (uint32 id, address recipient, uint256 amount, address token, bool claimed, bytes32 hashDigest, uint8 hashFunction, uint8 hashSize, uint256 confirmedAtBlock, bool exists, bool vetoed) {
|
function get(uint32 reimbursementId) public view returns (uint32 id, address recipient, uint256 amount, address token, bytes32 hashDigest, uint8 hashFunction, uint8 hashSize, uint256 confirmedAtBlock, bool exists, bool vetoed) {
|
||||||
id = reimbursementId;
|
id = reimbursementId;
|
||||||
ReimbursementData storage r = reimbursements[id];
|
ReimbursementData storage r = reimbursements[id];
|
||||||
return (
|
return (
|
||||||
@ -63,7 +51,6 @@ contract Reimbursement is AragonApp {
|
|||||||
r.recipient,
|
r.recipient,
|
||||||
r.amount,
|
r.amount,
|
||||||
r.token,
|
r.token,
|
||||||
r.claimed,
|
|
||||||
r.hashDigest,
|
r.hashDigest,
|
||||||
r.hashFunction,
|
r.hashFunction,
|
||||||
r.hashSize,
|
r.hashSize,
|
||||||
@ -79,7 +66,6 @@ contract Reimbursement is AragonApp {
|
|||||||
r.exists = true;
|
r.exists = true;
|
||||||
r.amount = amount;
|
r.amount = amount;
|
||||||
r.token = token;
|
r.token = token;
|
||||||
r.claimed = false;
|
|
||||||
r.hashDigest = hashDigest;
|
r.hashDigest = hashDigest;
|
||||||
r.hashFunction = hashFunction;
|
r.hashFunction = hashFunction;
|
||||||
r.hashSize = hashSize;
|
r.hashSize = hashSize;
|
||||||
@ -93,26 +79,12 @@ contract Reimbursement is AragonApp {
|
|||||||
function veto(uint32 reimbursementId) public isInitialized auth(VETO_REIMBURSEMENT_ROLE) {
|
function veto(uint32 reimbursementId) public isInitialized auth(VETO_REIMBURSEMENT_ROLE) {
|
||||||
ReimbursementData storage r = reimbursements[reimbursementId];
|
ReimbursementData storage r = reimbursements[reimbursementId];
|
||||||
require(r.exists, 'NOT_FOUND');
|
require(r.exists, 'NOT_FOUND');
|
||||||
require(!r.claimed, 'ALREADY_CLAIMED');
|
|
||||||
require(block.number < r.confirmedAtBlock, 'VETO_PERIOD_ENDED');
|
require(block.number < r.confirmedAtBlock, 'VETO_PERIOD_ENDED');
|
||||||
r.vetoed = true;
|
r.vetoed = true;
|
||||||
|
|
||||||
emit ReimbursementVetoed(reimbursementId, msg.sender);
|
emit ReimbursementVetoed(reimbursementId, msg.sender);
|
||||||
}
|
}
|
||||||
|
|
||||||
function claim(uint32 reimbursementId) public isInitialized {
|
|
||||||
ReimbursementData storage r = reimbursements[reimbursementId];
|
|
||||||
require(r.exists, 'NOT_FOUND');
|
|
||||||
require(!r.claimed, 'ALREADY_CLAIMED');
|
|
||||||
require(!r.vetoed, 'VETOED');
|
|
||||||
require(block.number >= r.confirmedAtBlock, 'NOT_CLAIMABLE');
|
|
||||||
|
|
||||||
r.claimed = true;
|
|
||||||
// TODO
|
|
||||||
// transfer using vault
|
|
||||||
emit ReimbursementClaimed(reimbursementId, r.amount);
|
|
||||||
}
|
|
||||||
|
|
||||||
function exists(uint32 reimbursementId) public view returns (bool) {
|
function exists(uint32 reimbursementId) public view returns (bool) {
|
||||||
return reimbursements[reimbursementId].exists;
|
return reimbursements[reimbursementId].exists;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user