Skip to content

Commit 049f5b0

Browse files
committed
Added notification for client side
1 parent 139bdd6 commit 049f5b0

21 files changed

+151
-93
lines changed

android/app/build.gradle

+1
Original file line numberDiff line numberDiff line change
@@ -66,4 +66,5 @@ dependencies {
6666
implementation 'com.google.firebase:firebase-core:16.0.4'
6767
implementation 'com.google.firebase:firebase-auth:16.0.4'
6868
implementation 'com.google.firebase:firebase-firestore:17.1.0'
69+
implementation 'com.google.firebase:firebase-messaging:21.0.0'
6970
}

android/app/src/main/AndroidManifest.xml

+4
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@
3737
<action android:name="android.intent.action.MAIN"/>
3838
<category android:name="android.intent.category.LAUNCHER"/>
3939
</intent-filter>
40+
<intent-filter>
41+
<action android:name="FLUTTER_NOTIFICATION_CLICK" />
42+
<category android:name="android.intent.category.DEFAULT" />
43+
</intent-filter>
4044
</activity>
4145
<!-- Don't delete the meta-data below.
4246
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->

ios/Runner/GoogleService-Info.plist

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+
<plist version="1.0">
4+
<dict>
5+
<key>CLIENT_ID</key>
6+
<string>143748364967-36bbdflcm7avrhhvfr5fpgmtm4650av8.apps.googleusercontent.com</string>
7+
<key>REVERSED_CLIENT_ID</key>
8+
<string>com.googleusercontent.apps.143748364967-36bbdflcm7avrhhvfr5fpgmtm4650av8</string>
9+
<key>ANDROID_CLIENT_ID</key>
10+
<string>143748364967-2heqmqtqn9imk1m54l8gp26frusk52mr.apps.googleusercontent.com</string>
11+
<key>API_KEY</key>
12+
<string>AIzaSyB9OlP8do4MTroGj4cegBW_ncHBwO75w3w</string>
13+
<key>GCM_SENDER_ID</key>
14+
<string>143748364967</string>
15+
<key>PLIST_VERSION</key>
16+
<string>1</string>
17+
<key>BUNDLE_ID</key>
18+
<string>com.cyberwake.homeTemperature</string>
19+
<key>PROJECT_ID</key>
20+
<string>hometemperature-dd50f</string>
21+
<key>STORAGE_BUCKET</key>
22+
<string>hometemperature-dd50f.appspot.com</string>
23+
<key>IS_ADS_ENABLED</key>
24+
<false></false>
25+
<key>IS_ANALYTICS_ENABLED</key>
26+
<false></false>
27+
<key>IS_APPINVITE_ENABLED</key>
28+
<true></true>
29+
<key>IS_GCM_ENABLED</key>
30+
<true></true>
31+
<key>IS_SIGNIN_ENABLED</key>
32+
<true></true>
33+
<key>GOOGLE_APP_ID</key>
34+
<string>1:143748364967:ios:5397ce043886206d0fb982</string>
35+
<key>DATABASE_URL</key>
36+
<string>https://hometemperature-dd50f.firebaseio.com</string>
37+
</dict>
38+
</plist>

lib/auth/userAuth.dart

+20-22
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,11 @@ import 'package:cloud_firestore/cloud_firestore.dart';
22
import 'package:firebase_auth/firebase_auth.dart';
33
import 'package:flutter/material.dart';
44
import 'package:google_sign_in/google_sign_in.dart';
5-
import 'file:///C:/Users/VK/Desktop/home_temperature/lib/database/userInfoStore.dart';
5+
import 'package:home_temperature/database/userInfoStore.dart';
6+
import 'package:home_temperature/models/provideUser.dart';
7+
import 'package:home_temperature/models/userDataModel.dart';
68
import 'package:provider/provider.dart';
79

