From 74c3ad9b9c19d5f9c56777eee950bce4ac666e8f Mon Sep 17 00:00:00 2001 From: Kieran Date: Wed, 28 May 2025 12:49:51 +0100 Subject: [PATCH] fix: dont make notepush requests unless notifications is authorized --- lib/notifications.dart | 6 ++++-- lib/widgets/notifications_button.dart | 10 ++++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/lib/notifications.dart b/lib/notifications.dart index f4cd0aa..bcf28ba 100644 --- a/lib/notifications.dart +++ b/lib/notifications.dart @@ -136,6 +136,8 @@ Notepush? getNotificationService() { : null; } +NotificationSettings? notifications; + Future setupNotifications() async { await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform); @@ -175,7 +177,7 @@ Future setupNotifications() async { } }); - await fbase.requestPermission(provisional: true); + notifications = await fbase.requestPermission(provisional: true); await fbase.setAutoInitEnabled(true); await fbase.setForegroundNotificationPresentationOptions( alert: true, @@ -192,7 +194,7 @@ Future setupNotifications() async { await localNotifications.initialize( InitializationSettings( android: AndroidInitializationSettings("@mipmap/ic_launcher"), - iOS: DarwinInitializationSettings() + iOS: DarwinInitializationSettings(), ), ); fbase.onTokenRefresh.listen((token) async { diff --git a/lib/widgets/notifications_button.dart b/lib/widgets/notifications_button.dart index 7cc9166..8212e56 100644 --- a/lib/widgets/notifications_button.dart +++ b/lib/widgets/notifications_button.dart @@ -1,3 +1,4 @@ +import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:flutter/material.dart'; import 'package:zap_stream_flutter/notifications.dart'; import 'package:zap_stream_flutter/theme.dart'; @@ -17,8 +18,13 @@ class _NotificationsButtonWidget extends State { Widget build(BuildContext context) { return FutureBuilder( future: () async { - final n = getNotificationService(); - return await n?.getWatchedKeys(); + if (notifications?.authorizationStatus == + AuthorizationStatus.authorized) { + final n = getNotificationService(); + return await n?.getWatchedKeys(); + } else { + return null; + } }(), builder: (context, state) { if (state.data == null) {