From a6337c76bfb12e749c196e286f7401d7a3a7602b Mon Sep 17 00:00:00 2001 From: Alexander Drozdov Date: Thu, 23 Sep 2021 18:21:12 +0300 Subject: [PATCH] make functions more pure --- .../filters/create-item-filters.ts | 4 +++- src/web/price-check/filters/interfaces.ts | 2 ++ src/web/price-check/trade/TradeBulk.vue | 2 +- src/web/price-check/trade/TradeListing.vue | 6 ++--- src/web/price-check/trade/pathofexile-bulk.ts | 9 ++++--- .../price-check/trade/pathofexile-trade.ts | 24 +++++++++---------- 6 files changed, 27 insertions(+), 20 deletions(-) diff --git a/src/web/price-check/filters/create-item-filters.ts b/src/web/price-check/filters/create-item-filters.ts index 3a70b3ee..f4dec500 100644 --- a/src/web/price-check/filters/create-item-filters.ts +++ b/src/web/price-check/filters/create-item-filters.ts @@ -15,7 +15,9 @@ export function createFilters (item: ParsedItem): ItemFilters { trade: { offline: false, listed: undefined, - league: league.value! + league: league.value!, + chaosPriceThreshold: cfg.chaosPriceThreshold, + collapseListings: cfg.collapseListings } } diff --git a/src/web/price-check/filters/interfaces.ts b/src/web/price-check/filters/interfaces.ts index 83f840cb..16222e4f 100644 --- a/src/web/price-check/filters/interfaces.ts +++ b/src/web/price-check/filters/interfaces.ts @@ -67,6 +67,8 @@ export interface ItemFilters { offline: boolean listed: string | undefined league: string + chaosPriceThreshold: number + collapseListings: 'api' | 'app' } } diff --git a/src/web/price-check/trade/TradeBulk.vue b/src/web/price-check/trade/TradeBulk.vue index b1644e7d..4f3669c9 100644 --- a/src/web/price-check/trade/TradeBulk.vue +++ b/src/web/price-check/trade/TradeBulk.vue @@ -147,7 +147,7 @@ function useBulkApi () { ;(async function () { try { requested = true - items.value = await requestResults(query.queryId, query.listedIds.slice(0, 20)) + items.value = await requestResults(query.queryId, query.listedIds.slice(0, 20), { accountName: Config.store.accountName }) } catch (err) { error.value = (err as Error).message } diff --git a/src/web/price-check/trade/TradeListing.vue b/src/web/price-check/trade/TradeListing.vue index 4a157354..0ea603da 100644 --- a/src/web/price-check/trade/TradeListing.vue +++ b/src/web/price-check/trade/TradeListing.vue @@ -185,11 +185,11 @@ function useTradeApi () { // first two req are parallel, then sequential on demand { const r1 = (_searchResult.result.length > 0) - ? requestResults(_searchResult.id, _searchResult.result.slice(0, 10)) + ? requestResults(_searchResult.id, _searchResult.result.slice(0, 10), { accountName: Config.store.accountName }) .then(results => { _fetchResults.push(...results) }) : Promise.resolve() const r2 = (_searchResult.result.length > 10) - ? requestResults(_searchResult.id, _searchResult.result.slice(10, 20)) + ? requestResults(_searchResult.id, _searchResult.result.slice(10, 20), { accountName: Config.store.accountName }) .then(results => r1 .then(() => { _fetchResults.push(...results) })) : Promise.resolve() @@ -207,7 +207,7 @@ function useTradeApi () { fetched < _searchResult.total && fetched < API_FETCH_LIMIT ) { - await requestResults(_searchResult.id, _searchResult.result.slice(fetched, fetched + 10)) + await requestResults(_searchResult.id, _searchResult.result.slice(fetched, fetched + 10), { accountName: Config.store.accountName }) .then(results => { _fetchResults.push(...results) }) fetched += 10 return fetchMore() diff --git a/src/web/price-check/trade/pathofexile-bulk.ts b/src/web/price-check/trade/pathofexile-bulk.ts index 75cbc46d..1b0c59f2 100644 --- a/src/web/price-check/trade/pathofexile-bulk.ts +++ b/src/web/price-check/trade/pathofexile-bulk.ts @@ -5,7 +5,6 @@ import { RateLimiter } from './RateLimiter' import { ItemFilters } from '../filters/interfaces' import { ParsedItem } from '@/parser' import { Cache } from './Cache' -import { Config } from '@/web/Config' interface TradeRequest { /* eslint-disable camelcase */ exchange: { @@ -80,7 +79,11 @@ async function requestTradeResultList (body: TradeRequest): Promise { +export async function requestResults ( + queryId: string, + resultIds: string[], + opts: { accountName: string } +): Promise { interface ResponseT { result: FetchResult[], error: SearchResult['error'] } let data = cache.get(resultIds) @@ -107,7 +110,7 @@ export async function requestResults (queryId: string, resultIds: string[]): Pro exchangeAmount: result.listing.price.exchange.amount, itemAmount: result.listing.price.item.amount, stock: result.listing.price.item.stock, - isMine: (result.listing.account.name === Config.store.accountName), + isMine: (result.listing.account.name === opts.accountName), ign: result.listing.account.lastCharacterName, accountName: result.listing.account.name, accountStatus: result.listing.account.online diff --git a/src/web/price-check/trade/pathofexile-trade.ts b/src/web/price-check/trade/pathofexile-trade.ts index 8f12a9dc..6094cde4 100644 --- a/src/web/price-check/trade/pathofexile-trade.ts +++ b/src/web/price-check/trade/pathofexile-trade.ts @@ -5,8 +5,6 @@ import { MainProcess } from '@/ipc/main-process-bindings' import { SearchResult, Account, getTradeEndpoint, adjustRateLimits, RATE_LIMIT_RULES, preventQueueCreation } from './common' import { STAT_BY_REF, TRANSLATED_ITEM_NAME_BY_REF } from '@/assets/data' import { RateLimiter } from './RateLimiter' -import { Config } from '@/web/Config' -import { PriceCheckWidget } from '@/web/overlay/interfaces' import { ModifierType } from '@/parser/modifiers' import { Cache } from './Cache' @@ -236,14 +234,12 @@ export function createTradeRequest (filters: ItemFilters, stats: StatFilter[], i } const { query } = body - { - const cfg = Config.store.widgets.find(w => w.wmType === 'price-check') as PriceCheckWidget - if (cfg.chaosPriceThreshold !== 0) { - prop.set(query.filters, 'trade_filters.filters.price.min', cfg.chaosPriceThreshold) - } - if (cfg.collapseListings === 'api') { - prop.set(query.filters, 'trade_filters.filters.collapse.option', String(true)) - } + if (filters.trade.chaosPriceThreshold !== 0) { + prop.set(query.filters, 'trade_filters.filters.price.min', filters.trade.chaosPriceThreshold) + } + + if (filters.trade.collapseListings === 'api') { + prop.set(query.filters, 'trade_filters.filters.collapse.option', String(true)) } if (filters.trade.listed) { @@ -541,7 +537,11 @@ export async function requestTradeResultList (body: TradeRequest, leagueId: stri return data } -export async function requestResults (queryId: string, resultIds: string[]): Promise { +export async function requestResults ( + queryId: string, + resultIds: string[], + opts: { accountName: string } +): Promise { interface ResponseT { result: FetchResult[], error: SearchResult['error'] } let data = cache.get(resultIds) @@ -572,7 +572,7 @@ export async function requestResults (queryId: string, resultIds: string[]): Pro listedAt: result.listing.indexed, priceAmount: result.listing.price?.amount ?? 0, priceCurrency: result.listing.price?.currency ?? 'no price', - isMine: (result.listing.account.name === Config.store.accountName), + isMine: (result.listing.account.name === opts.accountName), ign: result.listing.account.lastCharacterName, accountName: result.listing.account.name, accountStatus: result.listing.account.online