fix: dont make notepush requests unless notifications is authorized

This commit is contained in:
2025-05-28 12:49:51 +01:00
parent 8bd9ff2a4c
commit 74c3ad9b9c
2 changed files with 12 additions and 4 deletions

View File

@ -136,6 +136,8 @@ Notepush? getNotificationService() {
: null; : null;
} }
NotificationSettings? notifications;
Future<void> setupNotifications() async { Future<void> setupNotifications() async {
await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform); await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
@ -175,7 +177,7 @@ Future<void> setupNotifications() async {
} }
}); });
await fbase.requestPermission(provisional: true); notifications = await fbase.requestPermission(provisional: true);
await fbase.setAutoInitEnabled(true); await fbase.setAutoInitEnabled(true);
await fbase.setForegroundNotificationPresentationOptions( await fbase.setForegroundNotificationPresentationOptions(
alert: true, alert: true,
@ -192,7 +194,7 @@ Future<void> setupNotifications() async {
await localNotifications.initialize( await localNotifications.initialize(
InitializationSettings( InitializationSettings(
android: AndroidInitializationSettings("@mipmap/ic_launcher"), android: AndroidInitializationSettings("@mipmap/ic_launcher"),
iOS: DarwinInitializationSettings() iOS: DarwinInitializationSettings(),
), ),
); );
fbase.onTokenRefresh.listen((token) async { fbase.onTokenRefresh.listen((token) async {

View File

@ -1,3 +1,4 @@
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:zap_stream_flutter/notifications.dart'; import 'package:zap_stream_flutter/notifications.dart';
import 'package:zap_stream_flutter/theme.dart'; import 'package:zap_stream_flutter/theme.dart';
@ -17,8 +18,13 @@ class _NotificationsButtonWidget extends State<NotificationsButtonWidget> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return FutureBuilder( return FutureBuilder(
future: () async { future: () async {
final n = getNotificationService(); if (notifications?.authorizationStatus ==
return await n?.getWatchedKeys(); AuthorizationStatus.authorized) {
final n = getNotificationService();
return await n?.getWatchedKeys();
} else {
return null;
}
}(), }(),
builder: (context, state) { builder: (context, state) {
if (state.data == null) { if (state.data == null) {