Added ability to fetch beyond first 1000 txs
This commit is contained in:
parent
f8efd6d9a2
commit
841fae6a17
52
index.html
52
index.html
@ -1218,18 +1218,24 @@
|
|||||||
pagesData.params = params
|
pagesData.params = params
|
||||||
switch (pageId) {
|
switch (pageId) {
|
||||||
case 'search': {
|
case 'search': {
|
||||||
const { type, query, page = 1 } = params
|
let { type, query, page = 1 } = params
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case 'address':
|
case 'address':
|
||||||
try {
|
try {
|
||||||
|
page = parseInt(page)
|
||||||
if (floGlobals.query.string !== query) {
|
if (floGlobals.query.string !== query) {
|
||||||
checkBalance(query)
|
checkBalance(query)
|
||||||
fetchTransactions(query).then(() => {
|
fetchTransactions(query).then(() => {
|
||||||
filterFetchedTransactions()
|
filterFetchedTransactions()
|
||||||
render.paginatedTransactions(parseInt(page))
|
render.paginatedTransactions(page)
|
||||||
|
})
|
||||||
|
} else if (page % Math.ceil(1000 / txsPerPage) === 0 && floGlobals.query.transactions.length <= page * txsPerPage) {
|
||||||
|
fetchTransactions(query, true).then(() => {
|
||||||
|
filterFetchedTransactions()
|
||||||
|
render.paginatedTransactions(page)
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
render.paginatedTransactions(parseInt(page))
|
render.paginatedTransactions(page)
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
notify(err, 'error')
|
notify(err, 'error')
|
||||||
@ -1908,9 +1914,13 @@
|
|||||||
return clone
|
return clone
|
||||||
},
|
},
|
||||||
paginatedTransactions(page = 1) {
|
paginatedTransactions(page = 1) {
|
||||||
const startingIndex = ((page - 1) * 20)
|
|
||||||
const endingIndex = startingIndex + 20
|
|
||||||
const { transactions, string: address, filteredTransactions } = floGlobals.query
|
const { transactions, string: address, filteredTransactions } = floGlobals.query
|
||||||
|
let startingIndex = ((page - 1) * txsPerPage)
|
||||||
|
if (filteredTransactions && startingIndex > filteredTransactions.length) {
|
||||||
|
startingIndex = 0;
|
||||||
|
window.history.replaceState({}, '', `#/search?type=address&query=${address}&page=1`)
|
||||||
|
}
|
||||||
|
const endingIndex = startingIndex + txsPerPage
|
||||||
const renderedTransactions = (filteredTransactions || transactions)
|
const renderedTransactions = (filteredTransactions || transactions)
|
||||||
.slice(startingIndex, endingIndex)
|
.slice(startingIndex, endingIndex)
|
||||||
.map(transaction => render.transactionCard(transaction))
|
.map(transaction => render.transactionCard(transaction))
|
||||||
@ -1924,7 +1934,7 @@
|
|||||||
} else {
|
} else {
|
||||||
getRef('filter_selector').classList.add('hidden')
|
getRef('filter_selector').classList.add('hidden')
|
||||||
}
|
}
|
||||||
const paginationSegments = (filteredTransactions || transactions) ? Math.ceil((filteredTransactions || transactions).length / renderTransactions) : 0;
|
const paginationSegments = (filteredTransactions || transactions) ? Math.ceil((filteredTransactions || transactions).length / txsPerPage) : 0;
|
||||||
let pagination = []
|
let pagination = []
|
||||||
let startingPage = page - 2;
|
let startingPage = page - 2;
|
||||||
let showTill = page + 2;
|
let showTill = page + 2;
|
||||||
@ -2540,13 +2550,13 @@
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
let renderTransactions = 20;
|
|
||||||
floGlobals.query = {
|
floGlobals.query = {
|
||||||
transactions: [],
|
transactions: [],
|
||||||
string: '',
|
string: '',
|
||||||
|
filteredTransactions: null
|
||||||
}
|
}
|
||||||
async function fetchTransactions(address) {
|
const txsPerPage = 25;
|
||||||
|
async function fetchTransactions(address, loadOlder = false) {
|
||||||
try {
|
try {
|
||||||
renderElem(getRef('pagination_wrapper'), html``)
|
renderElem(getRef('pagination_wrapper'), html``)
|
||||||
renderElem(getRef('queried_address_transactions'), html`
|
renderElem(getRef('queried_address_transactions'), html`
|
||||||
@ -2555,10 +2565,24 @@
|
|||||||
<span>Loading transactions...</span>
|
<span>Loading transactions...</span>
|
||||||
</div>
|
</div>
|
||||||
`)
|
`)
|
||||||
const { items, lastItem, initItem } = await floWebWallet.listTransactions(address);
|
if (loadOlder) {
|
||||||
floGlobals.query.transactions = items;
|
const { items, initItem } = await floWebWallet.listTransactions.syncOld(address, floGlobals.query.initItem)
|
||||||
floGlobals.query.string = address;
|
floGlobals.query = {
|
||||||
floGlobals.query.filteredTransactions = null
|
transactions: [...items, ...floGlobals.query.transactions],
|
||||||
|
string: address,
|
||||||
|
initItem,
|
||||||
|
filteredTransactions: null
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
const { items, lastItem, initItem } = await floWebWallet.listTransactions(address)
|
||||||
|
floGlobals.query = {
|
||||||
|
transactions: items,
|
||||||
|
string: address,
|
||||||
|
lastItem,
|
||||||
|
initItem,
|
||||||
|
filteredTransactions: null
|
||||||
|
}
|
||||||
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
renderElem(getRef('queried_address_transactions'), html` <span>Failed to load transactions</span> `)
|
renderElem(getRef('queried_address_transactions'), html` <span>Failed to load transactions</span> `)
|
||||||
throw err;
|
throw err;
|
||||||
@ -2568,6 +2592,8 @@
|
|||||||
const filter = getRef('filter_selector').value;
|
const filter = getRef('filter_selector').value;
|
||||||
if (filter !== 'all') {
|
if (filter !== 'all') {
|
||||||
floGlobals.query.filteredTransactions = floGlobals.query.transactions.filter(t => filter === 'sent' ? t.sender === floGlobals.query.string : t.receiver === floGlobals.query.string)
|
floGlobals.query.filteredTransactions = floGlobals.query.transactions.filter(t => filter === 'sent' ? t.sender === floGlobals.query.string : t.receiver === floGlobals.query.string)
|
||||||
|
} else {
|
||||||
|
floGlobals.query.filteredTransactions = null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
async function processQuery() {
|
async function processQuery() {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user