From d190e3346a86e02b2b26c73dfc3f2a42c54e22ac Mon Sep 17 00:00:00 2001 From: Curtis Adam Date: Thu, 13 Jun 2019 14:34:43 +0200 Subject: [PATCH] Hide notification settings in the frontend if they got disabled by the server --- imports/api/bonus.js | 5 +- imports/api/settings.js | 11 ++++ imports/api/webPushSubscriptions.js | 8 +-- imports/startup/client/registerhelper.js | 17 ++++++ imports/ui/admin/settings/settings.js | 5 +- imports/ui/cardset/index/bonus/bonus.html | 10 +++- .../cardset/index/bonus/modal/removeUser.html | 12 ++-- imports/ui/profile/view/settings.html | 56 +++++++++++-------- imports/ui/profile/view/settings.js | 11 +++- server/leitner.js | 18 +----- 10 files changed, 96 insertions(+), 57 deletions(-) diff --git a/imports/api/bonus.js b/imports/api/bonus.js index 66a42e71..6703b6d3 100644 --- a/imports/api/bonus.js +++ b/imports/api/bonus.js @@ -1,6 +1,7 @@ import {Cardsets} from "./cardsets"; import {Meteor} from "meteor/meteor"; import {Workload} from "./learned"; +import {ServerSettings} from "./settings"; export let Bonus = class Bonus { static isInBonus (cardset_id, user_id = undefined) { @@ -33,14 +34,14 @@ export let Bonus = class Bonus { static getNotificationStatus (user, isCSVExport = false) { let notifications = ""; - if (user.mailNotification) { + if (ServerSettings.isMailEnabled() && user.mailNotification) { if (isCSVExport) { notifications += TAPi18n.__('leitnerProgress.notification.mail', {}, "de"); } else { notifications += " " + TAPi18n.__('leitnerProgress.notification.mail') + ""; } } - if (user.webNotification) { + if (ServerSettings.isPushEnabled() && user.webNotification) { if (notifications !== "") { notifications += " & "; } diff --git a/imports/api/settings.js b/imports/api/settings.js index 04c41938..808f61c4 100644 --- a/imports/api/settings.js +++ b/imports/api/settings.js @@ -1,4 +1,5 @@ import {Meteor} from "meteor/meteor"; +import {AdminSettings} from "./adminSettings"; export const Categories = new TAPi18n.Collection("settings"); @@ -7,3 +8,13 @@ if (Meteor.isServer) { return Categories.find(); }); } + +export let ServerSettings = class ServerSettings { + static isMailEnabled () { + return AdminSettings.findOne({name: "mailSettings"}).enabled; + } + + static isPushEnabled () { + return AdminSettings.findOne({name: "pushSettings"}).enabled; + } +}; diff --git a/imports/api/webPushSubscriptions.js b/imports/api/webPushSubscriptions.js index eb1f8788..782c5670 100644 --- a/imports/api/webPushSubscriptions.js +++ b/imports/api/webPushSubscriptions.js @@ -1,7 +1,7 @@ import {Meteor} from "meteor/meteor"; import {Mongo} from "meteor/mongo"; import webPush from 'web-push'; -import {AdminSettings} from "./adminSettings"; +import {ServerSettings} from "./settings"; export const WebPushSubscriptions = new Mongo.Collection("webPushSubscriptions"); @@ -13,7 +13,7 @@ export let WebPushNotifications = class WebPushNotifications { * Meteor-method addWebPushSubscription. */ static subscribeForPushNotification () { - if (this.isPushEnabled()) { + if (ServerSettings.isPushEnabled()) { try { if (navigator.serviceWorker !== undefined) { navigator.serviceWorker.getRegistration() @@ -48,10 +48,6 @@ export let WebPushNotifications = class WebPushNotifications { } } } - - static isPushEnabled () { - return AdminSettings.findOne({name: "pushSettings"}).enabled; - } }; Meteor.methods({ diff --git a/imports/startup/client/registerhelper.js b/imports/startup/client/registerhelper.js index 8dc39e1f..01097201 100644 --- a/imports/startup/client/registerhelper.js +++ b/imports/startup/client/registerhelper.js @@ -29,6 +29,7 @@ import {MainNavigation} from "../../api/mainNavigation"; import {BarfyStarsConfig} from "../../api/barfyStars.js"; import {Utilities} from "../../api/utilities"; import {TranscriptBonus} from "../../api/transcriptBonus"; +import {ServerSettings} from "../../api/settings"; Meteor.subscribe("collegesCourses"); @@ -196,6 +197,22 @@ Template.registerHelper('getNavigationName', function (name = undefined) { } }); +Template.registerHelper('isNotificationEnabled', function () { + return ServerSettings.isPushEnabled() || ServerSettings.isMailEnabled(); +}); + +Template.registerHelper('isNotificationEnabled', function () { + return ServerSettings.isPushEnabled() || ServerSettings.isMailEnabled(); +}); + +Template.registerHelper('isMailEnabled', function () { + return ServerSettings.isMailEnabled(); +}); + +Template.registerHelper('isPushEnabled', function () { + return ServerSettings.isPushEnabled(); +}); + Template.registerHelper('isPublicRoute', function () { return Route.isPublic(); }); diff --git a/imports/ui/admin/settings/settings.js b/imports/ui/admin/settings/settings.js index 72da69af..b6812738 100644 --- a/imports/ui/admin/settings/settings.js +++ b/imports/ui/admin/settings/settings.js @@ -1,6 +1,7 @@ import {Meteor} from "meteor/meteor"; import {AdminSettings} from "../../../api/adminSettings.js"; import "./settings.html"; +import {ServerSettings} from "../../../api/settings"; Template.admin_settings.events({ 'click #enableWordcloudPomodoro': function () { @@ -73,10 +74,10 @@ Template.admin_settings.helpers({ return AdminSettings.findOne({name: "wordcloudPomodoroSettings"}).enabled; }, isMailEnabled: function () { - return AdminSettings.findOne({name: "mailSettings"}).enabled; + return ServerSettings.isMailEnabled(); }, isPushEnabled: function () { - return AdminSettings.findOne({name: "pushSettings"}).enabled; + return ServerSettings.isPushEnabled(); }, getNotificationTargetText: function () { let user = Meteor.users.findOne({_id: AdminSettings.findOne({name: "testNotifications"}).target}); diff --git a/imports/ui/cardset/index/bonus/bonus.html b/imports/ui/cardset/index/bonus/bonus.html index 14a8631e..cbc10849 100644 --- a/imports/ui/cardset/index/bonus/bonus.html +++ b/imports/ui/cardset/index/bonus/bonus.html @@ -33,8 +33,10 @@ {{_ "panel-body.givenname"}} {{_ "panel-body.email"}} - {{_ "confirmLearn-form.notification"}} - + {{#if isNotificationEnabled}} + {{_ "confirmLearn-form.notification"}} + + {{/if}} {{_ "leitnerProgress.box" number=1}} [{{this.learningInterval.[0]}}] {{_ "leitnerProgress.box" number=2}} [{{this.learningInterval.[1]}}] @@ -54,7 +56,9 @@ {{this.birthname}} {{this.givenname}} {{this.email}} - {{{getNotificationStatus this}}} + {{#if isNotificationEnabled}} + {{{getNotificationStatus this}}} + {{/if}} {{this.box1}} {{this.box2}} {{this.box3}} diff --git a/imports/ui/cardset/index/bonus/modal/removeUser.html b/imports/ui/cardset/index/bonus/modal/removeUser.html index 0fb12187..4b37c00a 100644 --- a/imports/ui/cardset/index/bonus/modal/removeUser.html +++ b/imports/ui/cardset/index/bonus/modal/removeUser.html @@ -20,7 +20,9 @@ {{_ "panel-body.birthname"}} {{_ "panel-body.givenname"}} {{_ "panel-body.email"}} - {{_ "confirmLearn-form.notification"}} + {{#if isNotificationEnabled}} + {{_ "confirmLearn-form.notification"}} + {{/if}} {{_ "leitnerProgress.box" number=1}} {{_ "leitnerProgress.box" number=2}} {{_ "leitnerProgress.box" number=3}} @@ -38,9 +40,11 @@ {{this.email}} - - {{{getNotificationStatus this}}} - + {{#if isNotificationEnabled}} + + {{{getNotificationStatus this}}} + + {{/if}} {{this.box1}} diff --git a/imports/ui/profile/view/settings.html b/imports/ui/profile/view/settings.html index c3901524..ee8fc22f 100644 --- a/imports/ui/profile/view/settings.html +++ b/imports/ui/profile/view/settings.html @@ -74,30 +74,40 @@ -
- -
-
-
-
- -
-
- + {{#if isNotificationEnabled}} +
+ + +
+
+ {{#if isMailEnabled}} +
+ +
+ {{/if}} + {{#if isPushEnabled}} +
+ +
+ {{/if}}
-
-
-
-
+ + + + {{else}} +
+ {{/if}}