// Copyright 2017-2019 @polkadot/app-explorer authors & contributors // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. import { I18nProps } from '@polkadot/ui-app/types'; import React from 'react'; import { EventRecord } from '@polkadot/types'; import { Event as EventDisplay } from '@polkadot/ui-app'; import { formatNumber } from '@polkadot/util'; import translate from './translate'; type Props = I18nProps & { value?: Array, emptyLabel?: React.ReactNode, eventClassName?: string, withoutIndex?: boolean }; class Events extends React.PureComponent { render () { const { emptyLabel, eventClassName, value, t } = this.props; if (!value || value.length === 0) { return emptyLabel || t('no events available'); } return value .filter(({ event }) => event) // event.section !== 'system') .map((event, index) => { const rendered = this.renderEvent(event, index); return eventClassName ? (
{rendered}
) : rendered; }); } private renderEvent = ({ event, phase }: EventRecord, index: number) => { const { withoutIndex } = this.props; const extIndex = !withoutIndex && phase.type === 'ApplyExtrinsic' ? phase.asApplyExtrinsic : -1; if (!event.method || !event.section) { return null; } return (

{event.section}.{event.method} { extIndex !== -1 ? `(#${formatNumber(extIndex)})` : '' }

{ event.meta && event.meta.documentation ? event.meta.documentation.join(' ') : 'Details' }
); } } export default translate(Events);