feat: dölj SEK-receptkostnad för icke-SEK-användare + i18n:remove-language
- Recept-kostnaden ligger i SEK (basvaluta, D-028). För en spansk användare (currency != SEK) nollas estimatedCostMinorPerPortion i API:t (list + detalj) -> kostnads-taggen försvinner helt i stället för att visa en svensk SEK-siffra. (Beslut: hellre ingen uppskattning än fel valuta, tills riktpriser via kvitton/M8.) - i18n:remove-language – motsvarighet till add-language, tar bort ett språk rent. Verifierat: add el -> remove el -> byte-rent, vakt + typecheck gröna. Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -125,8 +125,12 @@ export async function recipeRoutes(app: FastifyInstance) {
|
||||
.offset(q.offset);
|
||||
|
||||
// Titlar på användarens språk där publicerad översättning finns (i18n M3).
|
||||
const languageTag = await userLanguageTag(app.db, req.userId);
|
||||
const listPrefs = await loadLocalePreferences(app.db, req.userId);
|
||||
const languageTag = listPrefs.languageTag;
|
||||
const candidates = languageCandidates(languageTag);
|
||||
// Recept-kostnaden ligger i SEK (basvaluta, D-028). Visa den bara för SEK-
|
||||
// användare – annars ingen siffra alls (hellre inget än fel valuta).
|
||||
const listShowCost = listPrefs.currencyCode === "SEK";
|
||||
let titleMap = new Map<string, string>();
|
||||
if (!candidates.includes("sv") && rows.length > 0) {
|
||||
const translations = await app.db
|
||||
@@ -153,7 +157,11 @@ export async function recipeRoutes(app: FastifyInstance) {
|
||||
}
|
||||
|
||||
return {
|
||||
recipes: rows.map((r) => ({ ...r, title: titleMap.get(r.id) ?? r.titleSv })),
|
||||
recipes: rows.map((r) => ({
|
||||
...r,
|
||||
title: titleMap.get(r.id) ?? r.titleSv,
|
||||
estimatedCostMinorPerPortion: listShowCost ? r.estimatedCostMinorPerPortion : null,
|
||||
})),
|
||||
language: candidates.includes("sv") ? "sv" : languageTag,
|
||||
};
|
||||
});
|
||||
@@ -237,7 +245,10 @@ export async function recipeRoutes(app: FastifyInstance) {
|
||||
// Täckning mot hushållets lager: vad har du hemma, vad saknas (→ inköpslista).
|
||||
const coverage = await recipeCoverage(app, householdId, recipe.ingredients);
|
||||
|
||||
const languageTag = await userLanguageTag(app.db, req.userId);
|
||||
const detailPrefs = await loadLocalePreferences(app.db, req.userId);
|
||||
const languageTag = detailPrefs.languageTag;
|
||||
// Recept-kostnaden är i SEK (D-028) – dölj den för icke-SEK-användare.
|
||||
const detailShowCost = detailPrefs.currencyCode === "SEK";
|
||||
const translation = await resolveRecipeTranslation(app.db, id, languageTag);
|
||||
const ingredientNames = await resolveIngredientNames(
|
||||
app.db,
|
||||
@@ -247,6 +258,7 @@ export async function recipeRoutes(app: FastifyInstance) {
|
||||
|
||||
return {
|
||||
...recipe,
|
||||
estimatedCostMinorPerPortion: detailShowCost ? recipe.estimatedCostMinorPerPortion : null,
|
||||
language: translation?.language ?? "sv",
|
||||
title: translation?.title ?? recipe.titleSv,
|
||||
description: translation ? translation.description : recipe.descriptionSv,
|
||||
|
||||
Reference in New Issue
Block a user