diff --git a/docs/docs/assets/img/MealieDiagram.png b/docs/docs/assets/img/MealieDiagram.png deleted file mode 100644 index fb1f4942f7d6..000000000000 Binary files a/docs/docs/assets/img/MealieDiagram.png and /dev/null differ diff --git a/docs/docs/assets/img/add-notification.webp b/docs/docs/assets/img/add-notification.webp new file mode 100644 index 000000000000..64e6314becc9 Binary files /dev/null and b/docs/docs/assets/img/add-notification.webp differ diff --git a/docs/docs/assets/img/add-user.png b/docs/docs/assets/img/add-user.png deleted file mode 100644 index 02cd1517f93a..000000000000 Binary files a/docs/docs/assets/img/add-user.png and /dev/null differ diff --git a/docs/docs/assets/img/add-user.webp b/docs/docs/assets/img/add-user.webp new file mode 100644 index 000000000000..cd2a27bacbdb Binary files /dev/null and b/docs/docs/assets/img/add-user.webp differ diff --git a/docs/docs/assets/img/admin-backup.png b/docs/docs/assets/img/admin-backup.png deleted file mode 100644 index b1f4850e4326..000000000000 Binary files a/docs/docs/assets/img/admin-backup.png and /dev/null differ diff --git a/docs/docs/assets/img/admin-backup.webp b/docs/docs/assets/img/admin-backup.webp new file mode 100644 index 000000000000..8ce626002d4c Binary files /dev/null and b/docs/docs/assets/img/admin-backup.webp differ diff --git a/docs/docs/assets/img/admin-theme.png b/docs/docs/assets/img/admin-theme.png deleted file mode 100644 index ac843547e755..000000000000 Binary files a/docs/docs/assets/img/admin-theme.png and /dev/null differ diff --git a/docs/docs/assets/img/app_diagram.drawio.svg b/docs/docs/assets/img/app_diagram.drawio.svg deleted file mode 100644 index 30e458ba587b..000000000000 --- a/docs/docs/assets/img/app_diagram.drawio.svg +++ /dev/null @@ -1,233 +0,0 @@ - \ No newline at end of file diff --git a/docs/docs/assets/img/app_diagram.png b/docs/docs/assets/img/app_diagram.png deleted file mode 100644 index 7f3356257b7c..000000000000 Binary files a/docs/docs/assets/img/app_diagram.png and /dev/null differ diff --git a/docs/docs/assets/img/mealie-diagram.webp b/docs/docs/assets/img/mealie-diagram.webp new file mode 100644 index 000000000000..29392d399d00 Binary files /dev/null and b/docs/docs/assets/img/mealie-diagram.webp differ diff --git a/docs/docs/assets/img/sign-up-links.png b/docs/docs/assets/img/sign-up-links.png deleted file mode 100644 index e8e171979184..000000000000 Binary files a/docs/docs/assets/img/sign-up-links.png and /dev/null differ diff --git a/docs/docs/assets/img/sign-up-links.webp b/docs/docs/assets/img/sign-up-links.webp new file mode 100644 index 000000000000..ec5d4760c220 Binary files /dev/null and b/docs/docs/assets/img/sign-up-links.webp differ diff --git a/docs/docs/assets/img/site-settings.png b/docs/docs/assets/img/site-settings.png deleted file mode 100644 index a52974068ca8..000000000000 Binary files a/docs/docs/assets/img/site-settings.png and /dev/null differ diff --git a/docs/docs/assets/img/site-settings.webp b/docs/docs/assets/img/site-settings.webp new file mode 100644 index 000000000000..4e0763a7bf8d Binary files /dev/null and b/docs/docs/assets/img/site-settings.webp differ diff --git a/docs/docs/getting-started/notifications.md b/docs/docs/getting-started/notifications.md new file mode 100644 index 000000000000..976b1f67b9eb --- /dev/null +++ b/docs/docs/getting-started/notifications.md @@ -0,0 +1,59 @@ +# Getting External Notifications + +## Apprise + +Using the [Apprise](https://github.com/caronc/apprise/) library Mealie is able to provided notification services for nearly every popular service. Some of our favorites are... + +- [Gotify](https://github.com/caronc/apprise/wiki/Notify_gotify) +- [Discord](https://github.com/caronc/apprise/wiki/Notify_discord) +- [Home Assistant](https://github.com/caronc/apprise/wiki/Notify_homeassistant) +- [Matrix](https://github.com/caronc/apprise/wiki/Notify_matrix) +- [Pushover](https://github.com/caronc/apprise/wiki/Notify_pushover) + +But there are some many to choose from! Take a look at their wiki for information on how to create their URL formats and that you can use to create a notification integration in Mealie. + + +## Subscribe Events +There are several categories of events that mealie logs that can be broadcast with the notifications feature. You can also see a feed of your events in the Admin Dashboard + +- General Events + - Application Startup +- Recipe Events + - Create Recipe + - Delete Recipe +- Database Events + - Export/Import + - Database Initialization +- Scheduled Events + - MealPlan Webhooks Sent +- Group Events + - Create/Delete Groups +- User Events + - User Creation + - User Sign-up + - Sign-up Token Creation + - Invalid login attempts + +In most cases the events will also provide details on which user performed the action. Now you'll know when your grandma deletes your favorite recipe! + +!!! info + This is a new feature and we are still working through all the possibilities of events. if you have an idea for an event let us know! + + +## Creating a New Notification + +New events can be created and viewed in admin Toolbox `/admin/toolbox?tab=event-notifications`. Select the "+ Notification" button and you'll be provided with a dialog. Complete the form using the URL for the service you'd like to connect to. Before saving be sure to use the test feature. + +!!! tip + The feedback provided from the test feature is only an indicated of if the URL you provided is valid, not if the message was successfully sent. Be sure to check the notification feed for the test message. + + + + +## Examples + +### Discord +![Discord]() + +### Gotify +![Gotify]() \ No newline at end of file diff --git a/docs/docs/getting-started/organizing-recipes.md b/docs/docs/getting-started/organizing-recipes.md index 639190f611a7..4a8b9a6fe65e 100644 --- a/docs/docs/getting-started/organizing-recipes.md +++ b/docs/docs/getting-started/organizing-recipes.md @@ -19,4 +19,4 @@ Below are some general guidelines that were considered when creating the organiz In the diagram below you will see what we came up with using the new custom pages feature. The large circles indicate pages, and the rectangles indicate categories. We've grouped several 'like' categories with each other as a way to quickly find similar items. - \ No newline at end of file + \ No newline at end of file diff --git a/docs/docs/overrides/api.html b/docs/docs/overrides/api.html index 3455949e007f..1b051eda4e89 100644 --- a/docs/docs/overrides/api.html +++ b/docs/docs/overrides/api.html @@ -14,7 +14,7 @@
diff --git a/docs/docs/site-administration/site-settings.md b/docs/docs/site-administration/site-settings.md index 5aff8f4461de..2ada08ea531b 100644 --- a/docs/docs/site-administration/site-settings.md +++ b/docs/docs/site-administration/site-settings.md @@ -10,7 +10,7 @@ Your sites settings panel can only be accessed by administrators. This where you | Card Per Section | The amount of cards displayed in each section on the home page | | Home Page Sections | Category sections to include on the home page | - + diff --git a/docs/docs/site-administration/user-management.md b/docs/docs/site-administration/user-management.md index cc73712b4705..b3145d1f760d 100644 --- a/docs/docs/site-administration/user-management.md +++ b/docs/docs/site-administration/user-management.md @@ -56,7 +56,7 @@ There are two ways to create users in Mealie. ### Manually Creating a User In the Manage Users section you are able to create a user by providing the necessary information in the pop-up dialog. -{: align=right style="height:50%;width:50%"} +{: align=right style="height:50%;width:50%"} - User Name - Email @@ -69,7 +69,7 @@ When creating users manually, their password will be set from the default assign ### Sign Up Links You can generate sign-up links in the Manage Users section. Select the "create link" button and provide the name of the link and if the user will be an administrator. Once a link is created it will populate in the table where you'll be able to see all active links, delete a link, and copy the link as needed. - + !!! tip When a link is used it is automatically removed from the database. diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index 90b2c871966a..b47bcc4f01c8 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -55,6 +55,7 @@ nav: - Working With Recipes: "getting-started/recipes.md" - Organizing Recipes: "getting-started/organizing-recipes.md" - Planning Meals: "getting-started/meal-planner.md" + - External Notifications: "getting-started/notifications.md" - iOS Shortcuts: "getting-started/ios.md" - Site Administration: - User Settings: "site-administration/user-settings.md" diff --git a/frontend/public/static/discord.svg b/frontend/public/static/discord.svg new file mode 100644 index 000000000000..65c9fccff751 --- /dev/null +++ b/frontend/public/static/discord.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/public/static/gotify.png b/frontend/public/static/gotify.png new file mode 100644 index 000000000000..541044cefb8e Binary files /dev/null and b/frontend/public/static/gotify.png differ diff --git a/frontend/public/static/home-assistant.png b/frontend/public/static/home-assistant.png new file mode 100644 index 000000000000..3a690e9f85d2 Binary files /dev/null and b/frontend/public/static/home-assistant.png differ diff --git a/frontend/public/static/matrix.png b/frontend/public/static/matrix.png new file mode 100644 index 000000000000..56eb45ee629d Binary files /dev/null and b/frontend/public/static/matrix.png differ diff --git a/frontend/public/static/pushover.svg b/frontend/public/static/pushover.svg new file mode 100644 index 000000000000..08956d81907a --- /dev/null +++ b/frontend/public/static/pushover.svg @@ -0,0 +1,7 @@ + + \ No newline at end of file diff --git a/frontend/src/api/about.js b/frontend/src/api/about.js index f04322939937..1cfa13f23015 100644 --- a/frontend/src/api/about.js +++ b/frontend/src/api/about.js @@ -1,5 +1,6 @@ import { baseURL } from "./api-utils"; import { apiReq } from "./api-utils"; +import i18n from "@/i18n.js"; const prefix = baseURL + "about"; @@ -12,6 +13,10 @@ const aboutURLs = { statistics: `${prefix}/statistics`, events: `${prefix}/events`, event: id => `${prefix}/events/${id}`, + + allNotifications: `${prefix}/events/notifications`, + testNotifications: `${prefix}/events/notifications/test`, + notification: id => `${prefix}/events/notifications/${id}`, }; export const aboutAPI = { @@ -27,6 +32,39 @@ export const aboutAPI = { const resposne = await apiReq.delete(aboutURLs.events); return resposne.data; }, + + async allEventNotifications() { + const response = await apiReq.get(aboutURLs.allNotifications); + return response.data; + }, + + async createNotification(data) { + const response = await apiReq.post(aboutURLs.allNotifications, data); + return response.data; + }, + + async deleteNotification(id) { + const response = await apiReq.delete(aboutURLs.notification(id)); + return response.data; + }, + async testNotificationByID(id) { + const response = await apiReq.post( + aboutURLs.testNotifications, + { id: id }, + () => i18n.t("events.something-went-wrong"), + () => i18n.t("events.test-message-sent") + ); + return response.data; + }, + async testNotificationByURL(url) { + const response = await apiReq.post( + aboutURLs.testNotifications, + { test_url: url }, + () => i18n.t("events.something-went-wrong"), + () => i18n.t("events.test-message-sent") + ); + return response.data; + }, // async getAppInfo() { // const response = await apiReq.get(aboutURLs.version); // return response.data; diff --git a/frontend/src/api/users.js b/frontend/src/api/users.js index 1ded3c6e909b..68e42c4ae6af 100644 --- a/frontend/src/api/users.js +++ b/frontend/src/api/users.js @@ -71,7 +71,7 @@ export const userAPI = { }, delete(id) { - return apiReq.delete(usersURLs.userID(id), null, deleteErrorText, function() { + return apiReq.delete(usersURLs.userID(id), null, deleteErrorText, () => { return i18n.t("user.user-deleted"); }); }, diff --git a/frontend/src/components/UI/Dialogs/BaseDialog.vue b/frontend/src/components/UI/Dialogs/BaseDialog.vue index e4a80296eed1..e83d4d584347 100644 --- a/frontend/src/components/UI/Dialogs/BaseDialog.vue +++ b/frontend/src/components/UI/Dialogs/BaseDialog.vue @@ -2,7 +2,7 @@