1
0
Fork 0
mirror of https://github.com/mealie-recipes/mealie.git synced 2025-07-24 15:49:42 +02:00

Use composition API for more components, enable more type checking (#914)

* Activate more linting rules from eslint and typescript

* Properly add VForm as type information

* Fix usage of native types

* Fix more linting issues

* Rename vuetify types file, add VTooltip

* Fix some more typing problems

* Use composition API for more components

* Convert RecipeRating

* Convert RecipeNutrition

* Convert more components to composition API

* Fix globals plugin for type checking

* Add missing icon types

* Fix vuetify types in Nuxt context

* Use composition API for RecipeActionMenu

* Convert error.vue to composition API

* Convert RecipeContextMenu to composition API

* Use more composition API and type checking in recipe/create

* Convert AppButtonUpload to composition API

* Fix some type checking in RecipeContextMenu

* Remove unused components BaseAutoForm and BaseColorPicker

* Convert RecipeCategoryTagDialog to composition API

* Convert RecipeCardSection to composition API

* Convert RecipeCategoryTagSelector to composition API

* Properly import vuetify type definitions

* Convert BaseButton to composition API

* Convert AutoForm to composition API

* Remove unused requests API file

* Remove static routes from recipe API

* Fix more type errors

* Convert AppHeader to composition API, fixing some search bar focus problems

* Convert RecipeDialogSearch to composition API

* Update API types from pydantic models, handle undefined values

* Improve more typing problems

* Add types to other plugins

* Properly type the CRUD API access

* Fix typing of static image routes

* Fix more typing stuff

* Fix some more typing problems

* Turn off more rules
This commit is contained in:
Philipp Fischbeck 2022-01-09 07:15:23 +01:00 committed by GitHub
parent d5ab5ec66f
commit 86c99b10a2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
114 changed files with 2218 additions and 2033 deletions

View file

@ -80,20 +80,21 @@
</v-container>
</v-container>
</template>
<script lang="ts">
import { defineComponent, ref, useRoute, useRouter } from "@nuxtjs/composition-api";
import { until, invoke } from "@vueuse/core";
import { Food, ParsedIngredient, Parser } from "~/api/class-interfaces/recipes/types";
import { invoke, until } from "@vueuse/core";
import { ParsedIngredient, Parser } from "~/api/class-interfaces/recipes/types";
import { CreateIngredientFood, CreateIngredientUnit, IngredientFood, IngredientUnit } from "~/types/api-types/recipe";
import RecipeIngredientEditor from "~/components/Domain/Recipe/RecipeIngredientEditor.vue";
import { useUserApi } from "~/composables/api";
import { useRecipe, useFoods, useUnits } from "~/composables/recipes";
import { RecipeIngredientUnit } from "~/types/api-types/recipe";
import { useFoods, useRecipe, useUnits } from "~/composables/recipes";
interface Error {
ingredientIndex: number;
unitError: Boolean;
unitError: boolean;
unitErrorMessage: string;
foodError: Boolean;
foodError: boolean;
foodErrorMessage: string;
}
@ -125,10 +126,10 @@ export default defineComponent({
const parsedIng = ref<ParsedIngredient[]>([]);
async function fetchParsed() {
if (!recipe.value) {
if (!recipe.value || !recipe.value.recipeIngredient) {
return;
}
const raw = recipe.value.recipeIngredient.map((ing) => ing.note);
const raw = recipe.value.recipeIngredient.map((ing) => ing.note ?? "");
const { data } = await api.recipes.parseIngredients(parser.value, raw);
if (data) {
@ -187,7 +188,7 @@ export default defineComponent({
const errors = ref<Error[]>([]);
function checkForUnit(unit: RecipeIngredientUnit | null) {
function checkForUnit(unit?: IngredientUnit | CreateIngredientUnit) {
if (!unit) {
return false;
}
@ -197,7 +198,7 @@ export default defineComponent({
return false;
}
function checkForFood(food: Food | null) {
function checkForFood(food?: IngredientFood | CreateIngredientFood) {
if (!food) {
return false;
}
@ -207,7 +208,7 @@ export default defineComponent({
return false;
}
async function createFood(food: Food, index: number) {
async function createFood(food: CreateIngredientFood, index: number) {
workingFoodData.name = food.name;
await actions.createOne();
errors.value[index].foodError = false;
@ -227,16 +228,14 @@ export default defineComponent({
return ing;
}
// Get food from foods
const food = foods.value.find((f) => f.name === ing.food?.name);
ing.food = food || null;
ing.food = foods.value.find((f) => f.name === ing.food?.name);
// Get unit from units
const unit = units.value.find((u) => u.name === ing.unit?.name);
ing.unit = unit || null;
ing.unit = units.value.find((u) => u.name === ing.unit?.name);
return ing;
});
if (!recipe.value) {
if (!recipe.value || !recipe.value.slug) {
return;
}
@ -272,4 +271,4 @@ export default defineComponent({
},
});
</script>