diff --git a/src/content/content.ts b/src/content/content.ts index 288fe02..b0a233f 100644 --- a/src/content/content.ts +++ b/src/content/content.ts @@ -222,7 +222,7 @@ async function inject() { } const qualityName = itemQualities[quality as unknown as keyof typeof itemQualities].toString() - const priceRow = createPriceRow(qualityName, data, keyPrice, locale) + const priceRow = createPriceRow(qualityName, data, keyPrice, exchangeRates, locale) priceRows.push({order: quality == 6 ? -1 : quality, row: priceRow, category: PriceRowCategory.None}) }) @@ -239,7 +239,7 @@ async function inject() { log(`Australium ${itemName} is unpriced or unavailable, skipping...`) } - const priceRow = createPriceRow($T("Australium"), data, keyPrice, locale, "https://wiki.teamfortress.com/wiki/Australium_weapons") + const priceRow = createPriceRow($T("Australium"), data, keyPrice, exchangeRates, locale, "https://wiki.teamfortress.com/wiki/Australium_weapons") priceRows.push({order: 99, row: priceRow, category: PriceRowCategory.None}) resolve() @@ -271,7 +271,7 @@ async function inject() { log(`Festive ${itemName} is unpriced or unavailable, skipping...`) } - const priceRow = createPriceRow($T("Unique"), data, keyPrice, locale) + const priceRow = createPriceRow($T("Unique"), data, keyPrice, exchangeRates, locale) priceRows.push({order: -1, row: priceRow, category: PriceRowCategory.Festive}) resolve() @@ -287,7 +287,7 @@ async function inject() { log(`Strange Festive ${itemName} is unpriced or unavailable, skipping...`) } - const priceRow = createPriceRow($T("Strange"), data, keyPrice, locale) + const priceRow = createPriceRow($T("Strange"), data, keyPrice, exchangeRates, locale) priceRows.push({order: 11, row: priceRow, category: PriceRowCategory.Festive}) resolve() @@ -331,7 +331,7 @@ async function inject() { return } - const priceRow = createPriceRow($T(`kt-${tier}`), data, keyPrice, locale, "https://wiki.teamfortress.com/wiki/Killstreak_Kit") + const priceRow = createPriceRow($T(`kt-${tier}`), data, keyPrice, exchangeRates, locale, "https://wiki.teamfortress.com/wiki/Killstreak_Kit") priceRows.push({order: tier, row: priceRow, category: PriceRowCategory.KillstreakKit}) resolve() @@ -378,7 +378,7 @@ async function inject() { log(`${itemName} is unpriced or unavailable, skipping...`) } - const priceRow = createPriceRow($T(variantName), data, keyPrice, locale, "https://wiki.teamfortress.com/wiki/Botkiller_weapons") + const priceRow = createPriceRow($T(variantName), data, keyPrice, exchangeRates, locale, "https://wiki.teamfortress.com/wiki/Botkiller_weapons") // FIXME: order should be by release // Silver Mk.I, Gold Mk.II, Rust, Blood, Carbonado, Diamond, Silver Mk.II, Gold Mk.II diff --git a/src/content/uiRenderer.ts b/src/content/uiRenderer.ts index 0b268e0..6c3f722 100644 --- a/src/content/uiRenderer.ts +++ b/src/content/uiRenderer.ts @@ -1,10 +1,11 @@ +import { ExchangeRates } from "./exchangeRateService"; import { ItemPriceData } from "./priceService"; import { convertTF2PriceToUSD, defaultCurrencyForPageLocale, convertUSD } from "./utils/currency"; import { formatPrice } from "./utils/formatting"; import { $T } from "./utils/localization"; import { logError } from "./utils/log"; -export function createPriceRow(qualityName: string, data: ItemPriceData, keyPrice: ItemPriceData, locale: string, wikiPage: string = null): HTMLTableRowElement { +export function createPriceRow(qualityName: string, data: ItemPriceData, keyPrice: ItemPriceData, rates: ExchangeRates, locale: string, wikiPage: string = null): HTMLTableRowElement { const priceRow = document.createElement("tr"); const priceLabel = document.createElement("td"); @@ -32,7 +33,7 @@ export function createPriceRow(qualityName: string, data: ItemPriceData, keyPric const currency = defaultCurrencyForPageLocale(locale) ?? 'USD' if(currency !== 'USD') { try { - const realPrice = convertUSD(realPriceUSD, currency) + const realPrice = convertUSD(realPriceUSD, currency, rates) const currencyFormatter = new Intl.NumberFormat(locale, { style: "currency", currency: currency }) realPriceString = currencyFormatter.format(realPrice).replace(/\s+/g, '') } catch (e) { diff --git a/src/content/utils/currency.ts b/src/content/utils/currency.ts index 8a7f122..69b7914 100644 --- a/src/content/utils/currency.ts +++ b/src/content/utils/currency.ts @@ -1,4 +1,5 @@ import { conversion_ref_usd } from '../config'; +import { ExchangeRates } from '../exchangeRateService'; export function defaultCurrencyForPageLocale(locale: string): string | null { switch (locale) { @@ -39,9 +40,9 @@ export function convertTF2PriceToUSD(keys: number, metal: number, keyPrice: numb return Math.ceil(pureMetal * conversion_ref_usd * 100) / 100 } -export function convertUSD(usd: number, currency: string): number { +export function convertUSD(usd: number, currency: string, rates: ExchangeRates): number { const cur = currency.toUpperCase() if(cur === 'USD') return usd - throw new Error(`Not implemented`) + return usd * rates[cur] }