8-
import 'file:///C:/Users/VK/Desktop/home_temperature/lib/models/provideUser.dart';
9-
import 'file:///C:/Users/VK/Desktop/home_temperature/lib/models/userDataModel.dart';
10-
1110
class UserAuth {
1211
static final FirebaseAuth _auth = FirebaseAuth.instance;
1312
static final CollectionReference _usersCollection =
@@ -30,15 +29,19 @@ class UserAuth {
3029
email: email,
3130
password: password,
3231
);
33-
DocumentSnapshot userSnapshot =
34-
await _usersCollection.doc(userCredential.user.uid).get();
35-
if (userSnapshot.exists) {
36-
UserDataModel user = UserDataModel.fromDocument(userSnapshot);
37-
Provider.of<CurrentUser>(context, listen: false)
38-
.updateCurrentUser(user);
39-
return "success";
32+
if (userCredential.user.emailVerified) {
33+
DocumentSnapshot userSnapshot =
34+
await _usersCollection.doc(userCredential.user.uid).get();
35+
if (userSnapshot.exists) {
36+
UserDataModel user = UserDataModel.fromDocument(userSnapshot);
37+
Provider.of<CurrentUser>(context, listen: false)
38+
.updateCurrentUser(user);
39+
return "success";
40+
} else {
41+
return "No user found for this email.";
42+
}
4043
} else {
41-
return "No user found for this email.";
44+
return "User Not Verified";
4245
}
4346
} on FirebaseAuthException catch (e) {
4447
if (e.code == 'user-not-found') {
@@ -63,26 +66,21 @@ class UserAuth {
6366
email: email,
6467
password: password,
6568
);
66-
print("User logged in");
69+
await userCredential.user.sendEmailVerification();
6770
DocumentSnapshot userRecord =
6871
await _usersCollection.doc(userCredential.user.uid).get();
6972
if (!userRecord.exists) {
70-
print("record not found new user");
7173
await UserInfoStore()
7274
.createUserRecord(username: username)
7375
.then((value) async {
74-
print("Started process of record creation1");
7576
if (value) {
76-
print("record provided to provider");
77-
userRecord =
78-
await _usersCollection.doc(userCredential.user.uid).get();
79-
currentUserModel = UserDataModel.fromDocument(userRecord);
80-
Provider.of<CurrentUser>(context, listen: false)
81-
.updateCurrentUser(currentUserModel);
77+
print("user created");
8278
}
8379
});
8480
}
85-
return "success";
81+
await _auth.signOut();
82+
userCredential = null;
83+
return "Check mailbox and verify your account to login";
8684
} on FirebaseAuthException catch (e) {
8785
if (e.code == 'weak-password') {
8886
return 'The password provided is too weak.';

lib/authentication/authenticationWrapper.dart

+2-3
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,8 @@ import 'package:flutter/material.dart';
33
import 'package:home_temperature/authentication/methods/forgotPasswordForm.dart';
44
import 'package:home_temperature/authentication/methods/loginForm.dart';
55
import 'package:home_temperature/authentication/methods/registerForm.dart';
6-
7-
import 'file:///C:/Users/VK/Desktop/home_temperature/lib/models/enums.dart';
8-
import 'file:///C:/Users/VK/Desktop/home_temperature/lib/models/theme.dart';
6+
import 'package:home_temperature/models/enums.dart';
7+
import 'package:home_temperature/models/theme.dart';
98

109
// ignore: must_be_immutable
1110
class Authentication extends StatefulWidget {

lib/authentication/helpers/authButtons.dart

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
import 'package:flutter/cupertino.dart';
22
import 'package:flutter/material.dart';
3-
import 'file:///C:/Users/VK/Desktop/home_temperature/lib/screens/mainScreen.dart';
4-
5-
import 'file:///C:/Users/VK/Desktop/home_temperature/lib/auth/userAuth.dart';
3+
import 'package:home_temperature/auth/userAuth.dart';
4+
import 'package:home_temperature/screens/mainScreen.dart';
65

76
class AuthButtons {
87
static final UserAuth _userAuth = UserAuth();

lib/authentication/helpers/formFiledFormatting.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import 'package:flutter/cupertino.dart';
22
import 'package:flutter/material.dart';
3-
import 'file:///C:/Users/VK/Desktop/home_temperature/lib/models/theme.dart';
3+
import 'package:home_temperature/models/theme.dart';
44

55
class FormFieldFormatting {
66
static formFieldFormatting(

lib/authentication/methods/forgotPasswordForm.dart

+5-6
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
import 'package:flutter/cupertino.dart';
22
import 'package:flutter/material.dart';
3+
import 'package:home_temperature/auth/userAuth.dart';
34
import 'package:home_temperature/authentication/helpers/formFiledFormatting.dart';
45
import 'package:home_temperature/authentication/helpers/validation.dart';
5-
import 'file:///C:/Users/VK/Desktop/home_temperature/lib/models/theme.dart';
6-
import 'file:///C:/Users/VK/Desktop/home_temperature/lib/database/userInfoStore.dart';
7-
8-
import 'file:///C:/Users/VK/Desktop/home_temperature/lib/auth/userAuth.dart';
9-
import 'file:///C:/Users/VK/Desktop/home_temperature/lib/models/enums.dart';
10-
import 'file:///C:/Users/VK/Desktop/home_temperature/lib/models/userDataModel.dart';
6+
import 'package:home_temperature/database/userInfoStore.dart';
7+
import 'package:home_temperature/models/enums.dart';
8+
import 'package:home_temperature/models/theme.dart';
9+
import 'package:home_temperature/models/userDataModel.dart';
1110

1211
class ForgotPasswordForm extends StatefulWidget {
1312
final ValueChanged<AuthIndex> changeMethod;

lib/authentication/methods/loginForm.dart

+5-6
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
import 'package:flutter/cupertino.dart';
22
import 'package:flutter/material.dart';
3+
import 'package:home_temperature/auth/userAuth.dart';
34
import 'package:home_temperature/authentication/helpers/authButtons.dart';
45
import 'package:home_temperature/authentication/helpers/formFiledFormatting.dart';
56
import 'package:home_temperature/authentication/helpers/validation.dart';
67
import 'package:home_temperature/authentication/methods/socialRegisterUsername.dart';
7-
import 'file:///C:/Users/VK/Desktop/home_temperature/lib/screens/mainScreen.dart';
8-
9-
import 'file:///C:/Users/VK/Desktop/home_temperature/lib/auth/userAuth.dart';
10-
import 'file:///C:/Users/VK/Desktop/home_temperature/lib/models/enums.dart';
11-
import 'file:///C:/Users/VK/Desktop/home_temperature/lib/models/theme.dart';
12-
import 'file:///C:/Users/VK/Desktop/home_temperature/lib/models/userDataModel.dart';
8+
import 'package:home_temperature/models/enums.dart';
9+
import 'package:home_temperature/models/theme.dart';
10+
import 'package:home_temperature/models/userDataModel.dart';
11+
import 'package:home_temperature/screens/mainScreen.dart';
1312

1413
class LoginForm extends StatefulWidget {
1514
final ValueChanged<AuthIndex> changeMethod;

lib/authentication/methods/registerForm.dart

+7-7
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
import 'package:cloud_firestore/cloud_firestore.dart';
22
import 'package:flutter/cupertino.dart';
33
import 'package:flutter/material.dart';
4+
import 'package:home_temperature/auth/userAuth.dart';
45
import 'package:home_temperature/authentication/helpers/authButtons.dart';
56
import 'package:home_temperature/authentication/helpers/formFiledFormatting.dart';
67
import 'package:home_temperature/authentication/helpers/validation.dart';
78
import 'package:home_temperature/authentication/methods/socialRegisterUsername.dart';
8-
import 'file:///C:/Users/VK/Desktop/home_temperature/lib/models/enums.dart';
9-
import 'file:///C:/Users/VK/Desktop/home_temperature/lib/screens/mainScreen.dart';
10-
import 'file:///C:/Users/VK/Desktop/home_temperature/lib/models/theme.dart';
11-
import 'file:///C:/Users/VK/Desktop/home_temperature/lib/auth/userAuth.dart';
12-
import 'file:///C:/Users/VK/Desktop/home_temperature/lib/models/userDataModel.dart';
13-
import 'file:///C:/Users/VK/Desktop/home_temperature/lib/database/userInfoStore.dart';
9+
import 'package:home_temperature/database/userInfoStore.dart';
10+
import 'package:home_temperature/models/enums.dart';
11+
import 'package:home_temperature/models/theme.dart';
12+
import 'package:home_temperature/models/userDataModel.dart';
13+
import 'package:home_temperature/screens/mainScreen.dart';
1414

1515
class RegisterForm extends StatefulWidget {
1616
final ValueChanged<AuthIndex> changeMethod;
@@ -23,6 +23,7 @@ class _RegisterFormState extends State<RegisterForm> {
2323
final _formKey = GlobalKey<FormState>();
2424
final ref = FirebaseFirestore.instance.collection('WowUsers');
2525
UserDataModel _userDataModel = UserDataModel();
26+
UserInfoStore _userInfoStore = UserInfoStore();
2627
UserAuth _userAuth = UserAuth();
2728
double _widthOne;
2829
double _heightOne;
@@ -31,7 +32,6 @@ class _RegisterFormState extends State<RegisterForm> {
3132
bool _registerForm = true;
3233
bool _hidePassword = true;
3334
bool _submitted = false;
34-
UserInfoStore _userInfoStore = UserInfoStore();
3535

3636
@override
3737
Widget build(BuildContext context) {

lib/authentication/methods/socialRegisterUsername.dart

+4-5
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,10 @@ import 'package:cloud_firestore/cloud_firestore.dart';
22
import 'package:flutter/cupertino.dart';
33
import 'package:flutter/material.dart';
44
import 'package:home_temperature/authentication/helpers/formFiledFormatting.dart';
5-
import 'file:///C:/Users/VK/Desktop/home_temperature/lib/screens/mainScreen.dart';
6-
import 'file:///C:/Users/VK/Desktop/home_temperature/lib/database/userInfoStore.dart';
7-
8-
import 'file:///C:/Users/VK/Desktop/home_temperature/lib/models/theme.dart';
9-
import 'file:///C:/Users/VK/Desktop/home_temperature/lib/models/userDataModel.dart';
5+
import 'package:home_temperature/database/userInfoStore.dart';
6+
import 'package:home_temperature/models/theme.dart';
7+
import 'package:home_temperature/models/userDataModel.dart';
8+
import 'package:home_temperature/screens/mainScreen.dart';
109

1110
class SocialRegisterUsername extends StatefulWidget {
1211
@override

lib/database/userInfoStore.dart

+22-22
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,23 @@
11
import 'package:cloud_firestore/cloud_firestore.dart';
2+
import 'package:firebase_messaging/firebase_messaging.dart';
23
import 'package:flutter/material.dart';
4+
import 'package:home_temperature/auth/userAuth.dart';
5+
import 'package:home_temperature/models/provideUser.dart';
6+
import 'package:home_temperature/models/userDataModel.dart';
37
import 'package:provider/provider.dart';
48

5-
import 'file:///C:/Users/VK/Desktop/home_temperature/lib/auth/userAuth.dart';
6-
import 'file:///C:/Users/VK/Desktop/home_temperature/lib/models/provideUser.dart';
7-
import 'file:///C:/Users/VK/Desktop/home_temperature/lib/models/userDataModel.dart';
8-
99
class UserInfoStore {
1010
UserDataModel _currentUserModel;
1111
static final CollectionReference _users =
1212
FirebaseFirestore.instance.collection('UsersInfoData');
1313

1414
static final UserAuth _userAuth = UserAuth();
15+
final FirebaseMessaging _fcm = FirebaseMessaging();
1516

1617
Future<bool> createUserRecord(
1718
{String username = "", BuildContext context}) async {
1819
try {
20+
String _fcmToken = await _fcm.getToken();
1921
print("Started process of record creation");
2022
DocumentSnapshot userRecord = await _users.doc(_userAuth.user.uid).get();
2123
if (_userAuth.user != null) {
@@ -28,6 +30,7 @@ class UserInfoStore {
2830
"email": _userAuth.user.email,
2931
"photoUrl": _userAuth.user.photoURL,
3032
"username": username,
33+
"fcmToken": _fcmToken
3134
};
3235
print("record created");
3336
_users.doc(_userAuth.user.uid).set(userData);
@@ -46,6 +49,21 @@ class UserInfoStore {
4649
}
4750
}
4851

52+
Future updateToken({BuildContext context}) async {
53+
try {
54+
String _fcmToken = await _fcm.getToken();
55+
print("run");
56+
DocumentSnapshot userRecord = await _users.doc(_userAuth.user.uid).get();
57+
_users.doc(_userAuth.user.uid).update({'fcmToken': _fcmToken});
58+
userRecord = await _users.doc(_userAuth.user.uid).get();
59+
_currentUserModel = UserDataModel.fromDocument(userRecord);
60+
Provider.of<CurrentUser>(context, listen: false)
61+
.updateCurrentUser(_currentUserModel);
62+
} catch (e) {
63+
print(e.toString());
64+
}
65+
}
66+
4967
Future<bool> isUsernameNew({String username}) async {
5068
print(username);
5169
try {
@@ -77,24 +95,6 @@ class UserInfoStore {
7795
}
7896
}
7997

80-
Future<UserDataModel> getUserInformation({String uid}) async {
81-
try {
82-
DocumentSnapshot ds = await _users.doc(uid).get();
83-
return UserDataModel.fromDocument(ds);
84-
} catch (e) {
85-
print(e.toString());
86-
return null;
87-
}
88-
}
89-
90-
Stream<DocumentSnapshot> getUserInfoStream({String uid}) {
91-
return _users.doc(uid).snapshots();
92-
}
93-
94-
Future<DocumentSnapshot> getUserInfoFuture({String uid}) {
95-
return _users.doc(uid).get();
96-
}
97-
9898
getUserInfo({String uid}) {
9999
try {
100100
return _users.doc(uid).get();

lib/main.dart

+5-5
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ import 'package:firebase_auth/firebase_auth.dart';
22
import 'package:firebase_core/firebase_core.dart';
33
import 'package:flutter/material.dart';
44
import 'package:home_temperature/authentication/authenticationWrapper.dart';
5-
import 'file:///C:/Users/VK/Desktop/home_temperature/lib/screens/mainScreen.dart';
6-
import 'file:///C:/Users/VK/Desktop/home_temperature/lib/screens/splashScreen.dart';
5+
import 'package:home_temperature/screens/mainScreen.dart';
6+
import 'package:home_temperature/screens/splashScreen.dart';
77
import 'package:provider/provider.dart';
8+
import 'package:home_temperature/auth/userAuth.dart';
9+
import 'package:home_temperature/models/provideUser.dart';
810

9-
import 'file:///C:/Users/VK/Desktop/home_temperature/lib/auth/userAuth.dart';
10-
import 'file:///C:/Users/VK/Desktop/home_temperature/lib/models/enums.dart';
11-
import 'file:///C:/Users/VK/Desktop/home_temperature/lib/models/provideUser.dart';
11+
import 'package:home_temperature/models/enums.dart';
1212

1313
void main() async {
1414
WidgetsFlutterBinding.ensureInitialized();

lib/models/provideUser.dart

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import 'package:flutter/material.dart';
2-
3-
import 'file:///C:/Users/VK/Desktop/home_temperature/lib/models/userDataModel.dart';
2+
import 'package:home_temperature/models/userDataModel.dart';
43

54
class CurrentUser with ChangeNotifier {
65
UserDataModel currentUserData;

lib/models/sensorData.dart

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import 'package:firebase_database/firebase_database.dart';
2-
3-
import 'file:///C:/Users/VK/Desktop/home_temperature/lib/auth/userAuth.dart';
2+
import 'package:home_temperature/auth/userAuth.dart';
43

54
class SensorData {
65
String temperature;

lib/models/theme.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ class AppTheme {
44
AppTheme._();
55
static const Color primaryColor = Color(0xFF253A52);
66
static const Color backgroundColor = Color(0xFFEBEBEB);
7-
static const Color pureWhiteColor = Color(0xFF253A52);
8-
static const Color pureBlackColor = Colors.black;
7+
static const Color pureWhiteColor = Color(0xFFFFFFFF);
8+
static const Color pureBlackColor = Color(0xFF000000);
99
static const Color backColor = Color(0xFF232324);
1010
static const Color selectorTileColor = Color(0xFFEAD2A1);
1111
static const Color textColorVideoSelectorScreen = Color(0xFF253A52);

0 commit comments

Comments
 (0)