diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/firebase/auth.dart | 1 | ||||
-rw-r--r-- | lib/main.dart | 28 | ||||
-rw-r--r-- | lib/widgets/chat_bubble.dart | 18 |
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
|