aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/firebase/auth.dart1
-rw-r--r--lib/main.dart28
-rw-r--r--lib/widgets/chat_bubble.dart18
3 files changed, 34 insertions, 13 deletions
diff --git a/lib/firebase/auth.dart b/lib/firebase/auth.dart
index 303412e..35da5bf 100644
--- a/lib/firebase/auth.dart
+++ b/lib/firebase/auth.dart
@@ -15,6 +15,7 @@ class Auth {
final Database _db = Database();
User? get currentUser => _auth.currentUser;
+ Stream<User?> get userChanges => _auth.userChanges();
Future<bool> createUserWithEmailAndPassword({
required String email,
diff --git a/lib/main.dart b/lib/main.dart
index a0ff04a..8baaa61 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -1,7 +1,10 @@
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
+import 'package:linkchat/screens/dashboard_screen.dart';
+import 'package:linkchat/screens/login_screen.dart';
import 'package:provider/provider.dart';
+import 'firebase/auth.dart';
import 'providers/theme_provider.dart';
import 'routes.dart';
import 'settings/themes.dart';
@@ -34,13 +37,15 @@ class _MainContentState extends State<MainContent> {
providers: [
ChangeNotifierProvider(create: (_) => ThemeProvider()),
],
- child: const LinkChat(),
+ child: LinkChat(),
);
}
}
class LinkChat extends StatelessWidget {
- const LinkChat({super.key});
+ final Auth _auth = Auth();
+
+ LinkChat({super.key});
@override
Widget build(BuildContext context) {
@@ -48,11 +53,18 @@ class LinkChat extends StatelessWidget {
final ThemeData? theme = provider.theme;
provider.syncFromPrefs();
return MaterialApp(
- theme: theme ?? ThemeSettings.lightTheme,
- darkTheme: theme ?? ThemeSettings.darkTheme,
- themeMode: ThemeMode.system,
- routes: getApplicationRoutes(),
- initialRoute: '/login',
- );
+ theme: theme ?? ThemeSettings.lightTheme,
+ darkTheme: theme ?? ThemeSettings.darkTheme,
+ themeMode: ThemeMode.system,
+ routes: getApplicationRoutes(),
+ // initialRoute: '/login',
+ home: StreamBuilder(
+ stream: _auth.userChanges,
+ builder: (context, snapshot) {
+ return (snapshot.hasData && !snapshot.data!.isAnonymous)
+ ? const DashboardScreen()
+ : const LoginScreen();
+ },
+ ));
}
}
diff --git a/lib/widgets/chat_bubble.dart b/lib/widgets/chat_bubble.dart
index 7c2e16c..5afa01e 100644
--- a/lib/widgets/chat_bubble.dart
+++ b/lib/widgets/chat_bubble.dart
@@ -1,3 +1,4 @@
+import 'package:cached_network_image/cached_network_image.dart';
import 'package:custom_clippers/custom_clippers.dart';
import 'package:flutter/material.dart';
import 'package:linkchat/models/message.dart';
@@ -124,12 +125,19 @@ class LinkPreview extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
message.linkPhotoURL != null
- ? FadeInImage(
- placeholder: const AssetImage('assets/loading.gif'),
- image: NetworkImage(message.linkPhotoURL!),
- imageErrorBuilder: (context, error, stackTrace) =>
+ // ? FadeInImage(
+ // placeholder: const AssetImage('assets/loading.gif'),
+ // image: NetworkImage(message.linkPhotoURL!),
+ // imageErrorBuilder: (context, error, stackTrace) =>
+ // const SizedBox.shrink(),
+ // fit: BoxFit.fill,
+ // )
+ ? CachedNetworkImage(
+ imageUrl: message.linkPhotoURL!,
+ placeholder: (context, url) =>
+ Image.asset('assets/loading.gif'),
+ errorWidget: (context, url, error) =>
const SizedBox.shrink(),
- fit: BoxFit.fill,
)
: const SizedBox.shrink(),
message.linkTitle != null