Moved all auth logic from the repository to the auth service
This commit is contained in:
parent
e21d8dfd54
commit
0e1c1a4f33
2 changed files with 50 additions and 34 deletions
50
lib/src/resources/authService.dart
Normal file
50
lib/src/resources/authService.dart
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
import 'dart:async';
|
||||
|
||||
import 'package:rxdart/rxdart.dart';
|
||||
|
||||
import './firestore_provider.dart';
|
||||
import './google_sign_in_provider.dart';
|
||||
import '../models/summary_model.dart';
|
||||
import '../models/user_model.dart';
|
||||
|
||||
class AuthService {
|
||||
Observable<UserModel> user;
|
||||
|
||||
AuthService() {
|
||||
_googleSignInProvider.onAuthStateChange.listen(onUserChanged);
|
||||
}
|
||||
|
||||
Future<void> onUserChanged(FirebaseUser firebaseUser) async {
|
||||
if (firebaseUser == null) {
|
||||
user = null;
|
||||
return;
|
||||
}
|
||||
user = _firestoreProvider.getUser(firebaseUser.email);
|
||||
}
|
||||
|
||||
final _googleSignInProvider = GoogleSignInProvider();
|
||||
final _firestoreProvider = FirestoreProvider();
|
||||
|
||||
Future<void> googleLoginAndSignup() async {
|
||||
final user = await _googleSignInProvider.signIn();
|
||||
|
||||
// Create a new user in Firestore if this is the first time signing in.
|
||||
if (!await _firestoreProvider.userExists(user.email)) {
|
||||
final newUserModel = UserModel(
|
||||
username: user.email,
|
||||
tasks: <String>[],
|
||||
summary: SummaryModel(),
|
||||
pendingHigh: 0,
|
||||
pendingMedium: 0,
|
||||
pendingLow: 0,
|
||||
);
|
||||
await _firestoreProvider.createUser(newUserModel, user.uid);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> signOut() {
|
||||
return _googleSignInProvider.signOut();
|
||||
}
|
||||
}
|
||||
|
||||
final authService = AuthService();
|
||||
|
|
@ -5,23 +5,15 @@ import 'package:rxdart/rxdart.dart';
|
|||
|
||||
import './firebase_storage_provider.dart';
|
||||
import './firestore_provider.dart';
|
||||
import './google_sign_in_provider.dart';
|
||||
import '../models/event_model.dart';
|
||||
import '../models/task_model.dart';
|
||||
import '../models/summary_model.dart';
|
||||
import '../models/user_model.dart';
|
||||
|
||||
class Repository {
|
||||
final _storageProvider = FirebaseStorageProvider();
|
||||
final _firestoreProvider = FirestoreProvider();
|
||||
final _googleSignInProvider = GoogleSignInProvider();
|
||||
|
||||
//--------------------------------CRUD----------------------------------------
|
||||
|
||||
Observable<UserModel> getUser(String username) {
|
||||
return _firestoreProvider.getUser(username);
|
||||
}
|
||||
|
||||
Future<void> updateUser(
|
||||
String id, {
|
||||
List<String> tasks,
|
||||
|
|
@ -104,32 +96,6 @@ class Repository {
|
|||
return _firestoreProvider.getUserEvents(userId);
|
||||
}
|
||||
|
||||
//-----------------------------------AUTH-------------------------------------
|
||||
|
||||
Future<FirebaseUser> googleLoginAndSignup() async {
|
||||
final user = await _googleSignInProvider.signIn();
|
||||
if (user == null) {
|
||||
return null;
|
||||
}
|
||||
// Create a new user in Firestore if this is the first time signing in.
|
||||
if (!await _firestoreProvider.userExists(user.email)) {
|
||||
final newUserModel = UserModel(
|
||||
username: user.email,
|
||||
tasks: <String>[],
|
||||
summary: SummaryModel(),
|
||||
pendingHigh: 0,
|
||||
pendingMedium: 0,
|
||||
pendingLow: 0,
|
||||
);
|
||||
await _firestoreProvider.createUser(newUserModel, user.uid);
|
||||
}
|
||||
return user;
|
||||
}
|
||||
|
||||
Future<void> signOut() {
|
||||
return _googleSignInProvider.signOut();
|
||||
}
|
||||
|
||||
//---------------------------------STORAGE------------------------------------
|
||||
|
||||
StorageUploadTask uploadFile(File file,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue