Use contributorId instead or address for reimbursements

This commit is contained in:
bumi 2020-06-12 00:29:59 +02:00
parent 9b4a95f375
commit 2c567fa71a
5 changed files with 16 additions and 13 deletions

View File

@ -8,7 +8,8 @@ contract Reimbursement is AragonApp {
bytes32 public constant VETO_REIMBURSEMENT_ROLE = keccak256("VETO_REIMBURSEMENT_ROLE"); bytes32 public constant VETO_REIMBURSEMENT_ROLE = keccak256("VETO_REIMBURSEMENT_ROLE");
struct ReimbursementData { struct ReimbursementData {
address recipient; address requestedBy;
uint32 contributorId;
uint256 amount; uint256 amount;
address token; address token;
bytes32 hashDigest; bytes32 hashDigest;
@ -43,12 +44,13 @@ contract Reimbursement is AragonApp {
} }
} }
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) { function get(uint32 reimbursementId) public view returns (uint32 id, address requestedBy, uint32 contributorId, 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 (
id, id,
r.recipient, r.requestedBy,
r.contributorId,
r.amount, r.amount,
r.token, r.token,
r.hashDigest, r.hashDigest,
@ -60,13 +62,14 @@ contract Reimbursement is AragonApp {
); );
} }
function add(uint256 amount, address token, address recipient, bytes32 hashDigest, uint8 hashFunction, uint8 hashSize) public isInitialized auth(ADD_REIMBURSEMENT_ROLE) { function add(uint256 amount, address token, uint32 contributorId, bytes32 hashDigest, uint8 hashFunction, uint8 hashSize) public isInitialized auth(ADD_REIMBURSEMENT_ROLE) {
uint32 reimbursementId = reimbursementsCount + 1; uint32 reimbursementId = reimbursementsCount + 1;
ReimbursementData storage r = reimbursements[reimbursementId]; ReimbursementData storage r = reimbursements[reimbursementId];
r.requestedBy = msg.sender;
r.exists = true; r.exists = true;
r.amount = amount; r.amount = amount;
r.token = token; r.token = token;
r.recipient = recipient; r.contributorId = contributorId;
r.hashDigest = hashDigest; r.hashDigest = hashDigest;
r.hashFunction = hashFunction; r.hashFunction = hashFunction;
r.hashSize = hashSize; r.hashSize = hashSize;

View File

@ -39,8 +39,8 @@ const contractCalls = [
['Contribution', 'add', [{ contributorId: 2, contributorIpfsHash: 'QmcHzEeAM26HV2zHTf5HnZrCtCtGdEccL5kUtDakAB7ozB', date: '2019-04-11', amount: 1500, kind: 'dev', description: '[67P/kredits-web] Reviewed stuff', url: '' }, { gasLimit: 350000 }]], ['Contribution', 'add', [{ contributorId: 2, contributorIpfsHash: 'QmcHzEeAM26HV2zHTf5HnZrCtCtGdEccL5kUtDakAB7ozB', date: '2019-04-11', amount: 1500, kind: 'dev', description: '[67P/kredits-web] Reviewed stuff', url: '' }, { gasLimit: 350000 }]],
['Contribution', 'claim', [1, { gasLimit: 300000 }]], ['Contribution', 'claim', [1, { gasLimit: 300000 }]],
['Reimbursement', 'add', [{amount: 100, recipient: '0x7e8f313c56f809188313aa274fa67ee58c31515d', token: '0xa3048576e296207eb0141f2803590ad044f81928', expenses: [{title: 'Server Hosting', description: 'All the serverz', amount: 100, currency: 'EUR', date: '2020-05-28'}]}, { gasLimit: 300000 }]], ['Reimbursement', 'add', [{amount: 100, contributorId: 1, token: '0xa3048576e296207eb0141f2803590ad044f81928', expenses: [{title: 'Server Hosting', description: 'All the serverz', amount: 100, currency: 'EUR', date: '2020-05-28'}]}, { gasLimit: 300000 }]],
['Reimbursement', 'add', [{amount: 10, recipient: '0xa502eb4021f3b9ab62f75b57a94e1cfbf81fd827', token: '0xa3048576e296207eb0141f2803590ad044f81928', expenses: [{title: 'Domain', description: 'All the domain', amount: 10, currency: 'EUR', date: '2020-05-28'}]}, { gasLimit: 300000 }]], ['Reimbursement', 'add', [{amount: 10, contributorId: 1, token: '0xa3048576e296207eb0141f2803590ad044f81928', expenses: [{title: 'Domain', description: 'All the domain', amount: 10, currency: 'EUR', date: '2020-05-28'}]}, { gasLimit: 300000 }]],
]; ];
const funds = [ const funds = [

File diff suppressed because one or more lines are too long

View File

@ -23,10 +23,10 @@ class Reimbursement extends Record {
async add (attrs, callOptions = {}) { async add (attrs, callOptions = {}) {
const amount = parseInt(attrs.amount); const amount = parseInt(attrs.amount);
const token = attrs.token; const token = attrs.token;
const recipient = attrs.recipient; const contributorId = attrs.contributorId;
const expenses = attrs.expenses.map( e => new ExpenseSerializer(e) ); const expenses = attrs.expenses.map( e => new ExpenseSerializer(e) );
if (!amount > 0 || !token || token === '' || !recipient || recipient === '' || !expenses.length > 0) { if (!amount > 0 || !token || token === '' || !contributorId || contributorId === '' || !expenses.length > 0) {
return Promise.reject(new Error('Invalid data. amount, token, expenses is required.')); return Promise.reject(new Error('Invalid data. amount, token, expenses is required.'));
} }
@ -39,7 +39,7 @@ class Reimbursement extends Record {
const reimbursement = [ const reimbursement = [
amount, amount,
token, token,
recipient, contributorId,
ipfsHashAttr.hashDigest, ipfsHashAttr.hashDigest,
ipfsHashAttr.hashFunction, ipfsHashAttr.hashFunction,
ipfsHashAttr.hashSize, ipfsHashAttr.hashSize,

View File

@ -15,7 +15,7 @@ module.exports = async function(callback) {
console.log(`Using Reimbursement at: ${kredits.Reimbursement.contract.address}`); console.log(`Using Reimbursement at: ${kredits.Reimbursement.contract.address}`);
const table = new Table({ const table = new Table({
head: ['ID', 'Amount', 'Token', 'Recipent', 'Confirmed?', 'Vetoed?', 'IPFS', 'Expenses'] head: ['ID', 'Amount', 'Token', 'ContributorId', 'Confirmed?', 'Vetoed?', 'IPFS', 'Expenses']
}) })
try { try {
@ -31,7 +31,7 @@ module.exports = async function(callback) {
r.id.toString(), r.id.toString(),
r.amount.toString(), r.amount.toString(),
`${r.token}`, `${r.token}`,
`${r.recipient}`, `${r.contributorId}`,
`${confirmed}`, `${confirmed}`,
`${r.vetoed}`, `${r.vetoed}`,
`${r.ipfsHash}`, `${r.ipfsHash}`,