From 2a240b5d596c71d3212b67b0d04c960ba177aabf Mon Sep 17 00:00:00 2001 From: Alexander Drozdov Date: Fri, 30 Apr 2021 22:43:43 +0300 Subject: [PATCH] use new "collapse" filter --- src/web/price-check/trade/TradeListing.vue | 68 +------------------ .../price-check/trade/pathofexile-trade.ts | 4 +- 2 files changed, 4 insertions(+), 68 deletions(-) diff --git a/src/web/price-check/trade/TradeListing.vue b/src/web/price-check/trade/TradeListing.vue index 729102f0..6e66bb9b 100644 --- a/src/web/price-check/trade/TradeListing.vue +++ b/src/web/price-check/trade/TradeListing.vue @@ -75,7 +75,7 @@ *** - {{ result.priceAmount }} {{ result.priceCurrency }} × {{ result.listedTimes }} + {{ result.priceAmount }} {{ result.priceCurrency }} {{ result.stackSize }} {{ result.itemLevel }} {{ result.level }} @@ -124,9 +124,6 @@ import { artificialSlowdown } from './artificial-slowdown' const slowdown = artificialSlowdown(900) const SHOW_RESULTS = 20 -const API_FETCH_LIMIT = 100 -const MIN_NOT_GROUPED = 7 -const MIN_GROUPED = 10 function useTradeApi () { let searchId = 0 @@ -134,46 +131,8 @@ function useTradeApi () { const searchResult = shallowRef(null) const fetchResults = shallowRef([]) - const groupedResults = computed(() => { - const out: Array = [] - - for (const result of fetchResults.value) { - if (result == null) break - - if (out.length === 0) { - out.push({ listedTimes: 1, ...result }) - continue - } - - const existingRes = out.find((added, idx) => - ( - added.accountName === result.accountName && - added.priceCurrency === result.priceCurrency && - added.priceAmount === result.priceAmount - ) || - ( - added.accountName === result.accountName && - (out.length - idx) <= 2 // last or prev - ) - ) - if (existingRes) { - if (existingRes.stackSize) { - existingRes.stackSize += result.stackSize! - } else { - existingRes.listedTimes += 1 - } - } else { - out.push({ listedTimes: 1, ...result }) - } - } - - return out - }) - async function search (filters: ItemFilters, stats: StatFilter[], item: ParsedItem) { try { - // NOTE: rate limiting https://www.pathofexile.com/forum/view-thread/2079853#p15244273 - searchId += 1 error.value = null searchResult.value = null @@ -188,7 +147,6 @@ function useTradeApi () { } searchResult.value = _searchResult - // first two req are parallel, then sequential on demand { const r1 = (_searchResult.total > 0) ? requestResults(_searchResult.id, _searchResult.result.slice(0, 10)) @@ -201,34 +159,12 @@ function useTradeApi () { : Promise.resolve() await Promise.all([r1, r2]) } - - let fetched = 20 - async function fetchMore (): Promise { - if (_searchId !== searchId) return - - const totalGrouped = groupedResults.value.length - const totalNotGrouped = groupedResults.value.reduce((len, res) => - res.listedTimes <= 2 ? len + 1 : len, 0) - - if ( - (totalNotGrouped < MIN_NOT_GROUPED || totalGrouped < MIN_GROUPED) && - fetched < _searchResult.total && - fetched < API_FETCH_LIMIT - ) { - await requestResults(_searchResult.id, _searchResult.result.slice(fetched, fetched + 10)) - .then(results => { _fetchResults.push(...results) }) - - fetched += 10 - return fetchMore() - } - } - return fetchMore() } catch (err) { error.value = err.message } } - return { error, searchResult, fetchResults, groupedResults, search } + return { error, searchResult, groupedResults: fetchResults, search } } export default defineComponent({ diff --git a/src/web/price-check/trade/pathofexile-trade.ts b/src/web/price-check/trade/pathofexile-trade.ts index f1e7894c..aad8613f 100644 --- a/src/web/price-check/trade/pathofexile-trade.ts +++ b/src/web/price-check/trade/pathofexile-trade.ts @@ -168,7 +168,7 @@ interface TradeRequest { /* eslint-disable camelcase */ } trade_filters: { filters: { - sale_type: { option: 'priced' } + collapse?: FilterBoolean indexed?: { option?: string } price?: FilterRange | { option?: string } } @@ -230,7 +230,7 @@ export function createTradeRequest (filters: ItemFilters, stats: StatFilter[], i filters: { trade_filters: { filters: { - sale_type: { option: 'priced' } + collapse: { option: 'true' } } } }