import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:simplecloudnotifier/api/api_client.dart'; import 'package:simplecloudnotifier/state/app_auth.dart'; import 'package:simplecloudnotifier/state/application_log.dart'; import 'package:simplecloudnotifier/utils/notifier.dart'; import 'package:simplecloudnotifier/utils/toaster.dart'; import 'package:simplecloudnotifier/utils/ui.dart'; class DebugActionsPage extends StatefulWidget { @override _DebugActionsPageState createState() => _DebugActionsPageState(); } class _DebugActionsPageState extends State { @override Widget build(BuildContext context) { return Container( child: SingleChildScrollView( child: Padding( padding: const EdgeInsets.symmetric(horizontal: 12), child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ UI.button( big: false, onPressed: () => Toaster.success("Hello World", "This was a triumph!"), text: 'Show Success Notification', ), SizedBox(height: 4), UI.button( big: false, onPressed: () => Toaster.info("Hello World", "This was a triumph!"), text: 'Show Info Notification', ), SizedBox(height: 4), UI.button( big: false, onPressed: () => Toaster.warn("Hello World", "This was a triumph!"), text: 'Show Warn Notification', ), SizedBox(height: 4), UI.button( big: false, onPressed: () => Toaster.error("Hello World", "This was a triumph!"), text: 'Show Info Notification', ), SizedBox(height: 4), UI.button( big: false, onPressed: () => Toaster.simple("Hello World"), text: 'Show Simple Notification', ), SizedBox(height: 20), UI.button( big: false, onPressed: _copyToken, text: 'Query+Copy FCM Token', ), SizedBox(height: 4), UI.button( big: false, onPressed: _sendTokenToServer, text: 'Send FCM Token to Server', ), SizedBox(height: 20), UI.button( big: false, onPressed: () => Notifier.showLocalNotification('', 'TEST_CHANNEL', "Test Channel", "Channel for testing", "Hello World", "Local Notification test", null), text: 'Show local notification', ), ], ), ), ), ); } void _sendTokenToServer() async { try { final auth = AppAuth(); final clientID = auth.getClientID(); if (clientID == null) { Toaster.error("Error", "No Client set"); return; } final fcmToken = await FirebaseMessaging.instance.getToken(); if (fcmToken == null) { Toaster.error("Error", "No FCM token returned from Firebase"); return; } var newClient = await APIClient.updateClient(auth, clientID, fcmToken: fcmToken); auth.setClientAndClientID(newClient); Toaster.success("Success", "Token sent to server"); } catch (exc, trace) { Toaster.error("Error", "An error occurred while sending the token: ${exc.toString()}"); ApplicationLog.error("An error occurred while sending the token: ${exc.toString()}", trace: trace); } } void _copyToken() async { try { final fcmToken = await FirebaseMessaging.instance.getToken(); if (fcmToken == null) { Toaster.error("Error", "No FCM token returned from Firebase"); return; } Clipboard.setData(new ClipboardData(text: fcmToken)); Toaster.info("Clipboard", 'Copied text to Clipboard'); print('================= [CLIPBOARD] =================\n${fcmToken}\n================= [/CLIPBOARD] ================='); } catch (exc, trace) { Toaster.error("Error", "An error occurred while sending the token: ${exc.toString()}"); ApplicationLog.error("An error occurred while sending the token: ${exc.toString()}", trace: trace); } } }