From 566e947ffc6b04f32970e1494569f3ea8a19134e Mon Sep 17 00:00:00 2001 From: hay-kot Date: Fri, 7 May 2021 23:05:30 -0800 Subject: [PATCH] notifications first pass --- frontend/public/static/gotify.png | Bin 0 -> 50193 bytes frontend/src/api/about.js | 18 ++ .../Admin/ToolBox/EventNotification/index.vue | 198 ++++++++++++++++++ frontend/src/pages/Admin/ToolBox/index.vue | 9 +- mealie/db/database.py | 11 +- mealie/db/models/event.py | 43 +++- mealie/routes/about/events.py | 50 ++++- mealie/schema/event_notifications.py | 59 ++++++ mealie/services/event_notifications.py | 32 +++ mealie/services/events.py | 5 + poetry.lock | 95 ++++++++- pyproject.toml | 127 +++++------ 12 files changed, 571 insertions(+), 76 deletions(-) create mode 100644 frontend/public/static/gotify.png create mode 100644 frontend/src/pages/Admin/ToolBox/EventNotification/index.vue create mode 100644 mealie/schema/event_notifications.py create mode 100644 mealie/services/event_notifications.py diff --git a/frontend/public/static/gotify.png b/frontend/public/static/gotify.png new file mode 100644 index 0000000000000000000000000000000000000000..541044cefb8ed757f13d18fdc0a890d32b26fdfe GIT binary patch literal 50193 zcmV*MKx4m&P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 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 HpM(AnRtLLk literal 0 HcmV?d00001 diff --git a/frontend/src/api/about.js b/frontend/src/api/about.js index f04322939..ad64305c7 100644 --- a/frontend/src/api/about.js +++ b/frontend/src/api/about.js @@ -12,6 +12,9 @@ const aboutURLs = { statistics: `${prefix}/statistics`, events: `${prefix}/events`, event: id => `${prefix}/events/${id}`, + + allNotifications: `${prefix}/events/notifications`, + notification: id => `${prefix}/events/notifications/${id}`, }; export const aboutAPI = { @@ -27,6 +30,21 @@ 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 getAppInfo() { // const response = await apiReq.get(aboutURLs.version); // return response.data; diff --git a/frontend/src/pages/Admin/ToolBox/EventNotification/index.vue b/frontend/src/pages/Admin/ToolBox/EventNotification/index.vue new file mode 100644 index 000000000..453ec969a --- /dev/null +++ b/frontend/src/pages/Admin/ToolBox/EventNotification/index.vue @@ -0,0 +1,198 @@ + + + + + \ No newline at end of file diff --git a/frontend/src/pages/Admin/ToolBox/index.vue b/frontend/src/pages/Admin/ToolBox/index.vue index d5d029bf2..f130f64dd 100644 --- a/frontend/src/pages/Admin/ToolBox/index.vue +++ b/frontend/src/pages/Admin/ToolBox/index.vue @@ -4,6 +4,10 @@ + + Notify + mdi-bell-alert + {{ $t("recipe.categories") }} mdi-tag-multiple-outline @@ -20,20 +24,23 @@ + - +