diff --git a/.vscode/settings.json b/.vscode/settings.json index 21ff09b98881..b0dfef42d8b3 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,28 +1,19 @@ { "python.formatting.provider": "black", "python.pythonPath": ".venv/bin/python3.9", - "python.linting.pylintEnabled": true, + "python.linting.pylintEnabled": false, "python.linting.enabled": true, "python.testing.unittestEnabled": false, "python.testing.nosetestsEnabled": false, "python.testing.pytestEnabled": true, "python.testing.autoTestDiscoverOnSaveEnabled": false, "python.testing.pytestArgs": ["tests"], - "cSpell.enableFiletypes": [ - "!javascript", - "!python", - "!yaml" - ], + "cSpell.enableFiletypes": ["!javascript", "!python", "!yaml"], "i18n-ally.localesPaths": "frontend/src/locales/messages", "i18n-ally.sourceLanguage": "en-US", "i18n-ally.enabledFrameworks": ["vue"], "i18n-ally.keystyle": "nested", - "cSpell.words": [ - "compression", - "hkotel", - "performant", - "postgres", - "webp" - ], - "search.mode": "reuseEditor" + "cSpell.words": ["compression", "hkotel", "performant", "postgres", "webp"], + "search.mode": "reuseEditor", + "python.linting.flake8Enabled": true } diff --git a/Caddyfile b/Caddyfile index 0faf9fe7d519..73fb21ab345b 100644 --- a/Caddyfile +++ b/Caddyfile @@ -6,11 +6,11 @@ :80 { @proxied path /api/* /docs /openapi.json - root * /app/dist - encode gzip + encode gzip zstd uri strip_suffix / - handle_path /api/recipes/media/* { + # Handles Recipe Images / Assets + handle_path /api/media/recipes/* { root * /app/data/recipes/ file_server } @@ -20,8 +20,8 @@ } handle { - try_files {path}.html {path} / + root * /app/dist + try_files {path}.html {path} /index.html file_server } - } \ No newline at end of file diff --git a/Caddyfile.dev b/Caddyfile.dev new file mode 100644 index 000000000000..f8d99bb39756 --- /dev/null +++ b/Caddyfile.dev @@ -0,0 +1,9 @@ +{ + admin off +} + +localhost { + handle /mealie/* { + reverse_proxy http://127.0.0.1:9090 + } +} \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 07593c5670d3..09452c92cf5a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -6,6 +6,8 @@ services: dockerfile: Dockerfile container_name: mealie restart: always + depends_on: + - "postgres" ports: - 9090:80 environment: diff --git a/frontend/src/api/recipe.js b/frontend/src/api/recipe.js index 4410b23a1e11..948f766d5062 100644 --- a/frontend/src/api/recipe.js +++ b/frontend/src/api/recipe.js @@ -135,14 +135,18 @@ export const recipeAPI = { }, recipeImage(recipeSlug) { - return `/api/recipes/media/${recipeSlug}/images/original.webp`; + return `/api/media/recipes/${recipeSlug}/images/original.webp`; }, recipeSmallImage(recipeSlug) { - return `/api/recipes/media/${recipeSlug}/images/min-original.webp`; + return `/api/media/recipes/${recipeSlug}/images/min-original.webp`; }, recipeTinyImage(recipeSlug) { - return `/api/recipes/media/${recipeSlug}/images/tiny-original.webp`; + return `/api/media/recipes/${recipeSlug}/images/tiny-original.webp`; + }, + + recipeAssetPath(recipeSlug, assetName) { + return `api/media/recipes/${recipeSlug}/assets/${assetName}`; }, }; diff --git a/frontend/src/api/themes.js b/frontend/src/api/themes.js index cfd433594398..0917afb31a4d 100644 --- a/frontend/src/api/themes.js +++ b/frontend/src/api/themes.js @@ -6,10 +6,10 @@ const prefix = baseURL + "themes"; const settingsURLs = { allThemes: `${baseURL}themes`, - specificTheme: themeName => `${prefix}/${themeName}`, + specificTheme: id => `${prefix}/${id}`, createTheme: `${prefix}/create`, - updateTheme: themeName => `${prefix}/${themeName}`, - deleteTheme: themeName => `${prefix}/${themeName}`, + updateTheme: id => `${prefix}/${id}`, + deleteTheme: id => `${prefix}/${id}`, }; export const themeAPI = { @@ -32,22 +32,18 @@ export const themeAPI = { ); }, - update(themeName, colors) { - const body = { - name: themeName, - colors: colors, - }; + update(data) { return apiReq.put( - settingsURLs.updateTheme(themeName), - body, + settingsURLs.updateTheme(data.id), + data, () => i18n.t("settings.theme.error-updating-theme"), () => i18n.t("settings.theme.theme-updated") ); }, - delete(themeName) { + delete(id) { return apiReq.delete( - settingsURLs.deleteTheme(themeName), + settingsURLs.deleteTheme(id), null, () => i18n.t("settings.theme.error-deleting-theme"), () => i18n.t("settings.theme.theme-deleted") diff --git a/frontend/src/components/FormHelpers/ColorPickerDialog.vue b/frontend/src/components/FormHelpers/ColorPickerDialog.vue index 3c0fc13be4b3..13ba003ec499 100644 --- a/frontend/src/components/FormHelpers/ColorPickerDialog.vue +++ b/frontend/src/components/FormHelpers/ColorPickerDialog.vue @@ -3,7 +3,7 @@

{{ buttonText }}

- + diff --git a/frontend/src/pages/Admin/Backup/ImportOptions.vue b/frontend/src/components/FormHelpers/ImportOptions.vue similarity index 92% rename from frontend/src/pages/Admin/Backup/ImportOptions.vue rename to frontend/src/components/FormHelpers/ImportOptions.vue index 35e783c06450..74f133edbbe6 100644 --- a/frontend/src/pages/Admin/Backup/ImportOptions.vue +++ b/frontend/src/components/FormHelpers/ImportOptions.vue @@ -1,8 +1,8 @@ diff --git a/frontend/src/pages/Admin/Backup/ImportDialog.vue b/frontend/src/components/UI/Dialogs/ImportDialog.vue similarity index 97% rename from frontend/src/pages/Admin/Backup/ImportDialog.vue rename to frontend/src/components/UI/Dialogs/ImportDialog.vue index 0aed4c0e2f46..49eef5a33082 100644 --- a/frontend/src/pages/Admin/Backup/ImportDialog.vue +++ b/frontend/src/components/UI/Dialogs/ImportDialog.vue @@ -48,7 +48,7 @@ - - diff --git a/frontend/src/pages/Admin/Backup/NewBackupCard.vue b/frontend/src/pages/Admin/Backup/NewBackupCard.vue deleted file mode 100644 index e7d903a12b55..000000000000 --- a/frontend/src/pages/Admin/Backup/NewBackupCard.vue +++ /dev/null @@ -1,113 +0,0 @@ - - - - - diff --git a/frontend/src/pages/Admin/Backup/index.vue b/frontend/src/pages/Admin/Backup/index.vue deleted file mode 100644 index 6644901b50bc..000000000000 --- a/frontend/src/pages/Admin/Backup/index.vue +++ /dev/null @@ -1,75 +0,0 @@ - - - - - diff --git a/frontend/src/pages/Admin/Dashboard/BackupViewer.vue b/frontend/src/pages/Admin/Dashboard/BackupViewer.vue index 5ef1259685c6..cda4e95df8f4 100644 --- a/frontend/src/pages/Admin/Dashboard/BackupViewer.vue +++ b/frontend/src/pages/Admin/Dashboard/BackupViewer.vue @@ -26,6 +26,8 @@ + + mdi-plus Create @@ -36,7 +38,7 @@ - mdi-backup-restore + mdi-database @@ -65,13 +67,14 @@ import TheUploadBtn from "@/components/UI/Buttons/TheUploadBtn"; import ImportSummaryDialog from "@/components/ImportSummaryDialog"; import { api } from "@/api"; -import StatCard from "./StatCard"; -import ImportDialog from "../Backup/ImportDialog"; +import StatCard from "@/components/UI/StatCard"; +import BackupDialog from "@/components/UI/Dialogs/BackupDialog"; +import ImportDialog from "@/components/UI/Dialogs/ImportDialog"; export default { - components: { StatCard, ImportDialog, TheUploadBtn, ImportSummaryDialog }, + components: { StatCard, ImportDialog, TheUploadBtn, ImportSummaryDialog, BackupDialog }, data() { return { - color: "secondary", + color: "accent", selectedName: "", selectedDate: "", loading: false, @@ -91,7 +94,6 @@ export default { async getAvailableBackups() { const response = await api.backups.requestAvailable(); this.availableBackups = response.imports; - console.log(this.availableBackups); }, async deleteBackup(name) { @@ -106,6 +108,7 @@ export default { this.selectedName = backup.name; this.$refs.import_dialog.open(); }, + async importBackup(data) { this.loading = true; const response = await api.backups.import(data.name, data); diff --git a/frontend/src/pages/Admin/Dashboard/EventViewer.vue b/frontend/src/pages/Admin/Dashboard/EventViewer.vue index 5070c677b6eb..417fe1a176a7 100644 --- a/frontend/src/pages/Admin/Dashboard/EventViewer.vue +++ b/frontend/src/pages/Admin/Dashboard/EventViewer.vue @@ -49,12 +49,12 @@ + + \ No newline at end of file diff --git a/frontend/src/pages/Admin/Profile/UserCard.vue b/frontend/src/pages/Admin/Profile/UserCard.vue new file mode 100644 index 000000000000..190c0fd65142 --- /dev/null +++ b/frontend/src/pages/Admin/Profile/UserCard.vue @@ -0,0 +1,190 @@ + + + + + diff --git a/frontend/src/pages/Admin/Profile/index.vue b/frontend/src/pages/Admin/Profile/index.vue index 106d4b9899b5..9aea25370871 100644 --- a/frontend/src/pages/Admin/Profile/index.vue +++ b/frontend/src/pages/Admin/Profile/index.vue @@ -1,206 +1,27 @@ diff --git a/frontend/src/pages/Admin/Theme/NewThemeDialog.vue b/frontend/src/pages/Admin/Theme/NewThemeDialog.vue deleted file mode 100644 index f704bada500d..000000000000 --- a/frontend/src/pages/Admin/Theme/NewThemeDialog.vue +++ /dev/null @@ -1,89 +0,0 @@ - - - - - diff --git a/frontend/src/pages/Admin/Theme/ThemeCard.vue b/frontend/src/pages/Admin/Theme/ThemeCard.vue deleted file mode 100644 index e0d67e2855f0..000000000000 --- a/frontend/src/pages/Admin/Theme/ThemeCard.vue +++ /dev/null @@ -1,88 +0,0 @@ - - - - - diff --git a/frontend/src/pages/Admin/Theme/index.vue b/frontend/src/pages/Admin/Theme/index.vue deleted file mode 100644 index 4c30adf7df22..000000000000 --- a/frontend/src/pages/Admin/Theme/index.vue +++ /dev/null @@ -1,155 +0,0 @@ - - - - - diff --git a/frontend/src/pages/HomePage.vue b/frontend/src/pages/HomePage.vue index abc1f7d52d71..f8d0b5cd1f15 100644 --- a/frontend/src/pages/HomePage.vue +++ b/frontend/src/pages/HomePage.vue @@ -1,6 +1,7 @@