Skip to content

Commit

Permalink
Add code for message handling and storing device token
Browse files Browse the repository at this point in the history
  • Loading branch information
rayjasson98 committed Jan 4, 2021
1 parent a8ab0c9 commit 73ad66c
Show file tree
Hide file tree
Showing 4 changed files with 68 additions and 37 deletions.
12 changes: 9 additions & 3 deletions lib/data/user/repositories/user_repository.dart
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,15 @@ class UserRepository {
User get currentUser => _currentUser;
static String get uid => _uid;

Future<void> updateUser(AppUser appUser) {
return _userDoc.update(appUser.toMap());
Future<void> saveToken(String token) async {
await _userDoc.update({
'tokens': FieldValue.arrayUnion([token]),
});
}

Future<void> deleteTodo() => _userDoc.delete();
Future<void> update(AppUser appUser) async {
await _userDoc.update(appUser.toMap());
}

Future<void> delete() => _userDoc.delete();
}
66 changes: 41 additions & 25 deletions lib/ui/home_page.dart
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
import 'package:farmassist/app_theme.dart';
import 'package:farmassist/data/user/repositories/user_repository.dart';
import 'package:farmassist/ui/IoT/IoT_monitoring_page.dart';
import 'package:farmassist/ui/bottom_navigation_bar/bottom_navigation_bar.dart';
import 'package:farmassist/ui/bottom_navigation_bar/tab_icon_data.dart';
import 'package:farmassist/ui/diseases/disease_detection_page.dart';
import 'package:farmassist/ui/farm/farm_management_page.dart';
import 'package:farmassist/ui/profile/user_profile_page.dart';
import 'package:farmassist/utils/message_handler.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';

class HomePage extends StatefulWidget {
static Route route() {
Expand All @@ -17,6 +20,8 @@ class HomePage extends StatefulWidget {
}

class _HomePageState extends State<HomePage> {
final UserRepository _userRepository = UserRepository();
MessageHandler _messageHandler;
List<TabIconData> _tabIconsList = TabIconData.tabIconsList;
List<Widget> _tabList = [
FarmManagementPage(pageTitle: 'Farm Management'),
Expand All @@ -28,6 +33,7 @@ class _HomePageState extends State<HomePage> {

@override
void initState() {
_messageHandler = MessageHandler(_userRepository)..generateToken();
_tabIconsList.forEach((TabIconData tab) {
tab.isSelected = false;
});
Expand All @@ -43,31 +49,41 @@ class _HomePageState extends State<HomePage> {

@override
Widget build(BuildContext context) {
return Container(
color: AppTheme.background,
child: Scaffold(
backgroundColor: Colors.transparent,
body: Stack(
children: <Widget>[
PageView(
physics: NeverScrollableScrollPhysics(),
controller: _pageController,
children: _tabList,
),
Column(
children: <Widget>[
const Expanded(
child: SizedBox(),
),
BottomNavBar(
tabIconsList: _tabIconsList,
onTap: (int i) {
_pageController.jumpToPage(i);
},
),
],
),
],
return MultiRepositoryProvider(
providers: [
RepositoryProvider<UserRepository>.value(
value: _userRepository,
),
RepositoryProvider<MessageHandler>.value(
value: _messageHandler,
),
],
child: Container(
color: AppTheme.background,
child: Scaffold(
backgroundColor: Colors.transparent,
body: Stack(
children: <Widget>[
PageView(
physics: NeverScrollableScrollPhysics(),
controller: _pageController,
children: _tabList,
),
Column(
children: <Widget>[
const Expanded(
child: SizedBox(),
),
BottomNavBar(
tabIconsList: _tabIconsList,
onTap: (int i) {
_pageController.jumpToPage(i);
},
),
],
),
],
),
),
),
);
Expand Down
9 changes: 0 additions & 9 deletions lib/ui/profile/user_profile_page.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import 'package:farmassist/app_theme.dart';
import 'package:farmassist/bloc/authentication/authentication.dart';
import 'package:farmassist/data/user/repositories/user_repository.dart';
import 'package:farmassist/ui/profile/avatar.dart';
import 'package:farmassist/ui/profile/user_info_field.dart';
import 'package:farmassist/ui/widgets/tab_page.dart';
Expand Down Expand Up @@ -32,14 +31,6 @@ class _UserProfilePagePageState extends TabPageState<UserProfilePage> {
tabListView.add(_LogOutButton());
super.initState();
}

@override
Widget build(BuildContext context) {
return RepositoryProvider<UserRepository>(
create: (_) => UserRepository(),
child: super.build(context),
);
}
}

class _LogOutButton extends StatelessWidget {
Expand Down
18 changes: 18 additions & 0 deletions lib/utils/message_handler.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import 'package:farmassist/data/user/repositories/user_repository.dart';
import 'package:firebase_messaging/firebase_messaging.dart';

class MessageHandler {
MessageHandler(UserRepository userRepository) {
_messaging = FirebaseMessaging.instance;
_userRepository = userRepository;
}

FirebaseMessaging _messaging;
UserRepository _userRepository;

Future<void> generateToken() async {
String token = await _messaging.getToken();
await _userRepository.saveToken(token);
_messaging.onTokenRefresh.listen(_userRepository.saveToken);
}
}

0 comments on commit 73ad66c

Please sign in to comment.