Blockchain explorer for Ethereum based network and a tool for inspecting and analyzing EVM based blockchains.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
blockscout/apps/block_scout_web/assets/js/pages/address/logs.js

91 lines
2.4 KiB

import $ from 'jquery'
import omit from 'lodash/omit'
import humps from 'humps'
import { connectElements } from '../../lib/redux_helpers.js'
import { createAsyncLoadStore } from '../../lib/async_listing_load'
import '../address'
import { utils } from 'web3'
export const initialState = {
6 years ago
addressHash: null,
isSearch: false
}
export function reducer (state, action) {
6 years ago
switch (action.type) {
6 years ago
case 'PAGE_LOAD':
case 'ELEMENTS_LOAD': {
return Object.assign({}, state, omit(action, 'type'))
6 years ago
}
case 'START_SEARCH': {
5 years ago
return Object.assign({}, state, { pagesStack: [], isSearch: true })
6 years ago
}
default:
return state
6 years ago
}
}
const elements = {
'[data-search-field]': {
6 years ago
render ($el, state) {
return $el
6 years ago
}
},
'[data-search-button]': {
6 years ago
render ($el, state) {
return $el
6 years ago
}
},
'[data-cancel-search-button]': {
6 years ago
render ($el, state) {
if (!state.isSearch) {
return $el.hide()
}
return $el.show()
}
},
'[data-search]': {
render ($el, state) {
if (state.emptyResponse && !state.isSearch) {
return $el.hide()
}
6 years ago
return $el.show()
}
6 years ago
}
}
if ($('[data-page="address-logs"]').length) {
const store = createAsyncLoadStore(reducer, initialState, 'dataset.identifierLog')
6 years ago
const addressHash = $('[data-page="address-details"]')[0].dataset.pageAddressHash
const $element = $('[data-async-listing]')
6 years ago
connectElements({ store, elements })
6 years ago
store.dispatch({
type: 'PAGE_LOAD',
5 years ago
addressHash: addressHash
})
4 years ago
$element.on('click', '[data-search-button]', (_event) => {
6 years ago
store.dispatch({
type: 'START_SEARCH',
5 years ago
addressHash: addressHash
})
4 years ago
const topic = $('[data-search-field]').val()
const addressHashPlain = store.getState().addressHash
const addressHashChecksum = addressHashPlain && utils.toChecksumAddress(addressHashPlain)
4 years ago
const path = '/search-logs?topic=' + topic + '&address_id=' + addressHashChecksum
5 years ago
store.dispatch({ type: 'START_REQUEST' })
$.getJSON(path, { type: 'JSON' })
.done(response => store.dispatch(Object.assign({ type: 'ITEMS_FETCHED' }, humps.camelizeKeys(response))))
.fail(() => store.dispatch({ type: 'REQUEST_ERROR' }))
.always(() => store.dispatch({ type: 'FINISH_REQUEST' }))
6 years ago
})
4 years ago
$element.on('click', '[data-cancel-search-button]', (_event) => {
6 years ago
window.location.replace(window.location.href.split('?')[0])
})
}