diff --git a/src/web/background/Leagues.ts b/src/web/background/Leagues.ts index 637a7b03..3a20342f 100644 --- a/src/web/background/Leagues.ts +++ b/src/web/background/Leagues.ts @@ -16,6 +16,13 @@ export const selected = computed({ } }) +export const isPublic = computed(() => + selected.value ? isPublicLeague(selected.value) : undefined) + +export function isPublicLeague (id: string) { + return tradeLeagues.value.some(league => id === league.id) +} + export async function load () { isLoading.value = true error.value = null @@ -27,7 +34,7 @@ export async function load () { tradeLeagues.value = leagues.filter(league => !league.rules.some(rule => rule.id === 'NoParties')) const leagueIsAlive = tradeLeagues.value.some(league => league.id === selected.value) - if (!leagueIsAlive) { + if (!leagueIsAlive && isRegularLeague(selected.value!)) { if (tradeLeagues.value.length > 2) { const TMP_CHALLENGE = 2 selected.value = tradeLeagues.value[TMP_CHALLENGE].id @@ -42,3 +49,9 @@ export async function load () { isLoading.value = false } } + +function isRegularLeague (id: string) { + // not a Private League (PL01) + // not a Race Event (.RE01) + return /^[A-Za-z ]+$/.test(id) +} diff --git a/src/web/background/Prices.ts b/src/web/background/Prices.ts index 65be3f22..2241011b 100644 --- a/src/web/background/Prices.ts +++ b/src/web/background/Prices.ts @@ -1,6 +1,6 @@ import { ref, watch } from 'vue' import { MainProcess } from '@/ipc/main-process-bindings' -import { selected as selectedLeague } from './Leagues' +import { selected as selectedLeague, isPublic as isPublicLeague } from './Leagues' import { nameToDetailsId } from '../price-check/trends/getDetailsId' interface NinjaCurrencyInfo { /* eslint-disable camelcase */ @@ -64,7 +64,7 @@ export interface ItemInfo { detailsId: string } -const PRICE_BY_DETAILS_ID = new Map() +let PRICE_BY_DETAILS_ID = new Map() const RETRY_TIME = 60 * 1000 const UPDATE_TIME = 10 * 60 * 1000 @@ -102,7 +102,7 @@ const priceQueue = [ ] async function load (force: boolean = false) { - if (!selectedLeague.value) return + if (!selectedLeague.value || !isPublicLeague.value) return const leagueAtStartOfLoad = selectedLeague.value for (const dataType of priceQueue) { @@ -231,5 +231,7 @@ setInterval(() => { }, RETRY_TIME) watch(selectedLeague, () => { + chaosExaRate.value = undefined + PRICE_BY_DETAILS_ID = new Map() load(true) }) diff --git a/src/web/price-check/CheckedItem.vue b/src/web/price-check/CheckedItem.vue index c2b90e8b..d4d33080 100644 --- a/src/web/price-check/CheckedItem.vue +++ b/src/web/price-check/CheckedItem.vue @@ -60,7 +60,7 @@ import { AppConfig } from '@/web/Config' import { FilterTag, ItemFilters, StatFilter } from './filters/interfaces' import { MainProcess } from '@/ipc/main-process-bindings' import { PriceCheckWidget } from '../overlay/interfaces' -import { selected as selectedLeague } from '@/web/background/Leagues' +import { selected as selectedLeague, isPublic as isPublicLeague } from '@/web/background/Leagues' let _showSupportLinksCounter = 0 @@ -160,7 +160,8 @@ export default defineComponent({ }, { deep: false }) const showPredictedPrice = computed(() => { - if (AppConfig().language !== 'en') return false + if (AppConfig().language !== 'en' || + !isPublicLeague.value) return false return props.item.rarity === ItemRarity.Rare && props.item.category !== ItemCategory.Map && diff --git a/src/web/price-check/related-items/RelatedItems.vue b/src/web/price-check/related-items/RelatedItems.vue index 3a8fdcca..e71f3198 100644 --- a/src/web/price-check/related-items/RelatedItems.vue +++ b/src/web/price-check/related-items/RelatedItems.vue @@ -50,16 +50,15 @@ export default defineComponent({ }) const result = computed(() => { - if (!detailsId.value) return - - if (!ITEM_DROP.has(detailsId.value)) return null + if (!detailsId.value || !ITEM_DROP.has(detailsId.value)) return null const r = ITEM_DROP.get(detailsId.value)! - return { + const out = { // TODO: show at least icon when price is not available on poe.ninja yet related: r.query.map(id => findByDetailsId(id)).filter(_ => Boolean(_)), items: r.items.map(id => findByDetailsId(id)).filter(_ => Boolean(_)) } + return (out.related.length) ? out : null }) return { diff --git a/src/web/settings/price-check.vue b/src/web/settings/price-check.vue index e1716d4a..88d3ba15 100644 --- a/src/web/settings/price-check.vue +++ b/src/web/settings/price-check.vue @@ -6,13 +6,19 @@
{{ t('Loading leagues...') }}
-
-
- {{ league.id }} +
{{ t('Failed to load leagues') }}
@@ -116,6 +122,12 @@ export default defineComponent({ return { t, leagueId: configModelValue(() => props.config, 'leagueId'), + customLeagueId: computed({ + get: () => !Leagues.isPublicLeague(props.config.leagueId ?? '') + ? props.config.leagueId ?? '' + : '', + set: (value) => { props.config.leagueId = value } + }), accountName: configModelValue(() => props.config, 'accountName'), showSeller: configModelValue(() => configWidget.value, 'showSeller'), activateStockFilter: configModelValue(() => configWidget.value, 'activateStockFilter'), @@ -174,6 +186,7 @@ export default defineComponent({ { "ru": { "Account name": "Имя учетной записи", + "or Private League": "или Приватная лига", "Show seller": "Показывать продавца", "Last character name": "Имя последнего персонажа", "Your items will be highlighted even if this setting is off": "Ваши предметы будут подсвечены, даже если эта настройка выключена",