123 lines
4.4 KiB
Dart
123 lines
4.4 KiB
Dart
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<DebugActionsPage> {
|
|
@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);
|
|
}
|
|
}
|
|
}
|