Skip to content

Commit

Permalink
feat: added streak and last login tracking
Browse files Browse the repository at this point in the history
  • Loading branch information
SethCohen committed Feb 13, 2023
1 parent 817dcc9 commit b4c9d86
Showing 1 changed file with 37 additions and 7 deletions.
44 changes: 37 additions & 7 deletions src/lib/widgets/page_manager.dart
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:asl/pages/home_page.dart';
import 'package:asl/pages/landing_page.dart';
Expand All @@ -11,14 +12,43 @@ class PageManager extends StatelessWidget {
body: StreamBuilder(
stream: FirebaseAuth.instance.authStateChanges(),
builder: (context, snapshot) {
bool isSignedIn = false;
if (snapshot.hasData) {
FirebaseFirestore.instance
.collection("users")
.doc(FirebaseAuth.instance.currentUser!.uid)
.get()
.then(
(value) {
if (!value.exists) {
FirebaseFirestore.instance
.collection("users")
.doc(FirebaseAuth.instance.currentUser!.uid)
.set({
"lastLogin": DateTime.now(),
"streak": 0,
});
} else {
if (DateTime.now()
.difference(value.data()!["lastLogin"].toDate())
.inDays >
1) {
FirebaseFirestore.instance
.collection("users")
.doc(FirebaseAuth.instance.currentUser!.uid)
.update({
"lastLogin": DateTime.now(),
"streak": value.data()!["streak"] + 1,
});
}
}
},
);

if (snapshot.connectionState == ConnectionState.active) {
isSignedIn = snapshot.hasData;
} else if (snapshot.connectionState == ConnectionState.waiting) {
return const Center(child: CircularProgressIndicator());
return const HomePage();
} else if (snapshot.hasError) {
return const Center(child: Text('Something went wrong!'));
} else {
return const LandingPage();
}

return isSignedIn ? const HomePage() : const LandingPage();
}));
}

0 comments on commit b4c9d86

Please sign in to comment.