From 7e0c51d9070db9fbcb0d3a5fa436c859bd6c4e2d Mon Sep 17 00:00:00 2001 From: Alexander Drozdov Date: Mon, 31 May 2021 23:02:30 +0300 Subject: [PATCH] setting to disable initial search. closes #369, #273 --- src/ipc/ipc-event.ts | 1 + src/ipc/types.ts | 4 +++- src/main/config.ts | 5 ++++ src/main/price-check.ts | 2 +- src/web/overlay/WidgetDebug.vue | 2 +- src/web/overlay/interfaces.ts | 2 ++ src/web/price-check/CheckedItem.vue | 29 ++++++++++++++++++------ src/web/price-check/PriceCheckWindow.vue | 5 +++- src/web/settings/price-check.vue | 16 ++++++++++++- 9 files changed, 54 insertions(+), 12 deletions(-) diff --git a/src/ipc/ipc-event.ts b/src/ipc/ipc-event.ts index 2030e04e..f4a3536b 100644 --- a/src/ipc/ipc-event.ts +++ b/src/ipc/ipc-event.ts @@ -28,6 +28,7 @@ export const PRICE_CHECK_CANCELED = 'MAIN->OVERLAY::price-check-canceled' export interface IpcPriceCheck { clipboard: string position: { x: number, y: number } + lockedMode: boolean } export const ITEM_CHECK = 'MAIN->OVERLAY::item-check' diff --git a/src/ipc/types.ts b/src/ipc/types.ts index 60cb03fb..e3377951 100644 --- a/src/ipc/types.ts +++ b/src/ipc/types.ts @@ -139,7 +139,9 @@ export const defaultConfig: Config = { chaosPriceThreshold: 0.05, showRateLimitState: false, apiLatencySeconds: 2, - collapseListings: 'api' + collapseListings: 'api', + smartInitialSearch: true, + lockedInitialSearch: true } as PriceCheckWidget, { wmId: 3, diff --git a/src/main/config.ts b/src/main/config.ts index cc2085c7..975b0fc0 100644 --- a/src/main/config.ts +++ b/src/main/config.ts @@ -146,6 +146,11 @@ export const config = (() => { config.widgets.find(w => w.wmType === 'price-check')! .collapseListings = 'api' + config.widgets.find(w => w.wmType === 'price-check')! + .smartInitialSearch = true + config.widgets.find(w => w.wmType === 'price-check')! + .lockedInitialSearch = true + config.configVersion = 9 } diff --git a/src/main/price-check.ts b/src/main/price-check.ts index 6ede7d12..c936c514 100644 --- a/src/main/price-check.ts +++ b/src/main/price-check.ts @@ -24,7 +24,7 @@ export function showWidget (opts: { }) { checkPressPosition = opts.hotkeyPressPosition - overlayWindow!.webContents.send(ipc.PRICE_CHECK, { clipboard: opts.clipboard, position: checkPressPosition } as ipc.IpcPriceCheck) + overlayWindow!.webContents.send(ipc.PRICE_CHECK, { clipboard: opts.clipboard, position: checkPressPosition, lockedMode: opts.lockedMode } as ipc.IpcPriceCheck) const poeBounds = PoeWindow.bounds! activeAreaRect = { diff --git a/src/web/overlay/WidgetDebug.vue b/src/web/overlay/WidgetDebug.vue index f341fc8b..18a38872 100644 --- a/src/web/overlay/WidgetDebug.vue +++ b/src/web/overlay/WidgetDebug.vue @@ -37,7 +37,7 @@ export default defineComponent({ handleItemPaste (e: InputEvent) { const target = e.target as HTMLInputElement const text = target.value - MainProcess.selfEmitPriceCheck({ clipboard: text, position: { x: window.screenX + 100, y: window.screenY + 100 } }) + MainProcess.selfEmitPriceCheck({ clipboard: text, position: { x: window.screenX + 100, y: window.screenY + 100 }, lockedMode: false }) target.value = '' // eslint-disable-next-line no-console console.log( diff --git a/src/web/overlay/interfaces.ts b/src/web/overlay/interfaces.ts index 1212a4a6..6ef79afe 100644 --- a/src/web/overlay/interfaces.ts +++ b/src/web/overlay/interfaces.ts @@ -50,6 +50,8 @@ export interface PriceCheckWidget extends Widget { showRateLimitState: boolean apiLatencySeconds: number collapseListings: 'api' | 'app' + smartInitialSearch: boolean + lockedInitialSearch: boolean } export interface ItemCheckWidget extends Widget { diff --git a/src/web/price-check/CheckedItem.vue b/src/web/price-check/CheckedItem.vue index 2286abb6..6634bb1b 100644 --- a/src/web/price-check/CheckedItem.vue +++ b/src/web/price-check/CheckedItem.vue @@ -60,6 +60,7 @@ import { Config } from '@/web/Config' import { ItemFilters, StatFilter } from './filters/interfaces' import { ModifierType } from '@/parser/modifiers' import { MainProcess } from '@/ipc/main-process-bindings' +import { PriceCheckWidget } from '../overlay/interfaces' let _showSupportLinksCounter = 0 @@ -78,9 +79,17 @@ export default defineComponent({ item: { type: Object as PropType, required: true + }, + advancedCheck: { + type: Boolean, + required: true } }, setup (props) { + const widgetCfg = computed(() => { + return Config.store.widgets.find(w => w.wmType === 'price-check') as PriceCheckWidget + }) + const itemFilters = ref(null!) const itemStats = ref(null!) const interactedOnce = ref(false) @@ -96,13 +105,19 @@ export default defineComponent({ watch(() => props.item, (item) => { itemFilters.value = createFilters(item) itemStats.value = initUiModFilters(item) - interactedOnce.value = Boolean( - (item.rarity === ItemRarity.Unique) || - (item.category === ItemCategory.Map) || - (!CATEGORY_TO_TRADE_ID.has(item.category!)) || - (item.isUnidentified) || - (item.extra.veiled) - ) + + if ((!props.advancedCheck && !widgetCfg.smartInitialSearch) || + (props.advancedCheck && !widgetCfg.lockedInitialSearch)) { + interactedOnce.value = false + } else { + interactedOnce.value = Boolean( + (item.rarity === ItemRarity.Unique) || + (item.category === ItemCategory.Map) || + (!CATEGORY_TO_TRADE_ID.has(item.category!)) || + (item.isUnidentified) || + (item.extra.veiled) + ) + } }, { immediate: true }) watch(() => [props.item, interactedOnce.value], () => { diff --git a/src/web/price-check/PriceCheckWindow.vue b/src/web/price-check/PriceCheckWindow.vue index 57a86cbf..340902f1 100644 --- a/src/web/price-check/PriceCheckWindow.vue +++ b/src/web/price-check/PriceCheckWindow.vue @@ -40,7 +40,7 @@ :position="checkPosition" style="z-index: -1;" /> + :item="item" :advanced-check="advancedCheck" />
{{ overlayKey }} @@ -105,6 +105,7 @@ export default defineComponent({ }) const item = shallowRef(null) + const advancedCheck = shallowRef(false) const checkPosition = shallowRef({ x: 1, y: 1 }) MainProcess.addEventListener(PRICE_CHECK, (e) => { @@ -116,6 +117,7 @@ export default defineComponent({ y: _e.position.y - window.screenY } item.value = parseClipboard(_e.clipboard) + advancedCheck.value = _e.lockedMode }) MainProcess.addEventListener(PRICE_CHECK_CANCELED, () => { wm.hide(props.config.wmId) @@ -178,6 +180,7 @@ export default defineComponent({ showCheckPos, checkPosition, item, + advancedCheck, overlayKey, isLeagueSelected } diff --git a/src/web/settings/price-check.vue b/src/web/settings/price-check.vue index 82afa210..3aae8703 100644 --- a/src/web/settings/price-check.vue +++ b/src/web/settings/price-check.vue @@ -50,6 +50,19 @@ {{ t('Yes') }}
+
+
{{ t('Perform an auto search, when pressing') }}
+
+ + {{ `${config.priceCheckKeyHold} + ${config.priceCheckKey}` }} + + + {{ config.priceCheckLocked }} + +
+
{{ t('Extra time to prevent spurious Rate limiting') }}
@@ -132,7 +145,8 @@ export default defineComponent({ "Extra time to prevent spurious Rate limiting": "Добавочное время для предотвращения ложного срабатывания ограничения на запросы", "seconds": "секунды", "Settings below are a compromise between increasing load on PoE website and convenient price checking / more accurate search.": "Настройки ниже являются компромиссом между увеличенной нагрузкой на сайт PoE и удобством проверки цен / более точным поиском.", - "Show indication on collapsed listings": "Показывать индикацию на сгруппированных результатах" + "Show indication on collapsed listings": "Показывать индикацию на сгруппированных результатах", + "Perform an auto search, when pressing": "Выполнять автоматический поиск при нажатии" } }