aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIván Ávalos <avalos@disroot.org>2023-05-22 09:16:29 -0600
committerIván Ávalos <avalos@disroot.org>2023-05-22 09:16:29 -0600
commit6dec9856b1b94bfc4b284125920a2be52be6dabf (patch)
tree7ef395dd11a36c4e88e88716b3db7277884c3c77
parentf0e45a5a510d2b4693580179645bd0bb0b352f86 (diff)
downloadlinkchat-6dec9856b1b94bfc4b284125920a2be52be6dabf.tar.gz
linkchat-6dec9856b1b94bfc4b284125920a2be52be6dabf.tar.bz2
linkchat-6dec9856b1b94bfc4b284125920a2be52be6dabf.zip
Se persiste sesión, y se guardan imágenes en caché
-rw-r--r--lib/firebase/auth.dart1
-rw-r--r--lib/main.dart28
-rw-r--r--lib/widgets/chat_bubble.dart18
-rw-r--r--pubspec.lock120
-rw-r--r--pubspec.yaml1
5 files changed, 155 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
diff --git a/pubspec.lock b/pubspec.lock
index 0e6372d..4088b0b 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -33,6 +33,30 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.1.1"
+ cached_network_image:
+ dependency: "direct main"
+ description:
+ name: cached_network_image
+ sha256: fd3d0dc1d451f9a252b32d95d3f0c3c487bc41a75eba2e6097cb0b9c71491b15
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.2.3"
+ cached_network_image_platform_interface:
+ dependency: transitive
+ description:
+ name: cached_network_image_platform_interface
+ sha256: bb2b8403b4ccdc60ef5f25c70dead1f3d32d24b9d6117cfc087f496b178594a7
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.0.0"
+ cached_network_image_web:
+ dependency: transitive
+ description:
+ name: cached_network_image_web
+ sha256: b8eb814ebfcb4dea049680f8c1ffb2df399e4d03bf7a352c775e26fa06e02fa0
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.2"
characters:
dependency: transitive
description:
@@ -270,6 +294,22 @@ packages:
description: flutter
source: sdk
version: "0.0.0"
+ flutter_blurhash:
+ dependency: transitive
+ description:
+ name: flutter_blurhash
+ sha256: "05001537bd3fac7644fa6558b09ec8c0a3f2eba78c0765f88912882b1331a5c6"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.7.0"
+ flutter_cache_manager:
+ dependency: transitive
+ description:
+ name: flutter_cache_manager
+ sha256: "32cd900555219333326a2d0653aaaf8671264c29befa65bbd9856d204a4c9fb3"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.3.0"
flutter_lints:
dependency: "direct dev"
description:
@@ -432,6 +472,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.0.0"
+ octo_image:
+ dependency: transitive
+ description:
+ name: octo_image
+ sha256: "107f3ed1330006a3bea63615e81cf637433f5135a52466c7caa0e7152bca9143"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.2"
path:
dependency: "direct main"
description:
@@ -440,6 +488,30 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.8.3"
+ path_provider:
+ dependency: transitive
+ description:
+ name: path_provider
+ sha256: "3087813781ab814e4157b172f1a11c46be20179fcc9bea043e0fba36bc0acaa2"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.0.15"
+ path_provider_android:
+ dependency: transitive
+ description:
+ name: path_provider_android
+ sha256: "2cec049d282c7f13c594b4a73976b0b4f2d7a1838a6dd5aaf7bd9719196bee86"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.0.27"
+ path_provider_foundation:
+ dependency: transitive
+ description:
+ name: path_provider_foundation
+ sha256: "1995d88ec2948dac43edf8fe58eb434d35d22a2940ecee1a9fefcd62beee6eb3"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.2.3"
path_provider_linux:
dependency: transitive
description:
@@ -464,6 +536,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.1.6"
+ pedantic:
+ dependency: transitive
+ description:
+ name: pedantic
+ sha256: "67fc27ed9639506c856c840ccce7594d0bdcd91bc8d53d6e52359449a1d50602"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.11.1"
platform:
dependency: transitive
description:
@@ -504,6 +584,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "6.0.5"
+ rxdart:
+ dependency: transitive
+ description:
+ name: rxdart
+ sha256: "0c7c0cedd93788d996e33041ffecda924cc54389199cde4e6a34b440f50044cb"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.27.7"
shared_preferences:
dependency: "direct main"
description:
@@ -589,6 +677,22 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.9.1"
+ sqflite:
+ dependency: transitive
+ description:
+ name: sqflite
+ sha256: b4d6710e1200e96845747e37338ea8a819a12b51689a3bcf31eff0003b37a0b9
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.2.8+4"
+ sqflite_common:
+ dependency: transitive
+ description:
+ name: sqflite_common
+ sha256: e77abf6ff961d69dfef41daccbb66b51e9983cdd5cb35bf30733598057401555
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.4.5"
stack_trace:
dependency: transitive
description:
@@ -621,6 +725,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.3.0"
+ synchronized:
+ dependency: transitive
+ description:
+ name: synchronized
+ sha256: "5fcbd27688af6082f5abd611af56ee575342c30e87541d0245f7ff99faa02c60"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.1.0"
term_glyph:
dependency: transitive
description:
@@ -725,6 +837,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "3.0.6"
+ uuid:
+ dependency: transitive
+ description:
+ name: uuid
+ sha256: "648e103079f7c64a36dc7d39369cabb358d377078a051d6ae2ad3aa539519313"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.0.7"
vector_math:
dependency: transitive
description:
diff --git a/pubspec.yaml b/pubspec.yaml
index 8657ed6..8dbe28a 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -26,6 +26,7 @@ dependencies:
custom_clippers: ^2.0.0
simple_link_preview: ^1.0.2
url_launcher: ^6.1.11
+ cached_network_image: ^3.2.3
intl: ^0.18.1
dev_dependencies: