diff --git a/lib/main.dart b/lib/main.dart index 3b86a6d..d712569 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,11 +1,27 @@ import 'package:firebase_core/firebase_core.dart'; +import 'package:firebase_messaging/firebase_messaging.dart'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:srm_timetable/pages/auth.dart'; import 'package:srm_timetable/pages/home.dart'; import 'package:srm_timetable/pages/onboard.dart'; + +Future _firebaseMessagingBackgroundHandler(RemoteMessage message) async { + await Firebase.initializeApp(); + + if (kDebugMode) { + print("Handling a background message: ${message.messageId}"); + print('Message data: ${message.data}'); + print('Message notification: ${message.notification?.title}'); + print('Message notification: ${message.notification?.body}'); + } +} + + Future main() async { WidgetsFlutterBinding.ensureInitialized(); + FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler); await Firebase.initializeApp( options: const FirebaseOptions( apiKey: "AIzaSyDpPLA4Nt1FY6hsoseVPYD2JRP7e9ENKD4", diff --git a/lib/pages/home.dart b/lib/pages/home.dart index 8deedc8..2c67958 100644 --- a/lib/pages/home.dart +++ b/lib/pages/home.dart @@ -11,8 +11,17 @@ class _HomeState extends State { // TODO: implement FCM getToken() // TODO: implement FCM notification listner subscriber // TODO: implement home UI + + Map dummyData = { + "Day 1" : ["Class 1", "Class 2", "Class 3", "Class 4", "Class 5", "Class 6", "Class 7", "Class 8", "Class 9"], + "Day 2" : ["Class 1", "Class 2", "Class 3", "Class 4", "Class 5", "Class 6", "Class 7", "Class 8", "Class 9"], + "Day 3" : ["Class 1", "Class 2", "Class 3", "Class 4", "Class 5", "Class 6", "Class 7", "Class 8", "Class 9"], + "Day 4" : ["Class 1", "Class 2", "Class 3", "Class 4", "Class 5", "Class 6", "Class 7", "Class 8", "Class 9"], + "Day 5" : ["Class 1", "Class 2", "Class 3", "Class 4", "Class 5", "Class 6", "Class 7", "Class 8", "Class 9"], + }; + @override Widget build(BuildContext context) { return Scaffold(); } -} \ No newline at end of file +} diff --git a/lib/pages/onboard.dart b/lib/pages/onboard.dart index 92d20a7..db3f88a 100644 --- a/lib/pages/onboard.dart +++ b/lib/pages/onboard.dart @@ -373,7 +373,6 @@ class _OnboardState extends State { }); String fileName = "${year.toString()}_${_class.replaceAll(" ", "_").toLowerCase()}_${_section.toLowerCase()}.json"; - print(fileName); http.Response res = await http.get(Uri.parse( 'https://raw.githubusercontent.com/LiveWiresSRM2023/srm_auto_timetable_app/website/assets/json/$fileName')); if (res.statusCode == 404) { @@ -399,12 +398,12 @@ class _OnboardState extends State { print(timetableData.runtimeType); Map parsedTimetableData = timetableData; /* Store the timetable in the below format - { - "Day 1" : [], - ... - "Day 5" : [], - } - */ + { + "Day 1" : [], + ... + "Day 5" : [], + } + */ Map> compressedTimetable = {}; // List of only the values of the JSON which is again a Map List dayOrdersValues = @@ -466,6 +465,14 @@ class _OnboardState extends State { criticalAlert: false, provisional: true, sound: true); + // VAPIDKEY is only for web + String? token = + await FirebaseMessaging + .instance + .getToken( + vapidKey: + "BN5mU-ItDRP9h6hYRzCEoyr8skSotDZrYHcYKZULFEshJLaAs9k_qhGOptJdv7tsJKgoUFS7ofyGEWMlwGJiLF0"); + print(token); if (!mounted) return; Navigator.pop(context); setState(() => diff --git a/web/firebase-messaging-sw.js b/web/firebase-messaging-sw.js new file mode 100644 index 0000000..748b804 --- /dev/null +++ b/web/firebase-messaging-sw.js @@ -0,0 +1,28 @@ +importScripts("https://www.gstatic.com/firebasejs/9.6.10/firebase-app-compat.js"); +importScripts("https://www.gstatic.com/firebasejs/9.6.10/firebase-messaging-compat.js"); + +const firebaseConfig = { + apiKey: "AIzaSyDpPLA4Nt1FY6hsoseVPYD2JRP7e9ENKD4", + authDomain: "srm-timetable-bb661.firebaseapp.com", + projectId: "srm-timetable-bb661", + storageBucket: "srm-timetable-bb661.appspot.com", + messagingSenderId: "1062574904489", + appId: "1:1062574904489:web:28469fb2790052f36485b8", + measurementId: "G-0HHRGFQ665" +}; + +firebase.initializeApp(firebaseConfig); +const messaging = firebase.messaging(); + +messaging.setBackgroundMessageHandler(function (payload) { + console.log('[firebase-messaging-sw.js] Received background message ', payload); + // Customize notification here + const notificationTitle = 'Background Message Title'; + const notificationOptions = { + body: 'Background Message body.', + icon: '/firebase-logo.png' + }; + + return self.registration.showNotification(notificationTitle, + notificationOptions); +}); \ No newline at end of file