diff --git a/apps/backend/Dockerfile b/apps/backend/Dockerfile index bfed8e789..1138c41c6 100644 --- a/apps/backend/Dockerfile +++ b/apps/backend/Dockerfile @@ -1,4 +1,4 @@ -FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build +FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build WORKDIR /app COPY . . @@ -7,7 +7,7 @@ WORKDIR /app/apps/backend RUN dotnet publish -c Release -o out -FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS runtime +FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS runtime #RUN apk add --no-cache icu-libs diff --git a/apps/backend/Wowthing.Backend.csproj b/apps/backend/Wowthing.Backend.csproj index 5f76cd4f8..d31e185eb 100644 --- a/apps/backend/Wowthing.Backend.csproj +++ b/apps/backend/Wowthing.Backend.csproj @@ -1,32 +1,32 @@ - net9.0 + net10.0 dotnet-Wowthing.Backend-08E9B79A-EF3A-409C-B7C6-BDB114990FD2 - - - - - - + + + + + + - + - - - + + + - - - + + + - - - - + + + + diff --git a/apps/backend/development.Dockerfile b/apps/backend/development.Dockerfile index 66ae7549e..4a048a93d 100644 --- a/apps/backend/development.Dockerfile +++ b/apps/backend/development.Dockerfile @@ -1,4 +1,4 @@ -FROM mcr.microsoft.com/dotnet/sdk:9.0 +FROM mcr.microsoft.com/dotnet/sdk:10.0 WORKDIR /app/apps/backend diff --git a/apps/benchmark/Wowthing.Benchmark.csproj b/apps/benchmark/Wowthing.Benchmark.csproj index 0972961e7..cffb0635b 100644 --- a/apps/benchmark/Wowthing.Benchmark.csproj +++ b/apps/benchmark/Wowthing.Benchmark.csproj @@ -2,13 +2,13 @@ Exe - net9.0 + net10.0 enable enable - + diff --git a/apps/discord/Wowthing.Discord.csproj b/apps/discord/Wowthing.Discord.csproj index f91e1674e..058fc924e 100644 --- a/apps/discord/Wowthing.Discord.csproj +++ b/apps/discord/Wowthing.Discord.csproj @@ -8,7 +8,7 @@ - + diff --git a/apps/frontend/components/home/table/row/HomeTableRowProgress.svelte b/apps/frontend/components/home/table/row/HomeTableRowProgress.svelte index c056a926e..94841f206 100644 --- a/apps/frontend/components/home/table/row/HomeTableRowProgress.svelte +++ b/apps/frontend/components/home/table/row/HomeTableRowProgress.svelte @@ -15,6 +15,8 @@ @@ -43,6 +45,8 @@ > {#if data.have > 0 && data.have === data.total} + {:else if data.inProgress} + {data.have}+{data.inProgress} / {data.total} {:else} {data.have} / {data.total} {/if} diff --git a/apps/frontend/components/progress/ProgressTableBody.svelte b/apps/frontend/components/progress/ProgressTableBody.svelte index 2a954f232..f66505306 100644 --- a/apps/frontend/components/progress/ProgressTableBody.svelte +++ b/apps/frontend/components/progress/ProgressTableBody.svelte @@ -63,8 +63,15 @@ class={progressData.missingRequired ? 'status-fail' : getPercentClass((progressData.have / progressData.total) * 100)} - >{progressData.have} / {progressData.total} + {#if progressData.inProgress} + {progressData.have}+{progressData.inProgress} + {:else} + {progressData.have} + {/if} + / + {progressData.total} + {:else if progressData?.have === -1 && progressData?.total >= 0} --- diff --git a/apps/frontend/components/tooltips/progress/TooltipProgress.svelte b/apps/frontend/components/tooltips/progress/TooltipProgress.svelte index 6a015ad09..537862bdd 100644 --- a/apps/frontend/components/tooltips/progress/TooltipProgress.svelte +++ b/apps/frontend/components/tooltips/progress/TooltipProgress.svelte @@ -180,7 +180,7 @@ {#if showCurrencies?.length > 0 && !(showCurrencies.length === 1 && showCurrencies[0] === 0)}
- {#each showCurrencies as currencyId} + {#each showCurrencies as currencyId (currencyId)} {#if currencyId > 1000000} diff --git a/apps/frontend/components/tooltips/task/TooltipTaskRow.svelte b/apps/frontend/components/tooltips/task/TooltipTaskRow.svelte index 186c8a644..0aa1abf95 100644 --- a/apps/frontend/components/tooltips/task/TooltipTaskRow.svelte +++ b/apps/frontend/components/tooltips/task/TooltipTaskRow.svelte @@ -135,7 +135,7 @@

{character?.name || `Unknown Character #${characterId}`}

{task?.name || `Unknown Task "${taskName}"`}
- {#each choreSets as choreSet (choreSet)} + {#each choreSets.filter((s) => s.length > 0) as choreSet (choreSet)} {#each choreSet as charTaskChore (charTaskChore)} diff --git a/apps/frontend/components/vendors/VendorsOptions.svelte b/apps/frontend/components/vendors/VendorsOptions.svelte index 07a71adda..ff04aa40a 100644 --- a/apps/frontend/components/vendors/VendorsOptions.svelte +++ b/apps/frontend/components/vendors/VendorsOptions.svelte @@ -70,7 +70,7 @@ if (byThing.length === 0) { byThing = ['---']; - } else if (byThing.length === 6) { + } else if (byThing.length === 7) { byThing = ['ALL']; } diff --git a/apps/frontend/data/achievements.ts b/apps/frontend/data/achievements.ts index 7d8c2fd89..1c3fc3e83 100644 --- a/apps/frontend/data/achievements.ts +++ b/apps/frontend/data/achievements.ts @@ -500,6 +500,35 @@ export const extraCategories: ExtraAchievementCategory[] = [ 61380, // Glory of the Midnight Raider ], }, + { + targetSlug: 'player-vs-player/world', + nameType: 1, + onlyAchievementIds: true, + achievementIds: [ + 61446, // Slayer's Mastery + 61464, // Spark in the Night + 61465, // Spark in the Night + 61447, // Partake in the Rise + 61448, // Frequent the Rise + 61449, // Customary Rise + 61265, // Spectral Capture + 61266, // Spectral Stocker + 61234, // Hunt in the Night + 61238, // Midnight Bounty + 61231, // Midnight Loot + 61232, // Midnight Treasures + 61230, // Remains in the Rise + 61227, // Entering the Void + 61228, // Embracing the Void + 61229, // Dedication in the Void + 61225, // Investigating the Rise + 61226, // Uprising + 61221, // Tour of Duty: Eversong Woods + 61222, // Tour of Duty: Zul'Aman + 61223, // Tour of Duty: Harandar + 61224, // Tour of Duty: Voidstorm + ], + }, null, { targetSlug: 'expansion-features/prey', nameType: 2 }, { targetSlug: 'expansion-features/ritual-sites', nameType: 2 }, diff --git a/apps/frontend/utils/find-reputation-tier.ts b/apps/frontend/utils/find-reputation-tier.ts index 386736f18..216f01e20 100644 --- a/apps/frontend/utils/find-reputation-tier.ts +++ b/apps/frontend/utils/find-reputation-tier.ts @@ -3,7 +3,7 @@ import type { StaticDataReputationTier } from '@/shared/stores/static/types'; export default function findReputationTier( tiers: StaticDataReputationTier, - characterRep: number, + characterRep: number ): ReputationTier | undefined { for (let i = tiers.minValues.length - 1; i >= 0; i--) { const finalTier = i === tiers.minValues.length - 1; @@ -37,8 +37,17 @@ export default function findReputationTier( tiers.minValues.length - i, maxValue, value, - percent, + percent ); } } + + console.warn('invalid value for findReputationTier', tiers.id, characterRep); + return new ReputationTier( + tiers.names[0], + 1, + tiers.minValues[1] - tiers.minValues[0], + tiers.minValues[0], + '0.0' + ); } diff --git a/apps/frontend/utils/get-progress.ts b/apps/frontend/utils/get-progress.ts index 710eccfac..cddb50008 100644 --- a/apps/frontend/utils/get-progress.ts +++ b/apps/frontend/utils/get-progress.ts @@ -25,7 +25,8 @@ export default function getProgress( group: ManualDataProgressGroup, countAccountWide = true ): ProgressInfo { - let have: number = 0; + let have = 0; + let inProgress = 0; let missingRequired = false; let showCurrency = 0; let total = 0; @@ -193,11 +194,24 @@ export default function getProgress( } let haveThis = false; - if ( - (group.type === 'quest' && checkCharacterQuestIds(character.id, data.ids)) || - (group.type === 'accountQuest' && checkAccountQuestIds(data.ids)) - ) { - haveThis = true; + if (group.type === 'quest' || group.type === 'accountQuest') { + haveThis = + (group.type === 'quest' && + checkCharacterQuestIds(character.id, data.ids)) || + (group.type === 'accountQuest' && checkAccountQuestIds(data.ids)); + + if (group.name === 'Delves') { + const progressQuest = userState.quests.characterById + .get(character.id) + ?.progressQuestByKey?.get(`q${data.ids[0]}`); + if ( + progressQuest && + progressQuest.objectives[0] && + progressQuest.objectives[0].have === progressQuest.objectives[0].need + ) { + inProgress++; + } + } if (group.name === 'Brewfest Intro Quests') { showCurrency = 1037829; // Cyphers of the First Ones @@ -504,6 +518,7 @@ export default function getProgress( have, haveIndexes, icon, + inProgress, missingRequired, nameOverride, showCurrency, @@ -549,6 +564,7 @@ export interface ProgressInfo { have: number; haveIndexes: number[]; icon: string; + inProgress: number; missingRequired: boolean; nameOverride: Record; showCurrency: number; diff --git a/apps/luaparser/Wowthing.LuaParser.csproj b/apps/luaparser/Wowthing.LuaParser.csproj index 3b996a275..201ba4738 100644 --- a/apps/luaparser/Wowthing.LuaParser.csproj +++ b/apps/luaparser/Wowthing.LuaParser.csproj @@ -2,7 +2,7 @@ Exe - net9.0 + net10.0 enable enable diff --git a/apps/tool/Wowthing.Tool.csproj b/apps/tool/Wowthing.Tool.csproj index 5cf3e2f60..afa04a964 100644 --- a/apps/tool/Wowthing.Tool.csproj +++ b/apps/tool/Wowthing.Tool.csproj @@ -2,7 +2,7 @@ Exe - net9.0 + net10.0 enable enable @@ -12,19 +12,19 @@ - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive - + - + - - - + + + diff --git a/apps/web/Dockerfile b/apps/web/Dockerfile index 1651e0d82..86ae1fe9d 100644 --- a/apps/web/Dockerfile +++ b/apps/web/Dockerfile @@ -13,7 +13,7 @@ COPY apps/frontend/ . RUN npm run build -FROM mcr.microsoft.com/dotnet/sdk:9.0-alpine AS build-web +FROM mcr.microsoft.com/dotnet/sdk:10.0-alpine AS build-web WORKDIR /app COPY apps/web/ ./apps/web/ @@ -23,7 +23,7 @@ WORKDIR /app/apps/web RUN dotnet publish -c Release -o out -FROM mcr.microsoft.com/dotnet/aspnet:9.0-alpine AS runtime +FROM mcr.microsoft.com/dotnet/aspnet:10.0-alpine AS runtime WORKDIR /app COPY --from=build-web /app/apps/web/out ./ diff --git a/apps/web/Wowthing.Web.csproj b/apps/web/Wowthing.Web.csproj index 1e481af40..e4afe63d9 100644 --- a/apps/web/Wowthing.Web.csproj +++ b/apps/web/Wowthing.Web.csproj @@ -2,7 +2,7 @@ en - net9.0 + net10.0 @@ -10,16 +10,16 @@ - - - - - - - + + + + + + + - + diff --git a/apps/web/development.Dockerfile b/apps/web/development.Dockerfile index 1072dd093..25bd8d5e1 100644 --- a/apps/web/development.Dockerfile +++ b/apps/web/development.Dockerfile @@ -1,4 +1,4 @@ -FROM mcr.microsoft.com/dotnet/sdk:9.0 +FROM mcr.microsoft.com/dotnet/sdk:10.0 WORKDIR /app/apps/web diff --git a/packages/csharp-lib/Extensions/IDatabaseExtensions.cs b/packages/csharp-lib/Extensions/IDatabaseExtensions.cs index 616b7e212..ac69f400e 100644 --- a/packages/csharp-lib/Extensions/IDatabaseExtensions.cs +++ b/packages/csharp-lib/Extensions/IDatabaseExtensions.cs @@ -40,7 +40,7 @@ public static async Task JsonGetAsync(this IDatabase db, string key) public static async Task JsonSetAsync(this IDatabase db, string key, T obj, TimeSpan? expiry = null) { - return await db.StringSetAsync(key, JsonSerializer.Serialize(obj), expiry); + return await db.StringSetAsync(key, JsonSerializer.Serialize(obj), TimeSpanToExpiration(expiry)); } public static async Task StringMultiGetAsync(this IDatabase db, IEnumerable keys) @@ -52,7 +52,7 @@ public static async Task StringMultiGetAsync(this IDatabase db, IEnume public static async Task StringMultiSetAsync(this IDatabase db, IEnumerable keys, string value, TimeSpan? expiry = null) { - var tasks = keys.Select(k => db.StringSetAsync(k, value, expiry)); + var tasks = keys.Select(k => db.StringSetAsync(k, value, TimeSpanToExpiration(expiry))); await Task.WhenAll(tasks); } @@ -71,6 +71,11 @@ public static async Task CompressedStringGetAsync(this IDatabase db, str public static async Task CompressedStringSetAsync(this IDatabase db, string key, string value, TimeSpan? expiry = null) { byte[] data = LZ4Pickler.Pickle(Encoding.UTF8.GetBytes(value)); - return await db.StringSetAsync(key, data, expiry); + return await db.StringSetAsync(key, data, TimeSpanToExpiration(expiry)); + } + + private static Expiration TimeSpanToExpiration(TimeSpan? expiry) + { + return expiry != null ? new Expiration((TimeSpan)expiry) : Expiration.Default; } } diff --git a/packages/csharp-lib/Wowthing.Lib.csproj b/packages/csharp-lib/Wowthing.Lib.csproj index 28fdf58e1..e205bae27 100644 --- a/packages/csharp-lib/Wowthing.Lib.csproj +++ b/packages/csharp-lib/Wowthing.Lib.csproj @@ -1,24 +1,24 @@  - net9.0 + net10.0 - + - - - - + + + + all runtime; build; native; contentfiles; analyzers; buildtransitive - - - + + + - +