From dbe626d595e396a21d08c5f7ae52516a768008bf Mon Sep 17 00:00:00 2001 From: VincentMeilinger Date: Thu, 7 Mar 2024 19:09:39 +0100 Subject: [PATCH] Bug fixes and UI polish --- .../project.pbxproj | 4 + .../UserInterfaceState.xcuserstate | Bin 152679 -> 154749 bytes .../ncgradientdarkblue.colorset/Contents.json | 56 ++ .../Contents.json | 56 ++ .../Data/ObservableRecipeDetail.swift | 7 + .../Extensions/ColorExtension.swift | 6 + .../Localizable.xcstrings | 761 +++++++++++++++--- .../Network/CookbookApi/CookbookApiV1.swift | 1 + .../Views/Recipes/RecipeListView.swift | 3 + .../Views/Recipes/RecipeView.swift | 56 +- .../RecipeImportSection.swift | 52 ++ .../RecipeIngredientSection.swift | 2 +- .../RecipeMetadataSection.swift | 35 +- .../Views/Recipes/ShareView.swift | 52 +- .../Views/Tabs/RecipeTabView.swift | 6 + 15 files changed, 922 insertions(+), 175 deletions(-) create mode 100644 Nextcloud Cookbook iOS Client/Assets.xcassets/ncgradientdarkblue.colorset/Contents.json create mode 100644 Nextcloud Cookbook iOS Client/Assets.xcassets/ncgradientlightblue.colorset/Contents.json create mode 100644 Nextcloud Cookbook iOS Client/Views/Recipes/RecipeViewSections/RecipeImportSection.swift diff --git a/Nextcloud Cookbook iOS Client.xcodeproj/project.pbxproj b/Nextcloud Cookbook iOS Client.xcodeproj/project.pbxproj index 0d85e80..4f76e6e 100644 --- a/Nextcloud Cookbook iOS Client.xcodeproj/project.pbxproj +++ b/Nextcloud Cookbook iOS Client.xcodeproj/project.pbxproj @@ -65,6 +65,7 @@ A9CA6CEF2B4C086100F78AB5 /* RecipeExporter.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9CA6CEE2B4C086100F78AB5 /* RecipeExporter.swift */; }; A9CA6CF62B4C63F200F78AB5 /* TPPDF in Frameworks */ = {isa = PBXBuildFile; productRef = A9CA6CF52B4C63F200F78AB5 /* TPPDF */; }; A9D89AB02B4FE97800F49D92 /* TimerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9D89AAF2B4FE97800F49D92 /* TimerView.swift */; }; + A9D8F9052B99F3E5009BACAE /* RecipeImportSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9D8F9042B99F3E4009BACAE /* RecipeImportSection.swift */; }; A9FA2AB62B5079B200A43702 /* alarm_sound_0.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = A9FA2AB52B5079B200A43702 /* alarm_sound_0.mp3 */; }; /* End PBXBuildFile section */ @@ -145,6 +146,7 @@ A9BBB38F2B91BE31002DA7FF /* ObservableRecipeDetail.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ObservableRecipeDetail.swift; sourceTree = ""; }; A9CA6CEE2B4C086100F78AB5 /* RecipeExporter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecipeExporter.swift; sourceTree = ""; }; A9D89AAF2B4FE97800F49D92 /* TimerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimerView.swift; sourceTree = ""; }; + A9D8F9042B99F3E4009BACAE /* RecipeImportSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecipeImportSection.swift; sourceTree = ""; }; A9DA25D42B82096B0061FC2B /* Nextcloud-Cookbook-iOS-Client-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = "Nextcloud-Cookbook-iOS-Client-Info.plist"; sourceTree = SOURCE_ROOT; }; A9FA2AB52B5079B200A43702 /* alarm_sound_0.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = alarm_sound_0.mp3; sourceTree = ""; }; /* End PBXFileReference section */ @@ -356,6 +358,7 @@ A7F3F8E72ACBFC760076C227 /* RecipeKeywordSection.swift */, A97506142B920DF200E86029 /* RecipeGenericViews.swift */, A97506202B92104700E86029 /* RecipeMetadataSection.swift */, + A9D8F9042B99F3E4009BACAE /* RecipeImportSection.swift */, ); path = RecipeViewSections; sourceTree = ""; @@ -573,6 +576,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + A9D8F9052B99F3E5009BACAE /* RecipeImportSection.swift in Sources */, A9BBB38E2B8E44B3002DA7FF /* BottomClipper.swift in Sources */, A97506192B920EC200E86029 /* RecipeIngredientSection.swift in Sources */, A97B4D352B80B82A00EC1A88 /* ShareView.swift in Sources */, diff --git a/Nextcloud Cookbook iOS Client.xcodeproj/project.xcworkspace/xcuserdata/vincie.xcuserdatad/UserInterfaceState.xcuserstate b/Nextcloud Cookbook iOS Client.xcodeproj/project.xcworkspace/xcuserdata/vincie.xcuserdatad/UserInterfaceState.xcuserstate index 05fabb515abd3d5b02a9ecd75e2d1dd0fbd30e1c..8e75c4df42eeb411668f69383020784c44004d94 100644 GIT binary patch literal 154749 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 literal 152679 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 diff --git a/Nextcloud Cookbook iOS Client/Assets.xcassets/ncgradientdarkblue.colorset/Contents.json b/Nextcloud Cookbook iOS Client/Assets.xcassets/ncgradientdarkblue.colorset/Contents.json new file mode 100644 index 0000000..f31fd0e --- /dev/null +++ b/Nextcloud Cookbook iOS Client/Assets.xcassets/ncgradientdarkblue.colorset/Contents.json @@ -0,0 +1,56 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x29", + "green" : "0x1B", + "red" : "0x00" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "light" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xFF", + "green" : "0xE2", + "red" : "0xAD" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x29", + "green" : "0x1B", + "red" : "0x00" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Nextcloud Cookbook iOS Client/Assets.xcassets/ncgradientlightblue.colorset/Contents.json b/Nextcloud Cookbook iOS Client/Assets.xcassets/ncgradientlightblue.colorset/Contents.json new file mode 100644 index 0000000..416f3ca --- /dev/null +++ b/Nextcloud Cookbook iOS Client/Assets.xcassets/ncgradientlightblue.colorset/Contents.json @@ -0,0 +1,56 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x52", + "green" : "0x35", + "red" : "0x00" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "light" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xFF", + "green" : "0xF8", + "red" : "0xEB" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x52", + "green" : "0x35", + "red" : "0x00" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Nextcloud Cookbook iOS Client/Data/ObservableRecipeDetail.swift b/Nextcloud Cookbook iOS Client/Data/ObservableRecipeDetail.swift index 18cc166..999d904 100644 --- a/Nextcloud Cookbook iOS Client/Data/ObservableRecipeDetail.swift +++ b/Nextcloud Cookbook iOS Client/Data/ObservableRecipeDetail.swift @@ -82,6 +82,13 @@ class ObservableRecipeDetail: ObservableObject { nutrition: self.nutrition ) } + + func ingredients(for servings: Int) -> [String] { + for ingredient in recipeIngredient { + // TODO: Parse ingredient strings, adjust them for yield + } + return [] + } } diff --git a/Nextcloud Cookbook iOS Client/Extensions/ColorExtension.swift b/Nextcloud Cookbook iOS Client/Extensions/ColorExtension.swift index 66136e6..439e045 100644 --- a/Nextcloud Cookbook iOS Client/Extensions/ColorExtension.swift +++ b/Nextcloud Cookbook iOS Client/Extensions/ColorExtension.swift @@ -21,4 +21,10 @@ extension Color { public static var background: Color { return Color(UIColor.systemBackground) } + public static var ncGradientDark: Color { + return Color("ncgradientdarkblue") + } + public static var ncGradientLight: Color { + return Color("ncgradientlightblue") + } } diff --git a/Nextcloud Cookbook iOS Client/Localizable.xcstrings b/Nextcloud Cookbook iOS Client/Localizable.xcstrings index db55e15..9c834ce 100644 --- a/Nextcloud Cookbook iOS Client/Localizable.xcstrings +++ b/Nextcloud Cookbook iOS Client/Localizable.xcstrings @@ -114,11 +114,29 @@ }, "%@: %@" : { "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "%1$@: %2$@" + } + }, "en" : { "stringUnit" : { "state" : "new", "value" : "%1$@: %2$@" } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "%1$@: %2$@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "%1$@: %2$@" + } } } }, @@ -168,11 +186,29 @@ }, "%lld h %lld min" : { "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "%1$lld h %2$lld min" + } + }, "en" : { "stringUnit" : { "state" : "new", "value" : "%1$lld h %2$lld min" } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "%1$lld h %2$lld min" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "%1$lld h %2$lld min" + } } } }, @@ -226,8 +262,27 @@ } } }, - "%lld serving(s)" : { - + "%lld Serving(s)" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld Portion(en)" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld Porción(es)" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld Portion(s)" + } + } + } }, "%lld." : { "extractionState" : "stale", @@ -431,14 +486,33 @@ } }, "Add cooking steps for fellow chefs to follow." : { - + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Hier ist Platz für eine Rezeptanleitung." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Todavía no hay pasos de cocina." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Il n'y a pas encore d'étapes de cuisson." + } + } + } }, "Add groceries to this list by either using the button next to an ingredient list in a recipe, or by swiping right on individual ingredients of a recipe." : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Wenn du alle Zutaten eines Rezepts auf einmal hinzufügen möchtest, klicke einfach auf den „Einkaufsliste“-Button, den du neben der Zutatenliste des Rezepts findest. Möchtest du nur einzelne Zutaten hinzufügen, wische die gewünschte Zutat in der Liste des Rezepts einfach nach rechts." + "value" : "Für das Hinzufügen aller Zutaten eines Rezepts kann der „Einkaufsliste“-Button neben der Zutatenliste eines Rezepts benutzt werden. Sollen nur einzelne Zutaten hinzugefügt werden, kann die gewünschte Zutat in der Liste des Rezepts nach rechts gewischt werden." } }, "es" : { @@ -589,7 +663,27 @@ } }, "Calories" : { - "comment" : "Calories" + "comment" : "Calories", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kalorien" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Calorías" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Calories" + } + } + } }, "Cancel" : { "localizations" : { @@ -614,7 +708,27 @@ } }, "Carbohydrate content" : { - "comment" : "Carbohydrate content" + "comment" : "Carbohydrate content", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kohlenhydratgehalt" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Carbohidratos" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Glucides" + } + } + } }, "Category" : { "localizations" : { @@ -662,10 +776,49 @@ } }, "Cholesterol content" : { - "comment" : "Cholesterol content" + "comment" : "Cholesterol content", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cholesteringehalt" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Colesterol" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cholestérol" + } + } + } }, "Choose" : { - + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Auswählen" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Elija" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Choisissez" + } + } + } }, "Configure what is stored on your device." : { "localizations" : { @@ -821,29 +974,6 @@ } } }, - "Cooking duration:" : { - "extractionState" : "stale", - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Kochen:" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "Duración de cocción:" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Temps de cuisson:" - } - } - } - }, "Cooking time" : { "localizations" : { "de" : { @@ -982,7 +1112,7 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Rezept Löschen" + "value" : "Rezept löschen" } }, "es" : { @@ -1000,7 +1130,26 @@ } }, "Delete Recipe" : { - + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rezept löschen" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Eliminar receta" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer la recette" + } + } + } }, "Delete recipe?" : { "localizations" : { @@ -1075,6 +1224,18 @@ "state" : "translated", "value" : "Fertig" } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Hecho" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Terminer" + } } } }, @@ -1300,10 +1461,50 @@ } }, "Fat content" : { - "comment" : "Fat content" + "comment" : "Fat content", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fett" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Grasas" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Lipides" + } + } + } }, "Fiber content" : { - "comment" : "Fiber content" + "comment" : "Fiber content", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ballaststoffgehalt" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fibra dietética" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fibres alimentaires" + } + } + } }, "General" : { "localizations" : { @@ -1372,7 +1573,26 @@ } }, "Hours" : { - + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Stunden" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Horas" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Heures" + } + } + } }, "If 'Same as Device' is selected and your device language is not supported yet, this option will default to english." : { "localizations" : { @@ -1423,7 +1643,7 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Möchtest du einen Beitrag zu diesem Projekt leisten oder einfach nur einen Blick in den Quellcode werfen? Wir freuen uns über jedes Interesse und laden dich ein, das GitHub-Repository unserer Anwendung zu besuchen." + "value" : "Wir freuen uns über jedes Interesse und laden Nutzer ein, das GitHub-Repository dieser Anwendung zu besuchen, um einen Beitrag zu diesem Projekt zu leisten oder einfach nur einen Blick in den Quellcode zu werfen. " } }, "es" : { @@ -1462,29 +1682,6 @@ } } }, - "Image MIME Error" : { - "extractionState" : "stale", - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "MIME fehler" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "" - } - } - } - }, "Import" : { "localizations" : { "de" : { @@ -1529,37 +1726,27 @@ } } }, - "Import recipe from a website" : { - "extractionState" : "stale", + "Ingredient" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Rezept von einer Website importieren (Experimentell)" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Import recipe from a website (Experimental)" + "value" : "Zutat" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Importar receta desde un sitio web (Experimental)" + "value" : "Ingrediente" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Importer une recette depuis un site web (Expérimental)" + "value" : "Ingrédient" } } } - }, - "Ingredient" : { - }, "Ingredients" : { "localizations" : { @@ -1628,7 +1815,26 @@ } }, "Instruction" : { - + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Anleitung" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Instrucción" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Instruction" + } + } + } }, "Instructions" : { "localizations" : { @@ -1763,7 +1969,26 @@ } }, "List your tools here. 🍴" : { - + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Küchenutensilien können hier notiert werden. 🍴" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enumera tus utensilios de cocina aquí. 🍴" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Listez vos ustensiles de cuisine ici. 🍴" + } + } + } }, "Log out" : { "localizations" : { @@ -1876,7 +2101,26 @@ } }, "Minutes" : { - + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Minuten" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Minutos" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Minutes" + } + } + } }, "Missing Name" : { "extractionState" : "stale", @@ -2014,7 +2258,26 @@ } }, "New Recipe" : { - + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Neues Rezept" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nueva receta" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nouvelle recette" + } + } + } }, "Nextcloud Login" : { "localizations" : { @@ -2307,7 +2570,7 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Bitte überprüfe die Anmeldedaten oder die Internetverbindung." + "value" : "Bitte die Anmeldedaten und die Internetverbindung überprüfen." } }, "es" : { @@ -2392,7 +2655,27 @@ } }, "Protein content" : { - "comment" : "Protein content" + "comment" : "Protein content", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Proteingehalt" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Proteínas" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Protéines" + } + } + } }, "Recipe" : { "localizations" : { @@ -2417,7 +2700,26 @@ } }, "Recipe Name" : { - + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rezept-Titel" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Título de la receta" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Titre de la recette" + } + } + } }, "Recipes" : { "localizations" : { @@ -2486,7 +2788,27 @@ } }, "Saturated fat content" : { - "comment" : "Saturated fat content" + "comment" : "Saturated fat content", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Gesättigte Fettsäuren" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Grasas saturadas" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Graisses saturées" + } + } + } }, "Search" : { "localizations" : { @@ -2577,7 +2899,26 @@ } }, "Select Keywords" : { - + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Schlagwörter auswählen" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Seleccione palabras clave" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sélectionnez les mots-clés" + } + } + } }, "Selected keywords:" : { "localizations" : { @@ -2602,10 +2943,49 @@ } }, "Serving size" : { - "comment" : "Serving size" + "comment" : "Serving size", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Portionen" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Porciones" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Portions" + } + } + } }, "Servings" : { - + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Portionen" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Porciones" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Portions" + } + } + } }, "Servings:" : { "extractionState" : "stale", @@ -2720,7 +3100,26 @@ } }, "Share Recipe" : { - + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Teilen" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Compartir receta" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Partager la recette" + } + } + } }, "Show help" : { "localizations" : { @@ -2745,10 +3144,49 @@ } }, "Sodium content" : { - "comment" : "Sodium content" + "comment" : "Sodium content", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Natriumgehalt" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sodio" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sodium" + } + } + } }, "Start by adding your first ingredient! 🥬" : { - + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Hier fehlen Zutaten! 🥬" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "¡Empieza por añadir tu primer ingrediente! 🥬" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Commencez par ajouter votre premier ingrédient ! 🥬" + } + } + } }, "Store recipe images locally" : { "localizations" : { @@ -2817,7 +3255,27 @@ } }, "Sugar content" : { - "comment" : "Sugar content" + "comment" : "Sugar content", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zuckergehalt" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Azúcares" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sucres" + } + } + } }, "Support" : { "localizations" : { @@ -3002,7 +3460,7 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Diese Anwendung ist ein Open-Source-Projekt. Bei bestehendem Interesse neue Funktionen vorzuschlagen oder beizutragen, oder wenn Probleme auftreten, nutze den Kontakt-Link oder besuche das GitHub-Repository in den App-Einstellungen." + "value" : "Diese Anwendung ist ein Open-Source-Projekt. Bei bestehendem Interesse neue Funktionen vorzuschlagen oder beizutragen, oder wenn Probleme auftreten, den Kontakt-Link nutzen oder das GitHub-Repository in den App-Einstellungen besuchen." } }, "es" : { @@ -3065,7 +3523,26 @@ } }, "Tool" : { - + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Küchenutensilie" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Utensilio de cocina" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ustensile de cuisine" + } + } + } }, "Tools" : { "localizations" : { @@ -3157,7 +3634,27 @@ } }, "Trans fat content" : { - "comment" : "Trans fat content" + "comment" : "Trans fat content", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Transfettgehalt" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Grasas trans" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Graisses trans" + } + } + } }, "Unable to complete action." : { "localizations" : { @@ -3208,7 +3705,7 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Der Inhalt der Website konnte nicht geladen werden. Bitte überprüfe die Internetverbindung." + "value" : "Der Inhalt der Website konnte nicht geladen werden. Bitte die Internetverbindung überprüfen." } }, "es" : { @@ -3230,7 +3727,7 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Es ist nicht möglich, das Rezept hochzuladen. Bitte überprüfe die Internetverbindung." + "value" : "Es ist nicht möglich, das Rezept hochzuladen. Bitte die Internetverbindung überprüfen." } }, "es" : { @@ -3248,7 +3745,27 @@ } }, "Unsaturated fat content" : { - "comment" : "Unsaturated fat content" + "comment" : "Unsaturated fat content", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ungesättigte Fettsäuren" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Grasas insaturadas" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Graisses insaturées" + } + } + } }, "Upload" : { "extractionState" : "stale", @@ -3274,10 +3791,48 @@ } }, "Upload Changes" : { - + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Speichern" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cargar" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Télécharger" + } + } + } }, "Upload Recipe" : { - + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Speichern" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cargar" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Télécharger" + } + } + } }, "URL (e.g. example.com/recipe)" : { "localizations" : { @@ -3330,6 +3885,18 @@ "state" : "translated", "value" : "Nutzername: %@" } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nombre de usuario: %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nom d'utilisateur: %@" + } } } }, diff --git a/Nextcloud Cookbook iOS Client/Network/CookbookApi/CookbookApiV1.swift b/Nextcloud Cookbook iOS Client/Network/CookbookApi/CookbookApiV1.swift index cbe6b59..facab74 100644 --- a/Nextcloud Cookbook iOS Client/Network/CookbookApi/CookbookApiV1.swift +++ b/Nextcloud Cookbook iOS Client/Network/CookbookApi/CookbookApiV1.swift @@ -49,6 +49,7 @@ class CookbookApiV1: CookbookApi { let (data, error) = await request.send() guard let data = data else { return (nil, error) } + print("\n\nRECIPE: ", String(data: data, encoding: .utf8)) return (JSONDecoder.safeDecode(data), nil) } diff --git a/Nextcloud Cookbook iOS Client/Views/Recipes/RecipeListView.swift b/Nextcloud Cookbook iOS Client/Views/Recipes/RecipeListView.swift index b9ebd5c..56480fd 100644 --- a/Nextcloud Cookbook iOS Client/Views/Recipes/RecipeListView.swift +++ b/Nextcloud Cookbook iOS Client/Views/Recipes/RecipeListView.swift @@ -12,6 +12,7 @@ import SwiftUI struct RecipeListView: View { @EnvironmentObject var appState: AppState + @EnvironmentObject var groceryList: GroceryList @State var categoryName: String @State var searchText: String = "" @Binding var showEditView: Bool @@ -37,6 +38,8 @@ struct RecipeListView: View { } .navigationDestination(for: Recipe.self) { recipe in RecipeView(isPresented: .constant(true), viewModel: RecipeView.ViewModel(recipe: recipe)) + .environmentObject(appState) + .environmentObject(groceryList) } .navigationTitle(categoryName == "*" ? String(localized: "Other") : categoryName) .toolbar { diff --git a/Nextcloud Cookbook iOS Client/Views/Recipes/RecipeView.swift b/Nextcloud Cookbook iOS Client/Views/Recipes/RecipeView.swift index b914a8d..a1d9190 100644 --- a/Nextcloud Cookbook iOS Client/Views/Recipes/RecipeView.swift +++ b/Nextcloud Cookbook iOS Client/Views/Recipes/RecipeView.swift @@ -13,7 +13,12 @@ struct RecipeView: View { @EnvironmentObject var appState: AppState @Binding var isPresented: Bool @StateObject var viewModel: ViewModel - @State var imageHeight: CGFloat = 350 + var imageHeight: CGFloat { + if let image = viewModel.recipeImage { + return image.size.height < 350 ? image.size.height : 350 + } + return 200 + } private enum CoordinateSpaces { case scrollView @@ -37,7 +42,7 @@ struct RecipeView: View { .frame(height: 400) .foregroundStyle( LinearGradient( - gradient: Gradient(colors: [.nextcloudBlue, .nextcloudDarkBlue]), + gradient: Gradient(colors: [.ncGradientDark, .ncGradientLight]), startPoint: .topLeading, endPoint: .bottomTrailing ) @@ -107,6 +112,7 @@ struct RecipeView: View { .coordinateSpace(name: CoordinateSpaces.scrollView) .ignoresSafeArea(.container, edges: .top) .navigationBarTitleDisplayMode(.inline) + .toolbar(.visible, for: .navigationBar) //.toolbarTitleDisplayMode(.inline) .navigationTitle(viewModel.showTitle ? viewModel.recipe.name : "") .toolbar { @@ -170,9 +176,7 @@ struct RecipeView: View { size: .FULL, fetchMode: UserSettings.shared.storeImages ? .preferLocal : .onlyServer ) - if let image = viewModel.recipeImage { - imageHeight = image.size.height < 350 ? image.size.height : 350 - } + } else { // Prepare view for a new recipe viewModel.setupView(recipeDetail: RecipeDetail()) @@ -278,6 +282,7 @@ struct RecipeView: View { } + extension RecipeView { func importRecipe(from url: String) async -> UserAlert? { let (scrapedRecipe, error) = await appState.importRecipe(url: url) @@ -300,8 +305,6 @@ extension RecipeView { } return nil } - - } @@ -446,42 +449,3 @@ struct RecipeViewToolBar: ToolbarContent { } -// MARK: - Recipe Import Section - -fileprivate struct RecipeImportSection: View { - @ObservedObject var viewModel: RecipeView.ViewModel - var importRecipe: (String) async -> UserAlert? - - var body: some View { - VStack(alignment: .leading) { - SecondaryLabel(text: "Import Recipe") - - Text(LocalizedStringKey("Paste the url of a recipe you would like to import in the above, and we will try to fill in the fields for you. This feature does not work with every website. If your favourite website is not supported, feel free to reach out for help. You can find the contact details in the app settings.")) - .font(.caption) - .foregroundStyle(.secondary) - - - TextField(LocalizedStringKey("URL (e.g. example.com/recipe)"), text: $viewModel.importUrl) - .textFieldStyle(.roundedBorder) - .padding(.top, 5) - Button { - Task { - if let res = await importRecipe(viewModel.importUrl) { - viewModel.presentAlert( - RecipeAlert.CUSTOM( - title: res.localizedTitle, - description: res.localizedDescription - ) - ) - } - } - } label: { - Text(LocalizedStringKey("Import")) - } - .buttonStyle(.bordered) - } - .padding() - .background(RoundedRectangle(cornerRadius: 20).foregroundStyle(Color.white.opacity(0.1))) - .padding() - } -} diff --git a/Nextcloud Cookbook iOS Client/Views/Recipes/RecipeViewSections/RecipeImportSection.swift b/Nextcloud Cookbook iOS Client/Views/Recipes/RecipeViewSections/RecipeImportSection.swift new file mode 100644 index 0000000..c853aed --- /dev/null +++ b/Nextcloud Cookbook iOS Client/Views/Recipes/RecipeViewSections/RecipeImportSection.swift @@ -0,0 +1,52 @@ +// +// RecipeImportSection.swift +// Nextcloud Cookbook iOS Client +// +// Created by Vincent Meilinger on 07.03.24. +// + +import Foundation +import SwiftUI + + +// MARK: - RecipeView Import Section + +struct RecipeImportSection: View { + @ObservedObject var viewModel: RecipeView.ViewModel + var importRecipe: (String) async -> UserAlert? + + var body: some View { + VStack(alignment: .leading) { + SecondaryLabel(text: "Import Recipe") + + Text(LocalizedStringKey("Paste the url of a recipe you would like to import in the above, and we will try to fill in the fields for you. This feature does not work with every website. If your favourite website is not supported, feel free to reach out for help. You can find the contact details in the app settings.")) + .font(.caption) + .foregroundStyle(.secondary) + + + TextField(LocalizedStringKey("URL (e.g. example.com/recipe)"), text: $viewModel.importUrl) + .textFieldStyle(.roundedBorder) + .padding(.top, 5) + Button { + Task { + if let res = await importRecipe(viewModel.importUrl) { + viewModel.presentAlert( + RecipeAlert.CUSTOM( + title: res.localizedTitle, + description: res.localizedDescription + ) + ) + } + } + } label: { + Text(LocalizedStringKey("Import")) + } + .buttonStyle(.bordered) + } + .padding() + .background(RoundedRectangle(cornerRadius: 20).foregroundStyle(Color.white.opacity(0.1))) + .padding(5) + .padding(.top, 5) + } +} + diff --git a/Nextcloud Cookbook iOS Client/Views/Recipes/RecipeViewSections/RecipeIngredientSection.swift b/Nextcloud Cookbook iOS Client/Views/Recipes/RecipeViewSections/RecipeIngredientSection.swift index 81aa350..8364395 100644 --- a/Nextcloud Cookbook iOS Client/Views/Recipes/RecipeViewSections/RecipeIngredientSection.swift +++ b/Nextcloud Cookbook iOS Client/Views/Recipes/RecipeViewSections/RecipeIngredientSection.swift @@ -43,7 +43,7 @@ struct RecipeIngredientSection: View { } else { Image(systemName: "heart.text.square") } - } + }.disabled(viewModel.editMode) } ForEach(0..: View where Collection.Element == Item { + @Binding var isPresented: Bool @Binding var value: Item @State var items: Collection + var title: LocalizedStringKey var titleKey: LocalizedStringKey = "" var body: some View { - HStack { - Picker(selection: $value, label: Text(titleKey)) { - ForEach(Array(items), id: \.self) { item in - Text(item.description).tag(item) + VStack { + HStack { + SecondaryLabel(text: title) + Spacer() + Button { + isPresented = false + } label: { + Text("Done") } } - .pickerStyle(WheelPickerStyle()) - .frame(width: 150, height: 150) - .clipped() + Spacer() + HStack { + Picker(selection: $value, label: Text(titleKey)) { + ForEach(Array(items), id: \.self) { item in + Text(item.description).tag(item) + } + } + .pickerStyle(WheelPickerStyle()) + .frame(width: 150, height: 150) + .clipped() + } + Spacer() } .padding() } diff --git a/Nextcloud Cookbook iOS Client/Views/Recipes/ShareView.swift b/Nextcloud Cookbook iOS Client/Views/Recipes/ShareView.swift index 655f69b..86cecec 100644 --- a/Nextcloud Cookbook iOS Client/Views/Recipes/ShareView.swift +++ b/Nextcloud Cookbook iOS Client/Views/Recipes/ShareView.swift @@ -18,37 +18,47 @@ struct ShareView: View { @State var sharedURL: URL? = nil var body: some View { - VStack(alignment: .leading) { - if let url = sharedURL { - ShareLink(item: url, subject: Text("PDF Document")) { - Image(systemName: "doc") - Text("Share as PDF") + NavigationStack { + VStack(alignment: .leading) { + if let url = sharedURL { + ShareLink(item: url, subject: Text("PDF Document")) { + Image(systemName: "doc") + Text("Share as PDF") + } + .foregroundStyle(.primary) + .bold() + .padding() + } + + ShareLink(item: exporter.createText(recipe: recipeDetail), subject: Text("Recipe")) { + Image(systemName: "ellipsis.message") + Text("Share as text") } .foregroundStyle(.primary) .bold() .padding() + + /*ShareLink(item: exporter.createJson(recipe: recipeDetail), subject: Text("Recipe")) { + Image(systemName: "doc.badge.gearshape") + Text("Share as JSON") + } + .foregroundStyle(.primary) + .bold() + .padding() + */ } - - ShareLink(item: exporter.createText(recipe: recipeDetail), subject: Text("Recipe")) { - Image(systemName: "ellipsis.message") - Text("Share as text") + .toolbar { + ToolbarItem(placement: .topBarTrailing) { + Button("Done") { + presentShareSheet = false + } + } } - .foregroundStyle(.primary) - .bold() - .padding() - - /*ShareLink(item: exporter.createJson(recipe: recipeDetail), subject: Text("Recipe")) { - Image(systemName: "doc.badge.gearshape") - Text("Share as JSON") - } - .foregroundStyle(.primary) - .bold() - .padding() - */ } .task { self.sharedURL = exporter.createPDF(recipe: recipeDetail, image: recipeImage) } + } } diff --git a/Nextcloud Cookbook iOS Client/Views/Tabs/RecipeTabView.swift b/Nextcloud Cookbook iOS Client/Views/Tabs/RecipeTabView.swift index 1b20290..56d65d4 100644 --- a/Nextcloud Cookbook iOS Client/Views/Tabs/RecipeTabView.swift +++ b/Nextcloud Cookbook iOS Client/Views/Tabs/RecipeTabView.swift @@ -10,6 +10,8 @@ import SwiftUI struct RecipeTabView: View { + @EnvironmentObject var appState: AppState + @EnvironmentObject var groceryList: GroceryList @EnvironmentObject var viewModel: RecipeTabView.ViewModel @EnvironmentObject var mainViewModel: AppState @@ -49,9 +51,12 @@ struct RecipeTabView: View { } .navigationDestination(isPresented: $viewModel.presentSettingsView) { SettingsView() + .environmentObject(appState) } .navigationDestination(isPresented: $viewModel.presentEditView) { RecipeView(isPresented: $viewModel.presentEditView, viewModel: RecipeView.ViewModel()) + .environmentObject(appState) + .environmentObject(groceryList) } } detail: { NavigationStack { @@ -62,6 +67,7 @@ struct RecipeTabView: View { ) .id(category.id) // Workaround: This is needed to update the detail view when the selection changes } + } } .tint(.nextcloudBlue)