diff --git a/renderer/public/data/cmn-Hant/app_i18n.json b/renderer/public/data/cmn-Hant/app_i18n.json index c8fce8b0..27d9a7f8 100644 --- a/renderer/public/data/cmn-Hant/app_i18n.json +++ b/renderer/public/data/cmn-Hant/app_i18n.json @@ -414,7 +414,7 @@ "always_show_tier": "始終顯示階級", "remember_ratio": "記住通貨比例", "open_editor_above": "Open rune socket selector upwards", - "primary_currency": "Primary base currency" + "core_currency": "Primary base currency" }, "poe2_new": { "beta_warning": "這是 POE2 的測試版,某些功能可能無法正常運作。", diff --git a/renderer/public/data/de/app_i18n.json b/renderer/public/data/de/app_i18n.json index 01d77855..0437e787 100644 --- a/renderer/public/data/de/app_i18n.json +++ b/renderer/public/data/de/app_i18n.json @@ -403,7 +403,7 @@ "always_show_tier": "Tier immer anzeigen", "remember_ratio": "Währungs-Verhältnis merken", "open_editor_above": "Open rune socket selector upwards", - "primary_currency": "Primary base currency" + "core_currency": "Primary base currency" }, "poe2_new": { "beta_warning": "Dies ist eine BETA für POE2, es wird nicht immer wie erwartet funktionieren.", diff --git a/renderer/public/data/en/app_i18n.json b/renderer/public/data/en/app_i18n.json index 8f6d20d8..d5b49fd7 100644 --- a/renderer/public/data/en/app_i18n.json +++ b/renderer/public/data/en/app_i18n.json @@ -431,7 +431,7 @@ "always_show_tier": "Always show tier", "remember_ratio": "Remember currency ratio", "open_editor_above": "Open rune socket selector upwards", - "primary_currency": "Primary base currency" + "core_currency": "Primary base currency" }, "poe2_new": { "beta_warning": "This is in BETA for POE2, things will not work always as expected.", diff --git a/renderer/public/data/es/app_i18n.json b/renderer/public/data/es/app_i18n.json index 6689b13f..b9c26a1c 100644 --- a/renderer/public/data/es/app_i18n.json +++ b/renderer/public/data/es/app_i18n.json @@ -427,7 +427,7 @@ "always_show_tier": "Always show tier", "remember_ratio": "Remember currency ratio", "open_editor_above": "Open rune socket selector upwards", - "primary_currency": "Primary base currency" + "core_currency": "Primary base currency" }, "poe2_new": { "beta_warning": "Esto está en BETA para POE2, las cosas no siempre funcionarán como se espera.", diff --git a/renderer/public/data/ja/app_i18n.json b/renderer/public/data/ja/app_i18n.json index 0aaa2438..1da60ae3 100644 --- a/renderer/public/data/ja/app_i18n.json +++ b/renderer/public/data/ja/app_i18n.json @@ -414,7 +414,7 @@ "always_show_tier": "Always show tier", "remember_ratio": "Remember currency ratio", "open_editor_above": "Open rune socket selector upwards", - "primary_currency": "Primary base currency" + "core_currency": "Primary base currency" }, "poe2_new": { "beta_warning": "これはPOE2のベータ版です、期待通りに動作しないことがあります。", diff --git a/renderer/public/data/ko/app_i18n.json b/renderer/public/data/ko/app_i18n.json index 5576e26a..dc887594 100644 --- a/renderer/public/data/ko/app_i18n.json +++ b/renderer/public/data/ko/app_i18n.json @@ -407,7 +407,7 @@ "always_show_tier": "常にティアを表示", "remember_ratio": "通貨比率を記憶する", "open_editor_above": "Open rune socket selector upwards", - "primary_currency": "Primary base currency" + "core_currency": "Primary base currency" }, "poe2_new": { "beta_warning": "이 버전은 베타버전입니다. 예기치 못한 버그가 있을 수 있습니다.", diff --git a/renderer/public/data/ru/app_i18n.json b/renderer/public/data/ru/app_i18n.json index 8a07bf21..3dd9171d 100644 --- a/renderer/public/data/ru/app_i18n.json +++ b/renderer/public/data/ru/app_i18n.json @@ -429,7 +429,7 @@ "always_show_tier": "Always show tier", "remember_ratio": "Remember currency ratio", "open_editor_above": "Open rune socket selector upwards", - "primary_currency": "Primary base currency" + "core_currency": "Primary base currency" }, "poe2_new": { "beta_warning": "Функционал для PoE2 находится в стадии бета тестирования и не всегда работает так, как задумано.", diff --git a/renderer/src/web/Config.ts b/renderer/src/web/Config.ts index 508d56d2..e85fb813 100644 --- a/renderer/src/web/Config.ts +++ b/renderer/src/web/Config.ts @@ -23,7 +23,6 @@ export function AppConfig(type?: string) { export function updateConfig(updates: Config) { _config.value = deepReactive(JSON.parse(JSON.stringify(updates))); - console.log("SET CONFIG"); document.documentElement.style.fontSize = `${_config.value!.fontSize}px`; } @@ -599,7 +598,7 @@ function upgradeConfig(_config: Config): Config { const priceCheck = config.widgets.find( (w) => w.wmType === "price-check", ) as widget.PriceCheckWidget; - priceCheck.primaryCurrency = "exalted"; + priceCheck.coreCurrency = "exalted"; config.configVersion = 29; } return config as unknown as Config; diff --git a/renderer/src/web/background/Prices.ts b/renderer/src/web/background/Prices.ts index 59b1ea30..5e296939 100644 --- a/renderer/src/web/background/Prices.ts +++ b/renderer/src/web/background/Prices.ts @@ -1,10 +1,10 @@ -import { shallowRef, watch, readonly } from "vue"; +import { shallowRef, watch, readonly, computed } from "vue"; import { createGlobalState } from "@vueuse/core"; import { Host } from "@/web/background/IPC"; import { useLeagues } from "./Leagues"; import { AppConfig } from "../Config"; import { PriceCheckWidget } from "../overlay/widgets"; -import { usePrimaryCurrency } from "./PrimaryCurrency"; +import { ITEM_BY_REF } from "@/assets/data"; interface NinjaDenseInfo { exalted: number; @@ -28,9 +28,56 @@ export interface CurrencyValue { currency: "chaos" | "exalted" | "div"; } +interface CoreCurrency { + id: string; + abbrev: string; + ref: string; + text: string; + icon: string; +} + +function getAvailableCoreCurrencies(): CoreCurrency[] { + return [ + { + id: "exalted", + abbrev: "ex", + ref: "Exalted Orb", + text: "Exalted Orb", + icon: "/images/exa.png", + }, + { + id: "chaos", + abbrev: "c", + ref: "Chaos Orb", + text: "Chaos Orb", + icon: "/images/chaos.png", + }, + ]; +} + export const usePoeninja = createGlobalState(() => { const leagues = useLeagues(); - const primaryCurrency = usePrimaryCurrency(); + + const availableCoreCurrencies = shallowRef([]); + const selectedCoreCurrencyId = computed<"exalted" | "chaos">({ + get() { + return availableCoreCurrencies.value.length + ? AppConfig("price-check")!.coreCurrency + : "exalted"; + }, + set(id) { + AppConfig("price-check")!.coreCurrency = id; + }, + }); + + const selectedCoreCurrency = computed(() => { + const { coreCurrency } = AppConfig("price-check")!; + if (!availableCoreCurrencies.value || !coreCurrency) return undefined; + const listed = availableCoreCurrencies.value.find( + (currency) => currency.id === coreCurrency, + ); + return listed; + }); const xchgRate = shallowRef(undefined); const xchgRateCurrency = shallowRef<"chaos" | "exalted" | undefined>( @@ -68,6 +115,20 @@ export const usePoeninja = createGlobalState(() => { try { isLoading.value = true; downloadController = new AbortController(); + + availableCoreCurrencies.value = getAvailableCoreCurrencies().map( + (currency) => ({ + ...currency, + text: ITEM_BY_REF("ITEM", currency.ref)![0].name, + }), + ); + const haveCurrency = availableCoreCurrencies.value.some( + (currency) => currency.id === selectedCoreCurrencyId.value, + ); + if (!haveCurrency) { + selectedCoreCurrencyId.value = "exalted"; + } + const response = await Host.proxy( `api.exiledexchange2.dev/overviewData.json`, { @@ -90,7 +151,7 @@ export const usePoeninja = createGlobalState(() => { name: "Divine Orb", }); const preferred = - AppConfig("price-check")!.primaryCurrency; + AppConfig("price-check")!.coreCurrency; if (divine && divine.exalted >= 30) { if (preferred === "exalted") { @@ -218,15 +279,12 @@ export const usePoeninja = createGlobalState(() => { }, RETRY_INTERVAL_MS); watch(leagues.selectedId, () => { - console.log(`WATCH LEAGUE RUN ${leagues.selectedId.value}`); xchgRate.value = undefined; PRICES_DB = []; load(true); }); - console.log("SETTING UP PRICES"); - watch(primaryCurrency.selectedId, (curr, prev) => { - console.log(`WATCH PRIMARY RUN ${curr} ${prev}`); + watch(selectedCoreCurrencyId, (curr, prev) => { if (curr === prev) return; xchgRateCurrency.value = curr ?? "exalted"; xchgRate.value = undefined; @@ -236,12 +294,13 @@ export const usePoeninja = createGlobalState(() => { return { xchgRate: readonly(xchgRate), - xchgRateCurrency: readonly(xchgRateCurrency), + xchgRateCurrency: readonly(selectedCoreCurrency), findPriceByQuery, autoCurrency, queuePricesFetch, cachedCurrencyByQuery, initialLoading: () => isLoading.value && !PRICES_DB.length, + availableCoreCurrencies: readonly(availableCoreCurrencies), }; }); diff --git a/renderer/src/web/background/PrimaryCurrency.ts b/renderer/src/web/background/PrimaryCurrency.ts deleted file mode 100644 index c9ba66cb..00000000 --- a/renderer/src/web/background/PrimaryCurrency.ts +++ /dev/null @@ -1,75 +0,0 @@ -import { ITEM_BY_REF } from "@/assets/data"; -import { createGlobalState } from "@vueuse/core"; -import { computed, shallowRef, readonly } from "vue"; -import { AppConfig } from "../Config"; -import { PriceCheckWidget } from "../overlay/widgets"; - -interface PrimaryCurrency { - id: string; - abbrev: string; - ref: string; - text: string; - icon: string; -} - -function getAvailableCurrencies(): PrimaryCurrency[] { - return [ - { - id: "exalted", - abbrev: "ex", - ref: "Exalted Orb", - text: "Exalted Orb", - icon: "/images/exa.png", - }, - { - id: "chaos", - abbrev: "c", - ref: "Chaos Orb", - text: "Chaos Orb", - icon: "/images/chaos.png", - }, - ]; -} - -export const usePrimaryCurrency = createGlobalState(() => { - const availableCurrencies = shallowRef([]); - const selectedId = computed<"exalted" | "chaos">({ - get() { - return availableCurrencies.value.length - ? AppConfig("price-check")!.primaryCurrency - : "exalted"; - }, - set(id) { - AppConfig("price-check")!.primaryCurrency = id; - }, - }); - - const selected = computed(() => { - const { primaryCurrency } = AppConfig("price-check")!; - if (!availableCurrencies.value || !primaryCurrency) return undefined; - const listed = availableCurrencies.value.find( - (currency) => currency.id === primaryCurrency, - ); - return listed; - }); - - function load() { - availableCurrencies.value = getAvailableCurrencies().map((currency) => ({ - ...currency, - text: ITEM_BY_REF("ITEM", currency.ref)![0].name, - })); - const haveCurrency = availableCurrencies.value.some( - (currency) => currency.id === selectedId.value, - ); - if (!haveCurrency) { - selectedId.value = "exalted"; - } - } - - return { - selectedId, - selected, - list: readonly(availableCurrencies), - load, - }; -}); diff --git a/renderer/src/web/overlay/OverlayWindow.vue b/renderer/src/web/overlay/OverlayWindow.vue index 72f153f9..4a3ad7bc 100644 --- a/renderer/src/web/overlay/OverlayWindow.vue +++ b/renderer/src/web/overlay/OverlayWindow.vue @@ -74,7 +74,6 @@ import LoadingAnimation from "./LoadingAnimation.vue"; import { usePoeninja } from "@/web/background/Prices"; import { useLeagues } from "@/web/background/Leagues"; import { handleLine } from "@/web/client-log/client-log"; -import { usePrimaryCurrency } from "../background/PrimaryCurrency"; type WMID = Widget["wmId"]; @@ -85,7 +84,6 @@ export default defineComponent({ setup() { usePoeninja(); useLeagues().load(); - usePrimaryCurrency().load(); const active = shallowRef(!Host.isElectron); const gameFocused = shallowRef(false); diff --git a/renderer/src/web/overlay/widgets.ts b/renderer/src/web/overlay/widgets.ts index 027fb72c..7810b964 100644 --- a/renderer/src/web/overlay/widgets.ts +++ b/renderer/src/web/overlay/widgets.ts @@ -56,7 +56,7 @@ export interface PriceCheckWidget extends Widget { autoFillEmptyRuneSockets: "Iron Rune" | false; alwaysShowTier: boolean; openItemEditorAbove: boolean; - primaryCurrency: "exalted" | "chaos"; + coreCurrency: "exalted" | "chaos"; } export interface StopwatchWidget extends Widget { diff --git a/renderer/src/web/price-check/PriceCheckWindow.vue b/renderer/src/web/price-check/PriceCheckWindow.vue index 6e942219..c3713e34 100644 --- a/renderer/src/web/price-check/PriceCheckWindow.vue +++ b/renderer/src/web/price-check/PriceCheckWindow.vue @@ -228,7 +228,7 @@ export default defineComponent({ autoFillEmptyRuneSockets: false, alwaysShowTier: false, openItemEditorAbove: false, - primaryCurrency: "exalted", + coreCurrency: "exalted", }; }, } satisfies WidgetSpec, diff --git a/renderer/src/web/price-check/settings-price-check.vue b/renderer/src/web/price-check/settings-price-check.vue index a5514a0d..e38567c4 100644 --- a/renderer/src/web/price-check/settings-price-check.vue +++ b/renderer/src/web/price-check/settings-price-check.vue @@ -87,10 +87,10 @@ t(":remember_currency") }}
-
{{ t(":primary_currency") }}
-