Align contract event log l&f with transactions (#2812)

* Event into own component, align with transactions

* Pass value & type through from event log params

* Reformat display columns
This commit is contained in:
Jaco Greeff
2016-10-25 16:02:12 +02:00
committed by GitHub
parent 8d0cff3599
commit 7eacf07629
12 changed files with 272 additions and 109 deletions

View File

@@ -110,6 +110,10 @@ export default class Events extends Component {
logToEvent = (log) => {
log.key = api.util.sha3(JSON.stringify(log));
log.params = Object.keys(log.params).reduce((params, name) => {
params[name] = log.params[name].value;
return params;
}, {});
return log;
}

View File

@@ -114,6 +114,10 @@ export default class Events extends Component {
logToEvent = (log) => {
log.key = api.util.sha3(JSON.stringify(log));
log.params = Object.keys(log.params).reduce((params, name) => {
params[name] = log.params[name].value;
return params;
}, {});
return log;
}
@@ -139,7 +143,6 @@ export default class Events extends Component {
.concat(pendingEvents)
.filter((log) => !minedNew.find((event) => event.transactionHash === log.transactionHash));
const events = [].concat(pendingNew).concat(minedNew);
console.log('*** events', events.map((event) => event.address));
this.setState({ loading: false, events, minedEvents: minedNew, pendingEvents: pendingNew });
}
}

View File

@@ -106,7 +106,10 @@ export default class Events extends Component {
logIndex,
transactionHash,
transactionIndex,
params,
params: Object.keys(params).reduce((data, name) => {
data[name] = params[name].value;
return data;
}, {}),
key
};
};

View File

@@ -48,9 +48,9 @@ const renderEvent = (classNames, verb) => (e, accounts, contacts) => {
return (
<tr key={ e.key } className={ classes }>
<td>{ renderAddress(e.parameters.owner, accounts, contacts) }</td>
<td>{ renderAddress(e.parameters.owner.value, accounts, contacts) }</td>
<td><abbr title={ e.transaction }>{ verb }</abbr></td>
<td><code>{ renderHash(bytesToHex(e.parameters.name)) }</code></td>
<td><code>{ renderHash(bytesToHex(e.parameters.name.value)) }</code></td>
<td>{ renderStatus(e.timestamp, e.state === 'pending') }</td>
</tr>
);
@@ -64,10 +64,10 @@ const renderDataChanged = (e, accounts, contacts) => {
return (
<tr key={ e.key } className={ classNames }>
<td>{ renderAddress(e.parameters.owner, accounts, contacts) }</td>
<td>{ renderAddress(e.parameters.owner.value, accounts, contacts) }</td>
<td><abbr title={ e.transaction }>updated</abbr></td>
<td>
key <code>{ new Buffer(e.parameters.plainKey).toString('utf8') }</code> of <code>{ renderHash(bytesToHex(e.parameters.name)) }</code>
key <code>{ new Buffer(e.parameters.plainKey.value).toString('utf8') }</code> of <code>{ renderHash(bytesToHex(e.parameters.name.value)) }</code>
</td>
<td>{ renderStatus(e.timestamp, e.state === 'pending') }</td>
</tr>

View File

@@ -30,7 +30,10 @@ const logToEvent = (log) => {
logIndex,
transactionHash,
transactionIndex,
params,
params: Object.keys(params).reduce((data, name) => {
data[name] = params[name].value;
return data;
}, {}),
key
};
};

View File

@@ -148,27 +148,27 @@ export const subscribeEvents = () => (dispatch, getState) => {
return dispatch(setTokenData(params.id.toNumber(), {
tla: '...',
base: -1,
address: params.addr,
name: params.name,
address: params.addr.value,
name: params.name.value,
isPending: true
}));
}
if (event === 'Registered' && type === 'mined') {
return dispatch(loadToken(params.id.toNumber()));
return dispatch(loadToken(params.id.value.toNumber()));
}
if (event === 'Unregistered' && type === 'pending') {
return dispatch(setTokenPending(params.id.toNumber(), true));
return dispatch(setTokenPending(params.id.value.toNumber(), true));
}
if (event === 'Unregistered' && type === 'mined') {
return dispatch(deleteToken(params.id.toNumber()));
return dispatch(deleteToken(params.id.value.toNumber()));
}
if (event === 'MetaChanged' && type === 'pending') {
return dispatch(setTokenData(
params.id.toNumber(),
params.id.value.toNumber(),
{ metaPending: true, metaMined: false }
));
}
@@ -176,13 +176,13 @@ export const subscribeEvents = () => (dispatch, getState) => {
if (event === 'MetaChanged' && type === 'mined') {
setTimeout(() => {
dispatch(setTokenData(
params.id.toNumber(),
params.id.value.toNumber(),
{ metaPending: false, metaMined: false }
));
}, 5000);
return dispatch(setTokenData(
params.id.toNumber(),
params.id.value.toNumber(),
{ metaPending: false, metaMined: true }
));
}