Finished repository class, more methods may be necessary
This commit is contained in:
parent
5d4fa06382
commit
e21d8dfd54
3 changed files with 128 additions and 3 deletions
|
|
@ -279,9 +279,9 @@ class FirestoreProvider {
|
||||||
|
|
||||||
/// Returns a stream of [List<EventModel] that correspond to
|
/// Returns a stream of [List<EventModel] that correspond to
|
||||||
/// a particular user.
|
/// a particular user.
|
||||||
Observable<List<EventModel>> getUserEvents(String userDocumentId) {
|
Observable<List<EventModel>> getUserEvents(String userId) {
|
||||||
final mappedStream =
|
final mappedStream =
|
||||||
_firestore.collection('users/$userDocumentId/Events').snapshots().map(
|
_firestore.collection('users/$userId/Events').snapshots().map(
|
||||||
(QuerySnapshot snapshot) {
|
(QuerySnapshot snapshot) {
|
||||||
return snapshot.documents.map((DocumentSnapshot documentSnapshot) {
|
return snapshot.documents.map((DocumentSnapshot documentSnapshot) {
|
||||||
return EventModel.fromFirestore(
|
return EventModel.fromFirestore(
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,8 @@ import 'package:firebase_auth/firebase_auth.dart';
|
||||||
import 'package:google_sign_in/google_sign_in.dart';
|
import 'package:google_sign_in/google_sign_in.dart';
|
||||||
import 'package:rxdart/rxdart.dart';
|
import 'package:rxdart/rxdart.dart';
|
||||||
|
|
||||||
|
export 'package:firebase_auth/firebase_auth.dart' show FirebaseUser;
|
||||||
|
|
||||||
/// A Google authentication provider.
|
/// A Google authentication provider.
|
||||||
///
|
///
|
||||||
/// Connects to both Google and Firebase to authenticate a user.
|
/// Connects to both Google and Firebase to authenticate a user.
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,6 @@
|
||||||
|
import 'dart:async';
|
||||||
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:rxdart/rxdart.dart';
|
import 'package:rxdart/rxdart.dart';
|
||||||
|
|
||||||
import './firebase_storage_provider.dart';
|
import './firebase_storage_provider.dart';
|
||||||
|
|
@ -5,6 +8,7 @@ import './firestore_provider.dart';
|
||||||
import './google_sign_in_provider.dart';
|
import './google_sign_in_provider.dart';
|
||||||
import '../models/event_model.dart';
|
import '../models/event_model.dart';
|
||||||
import '../models/task_model.dart';
|
import '../models/task_model.dart';
|
||||||
|
import '../models/summary_model.dart';
|
||||||
import '../models/user_model.dart';
|
import '../models/user_model.dart';
|
||||||
|
|
||||||
class Repository {
|
class Repository {
|
||||||
|
|
@ -12,9 +16,128 @@ class Repository {
|
||||||
final _firestoreProvider = FirestoreProvider();
|
final _firestoreProvider = FirestoreProvider();
|
||||||
final _googleSignInProvider = GoogleSignInProvider();
|
final _googleSignInProvider = GoogleSignInProvider();
|
||||||
|
|
||||||
|
//--------------------------------CRUD----------------------------------------
|
||||||
|
|
||||||
Observable<UserModel> getUser(String username) {
|
Observable<UserModel> getUser(String username) {
|
||||||
return _firestoreProvider.getUser(username);
|
return _firestoreProvider.getUser(username);
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> createUser(UserModel user) {}
|
Future<void> updateUser(
|
||||||
|
String id, {
|
||||||
|
List<String> tasks,
|
||||||
|
SummaryModel summary,
|
||||||
|
int pendingHigh,
|
||||||
|
int pendingMedium,
|
||||||
|
int pendingLow,
|
||||||
|
}) {
|
||||||
|
return _firestoreProvider.updateUser(id,
|
||||||
|
tasks: tasks,
|
||||||
|
summary: summary,
|
||||||
|
pendingHigh: pendingHigh,
|
||||||
|
pendingMedium: pendingMedium,
|
||||||
|
pendingLow: pendingLow);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> addTask(TaskModel task) {
|
||||||
|
return _firestoreProvider.addTask(task);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> deleteTask(String id) {
|
||||||
|
return _firestoreProvider.deleteTask(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
Observable<TaskModel> getTask(String id) {
|
||||||
|
return _firestoreProvider.getTask(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> updateTask(
|
||||||
|
String id, {
|
||||||
|
String text,
|
||||||
|
int priority,
|
||||||
|
bool done,
|
||||||
|
}) {
|
||||||
|
return _firestoreProvider.updateTask(id,
|
||||||
|
text: text, priority: priority, done: done);
|
||||||
|
}
|
||||||
|
|
||||||
|
Observable<List<TaskModel>> getUserTasks(String username, {String event}) {
|
||||||
|
return _firestoreProvider.getUserTasks(username, event: event);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> addEvent(String userId, EventModel event) {
|
||||||
|
return _firestoreProvider.addEvent(userId, event);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> deleteEvent(String userId, String eventId) {
|
||||||
|
return _firestoreProvider.deleteEvent(userId, eventId);
|
||||||
|
}
|
||||||
|
|
||||||
|
Observable<EventModel> getEvent(String userId, String eventId) {
|
||||||
|
return _firestoreProvider.getEvent(userId, eventId);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> updateEvent(
|
||||||
|
String userId,
|
||||||
|
String eventId, {
|
||||||
|
String name,
|
||||||
|
int pendingtasks,
|
||||||
|
List<int> media,
|
||||||
|
List<String> tasks,
|
||||||
|
int highPriority,
|
||||||
|
int mediumPriority,
|
||||||
|
int lowPriority,
|
||||||
|
}) {
|
||||||
|
return _firestoreProvider.updateEvent(
|
||||||
|
userId,
|
||||||
|
eventId,
|
||||||
|
name: name,
|
||||||
|
pendingtasks: pendingtasks,
|
||||||
|
media: media,
|
||||||
|
tasks: tasks,
|
||||||
|
highPriority: highPriority,
|
||||||
|
mediumPriority: mediumPriority,
|
||||||
|
lowPriority: lowPriority,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Observable<List<EventModel>> getUserEvents(String userId) {
|
||||||
|
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,
|
||||||
|
{String folder = '', String type = 'png'}) {
|
||||||
|
return _storageProvider.uploadFile(file, folder: folder, type: type);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> deleteFile(String path) {
|
||||||
|
return _storageProvider.deleteFile(path);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue