From 98b8b3338c72fc62f2c9428c8e02253c36e6ea94 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Mon, 28 Jun 2021 09:36:29 +0200 Subject: [PATCH 1/2] Fix a mutation that should have been a query Signed-off-by: Thomas Citharel --- js/src/graphql/config.ts | 4 ++-- js/src/services/push-subscription.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/js/src/graphql/config.ts b/js/src/graphql/config.ts index d0a049621..3089b6f8c 100644 --- a/js/src/graphql/config.ts +++ b/js/src/graphql/config.ts @@ -158,7 +158,7 @@ export const PRIVACY = gql` `; export const TIMEZONES = gql` - query { + query Timezones { config { timezones } @@ -166,7 +166,7 @@ export const TIMEZONES = gql` `; export const WEB_PUSH = gql` - query { + query WebPush { config { webPush { enabled diff --git a/js/src/services/push-subscription.ts b/js/src/services/push-subscription.ts index 738ecc54c..02195fdd6 100644 --- a/js/src/services/push-subscription.ts +++ b/js/src/services/push-subscription.ts @@ -22,8 +22,8 @@ export async function subscribeUserToPush(): Promise { apolloProvider.defaultClient as ApolloClient; const registration = await navigator.serviceWorker.ready; - const { data } = await client.mutate<{ config: IConfig }>({ - mutation: WEB_PUSH, + const { data } = await client.query<{ config: IConfig }>({ + query: WEB_PUSH, }); if (data?.config?.webPush?.enabled && data?.config?.webPush?.publicKey) { From 333bdabab959a65811400baf8b160d914c191e2d Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Mon, 28 Jun 2021 09:38:35 +0200 Subject: [PATCH 2/2] Show a different error message in Notifications if the feature is disabled Signed-off-by: Thomas Citharel --- js/src/i18n/en_US.json | 7 +++++- js/src/i18n/fr_FR.json | 7 +++++- js/src/views/Settings/Notifications.vue | 32 ++++++++++++++++++------- 3 files changed, 36 insertions(+), 10 deletions(-) diff --git a/js/src/i18n/en_US.json b/js/src/i18n/en_US.json index 2768d4d04..445eece79 100644 --- a/js/src/i18n/en_US.json +++ b/js/src/i18n/en_US.json @@ -1055,5 +1055,10 @@ "Send notification e-mails": "Send notification e-mails", "Announcements and mentions notifications are always sent straight away.": "Announcements and mentions notifications are always sent straight away.", "Weekly email summary": "Weekly email summary", - "Receive one email for each activity": "Receive one email for each activity" + "Receive one email for each activity": "Receive one email for each activity", + "Error while updating participation status inside this browser": "Error while updating participation status inside this browser", + "We couldn't save your participation inside this browser. Not to worry, you have successfully confirmed your participation, we just couldn't save it's status in this browser because of a technical issue.": "We couldn't save your participation inside this browser. Not to worry, you have successfully confirmed your participation, we just couldn't save it's status in this browser because of a technical issue.", + "This instance hasn't got push notifications enabled.": "This instance hasn't got push notifications enabled.", + "enable the feature": "enable the feature", + "Ask your instance admin to {enable_feature}.": "Ask your instance admin to {enable_feature}." } diff --git a/js/src/i18n/fr_FR.json b/js/src/i18n/fr_FR.json index 4f47fb66a..584fd7839 100644 --- a/js/src/i18n/fr_FR.json +++ b/js/src/i18n/fr_FR.json @@ -1146,5 +1146,10 @@ "Send notification e-mails": "Envoyer des e-mails de notification", "Announcements and mentions notifications are always sent straight away.": "Les notifications d'annonces et de mentions sont toujours envoyées directement.", "Weekly email summary": "Résumé hebdomadaire par e-mail", - "Receive one email for each activity": "Recevoir un e-mail à chaque activité" + "Receive one email for each activity": "Recevoir un e-mail à chaque activité", + "Error while updating participation status inside this browser": "Erreur lors de la mise à jour du statut de votre participation dans ce navigateur", + "We couldn't save your participation inside this browser. Not to worry, you have successfully confirmed your participation, we just couldn't save it's status in this browser because of a technical issue.": "Nous n'avons pas pu sauvegarder votre participation dans ce navigateur. Aucune inquiétude, vous avez bien confirmé votre participation, nous n'avons juste pas pu enregistrer son statut dans ce navigateur à cause d'un souci technique.", + "This instance hasn't got push notifications enabled.": "Cette instance n'a pas activé la fonctionnalité de notification push.", + "enable the feature": "activer la fonctionnalité", + "Ask your instance admin to {enable_feature}.": "Demandez à l'administrateur⋅ice de votre instance d'{enable_feature}." } diff --git a/js/src/views/Settings/Notifications.vue b/js/src/views/Settings/Notifications.vue index b75fd93d3..0d63241ff 100644 --- a/js/src/views/Settings/Notifications.vue +++ b/js/src/views/Settings/Notifications.vue @@ -24,12 +24,24 @@ {{ $t("Activate browser push notifications") }} - {{ + + {{ $t("This instance hasn't got push notifications enabled.") }} + + {{ $t("enable the feature") }} + + + {{ $t("You can't use push notifications in this browser.") - }} + }}
@@ -292,6 +304,7 @@ import { UNREGISTER_PUSH_MUTATION, } from "@/graphql/webPush"; import { merge } from "lodash"; +import { WEB_PUSH } from "@/graphql/config"; type NotificationSubType = { label: string; id: string }; type NotificationType = { label: string; subtypes: NotificationSubType[] }; @@ -306,6 +319,10 @@ type NotificationType = { label: string; subtypes: NotificationSubType[] }; (token: IFeedToken) => token.actor === null ), }, + webPushEnabled: { + query: WEB_PUSH, + update: (data) => data.config.webPush.enabled, + }, }, metaInfo() { return { @@ -341,6 +358,8 @@ export default class Notifications extends Vue { canShowWebPush = false; + webPushEnabled = false; + notificationMethods = { email: this.$t("Email") as string, push: this.$t("Push") as string, @@ -626,8 +645,7 @@ export default class Notifications extends Vue { const subscription = await subscribeUserToPush(); if (subscription) { const subscriptionJSON = subscription?.toJSON(); - console.log("subscription", subscriptionJSON); - const { data } = await this.$apollo.mutate({ + await this.$apollo.mutate({ mutation: REGISTER_PUSH_MUTATION, variables: { endpoint: subscriptionJSON.endpoint, @@ -636,14 +654,13 @@ export default class Notifications extends Vue { }, }); this.subscribed = true; - console.log(data); } else { this.$notifier.error( this.$t("Error while subscribing to push notifications") as string ); } } else { - console.log("can't do webpush"); + console.error("can't do webpush"); } } catch (e) { console.error(e); @@ -672,7 +689,6 @@ export default class Notifications extends Vue { if (!window.isSecureContext && !("serviceWorker" in navigator)) return Promise.resolve(false); const registration = await navigator.serviceWorker.getRegistration(); - console.log("registration", registration); return registration !== undefined; }