perisst
continuous-integration/drone/push Build is passing Details

AUTH_PERSISTENCE_LDE
Lucas Delanier 2 years ago
parent 8a561bd4ed
commit c9404a2f0e

@ -18,6 +18,7 @@ import 'package:justmusic/screens/profile_screen.dart';
import 'package:justmusic/screens/registration_screen.dart'; import 'package:justmusic/screens/registration_screen.dart';
import 'package:justmusic/screens/verify_email_screen.dart'; import 'package:justmusic/screens/verify_email_screen.dart';
import 'package:justmusic/screens/welcome_screen.dart'; import 'package:justmusic/screens/welcome_screen.dart';
import 'package:justmusic/values/constants.dart';
import 'package:justmusic/view_model/CommentViewModel.dart'; import 'package:justmusic/view_model/CommentViewModel.dart';
import 'package:justmusic/view_model/MusicViewModel.dart'; import 'package:justmusic/view_model/MusicViewModel.dart';
import 'package:justmusic/view_model/PostViewModel.dart'; import 'package:justmusic/view_model/PostViewModel.dart';
@ -53,63 +54,83 @@ class MyApp extends StatefulWidget {
} }
class _MyAppState extends State<MyApp> { class _MyAppState extends State<MyApp> {
late StreamSubscription<User?> user; Strem<> usercurrent;
Stream<userJustMusic.User?> userCurrent = Stream.empty();
@override @override
void initState() { void initState() {
super.initState(); super.initState();
checkSignIn();
}
Future<userJustMusic.User?> checkSignIn() async {
user = FirebaseAuth.instance.authStateChanges().listen((user) async {
if (user == null) {
print('User is currently signed out!');
return null;
} else {
MyApp.userViewModel.userCurrent = (await (MyApp.userViewModel.getUser(user.uid)))!;
userCurrent = Stream.value(MyApp.userViewModel.userCurrent);
print('User is signed in!');
}
});
return null;
} }
@override @override
void dispose() { void dispose() {
user.cancel();
super.dispose(); super.dispose();
} }
Future<userJustMusic.User?> checkAuth() async {
try {
FirebaseAuth.instance.authStateChanges().listen((User? user) async {
if (user == null) {
print("User is currently signed out!");
throw Exception('User is currently signed out!');
} else {
print('User is signed in!');
usercurrent = await MyApp.userViewModel.getUser(FirebaseAuth.instance.currentUser!.uid);
MyApp.userViewModel.userCurrent = usercurrent!;
print(usercurrent?.pseudo);
}
});
} catch (e) {
return null;
}
return usercurrent;
}
// This widget is the root of your application. // This widget is the root of your application.
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky); SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky);
Paint.enableDithering = true; Paint.enableDithering = true;
return ScreenUtilInit(
useInheritedMediaQuery: true, return StreamBuilder(
builder: (context, child) { stream: usercurrent,
return MaterialApp( builder: (BuildContext context, snapshot) {
routes: { if (snapshot.hasData) {
'/welcome': (context) => const WellcomeScreen(), print("has dataaaa");
'/feed': (context) => const FeedScreen(), return ScreenUtilInit(
'/login': (context) => const LoginScreen(), useInheritedMediaQuery: true,
'/register': (context) => const RegistrationScreen(), builder: (context, child) {
'/post': (context) => const PostScreen(), return MaterialApp(
'/profile': (context) => const ProfileScreen(), routes: {
'/explanation': (context) => const ExplanationsScreen(), '/welcome': (context) => const WellcomeScreen(),
'/addFriend': (context) => const AddFriendScreen(), '/feed': (context) => const FeedScreen(),
'/launchingRocket': (context) => const LaunchingRocketScreen(), '/login': (context) => const LoginScreen(),
'/verifyEmail': (context) => const VerifyEmailScreen(), '/register': (context) => const RegistrationScreen(),
'/post': (context) => const PostScreen(),
'/profile': (context) => const ProfileScreen(),
'/explanation': (context) => const ExplanationsScreen(),
'/addFriend': (context) => const AddFriendScreen(),
'/launchingRocket': (context) => const LaunchingRocketScreen(),
'/verifyEmail': (context) => const VerifyEmailScreen(),
},
debugShowCheckedModeBanner: false,
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: usercurrent == null ? WellcomeScreen() : FeedScreen());
}, },
debugShowCheckedModeBanner: false, designSize: Size(390, 844),
theme: ThemeData( );
primarySwatch: Colors.blue, } else {
return Container(
width: double.infinity,
height: double.infinity,
color: bgColor,
child: Center(
child: CupertinoActivityIndicator(),
), ),
home: WellcomeScreen()); );
}
}, },
designSize: Size(390, 844),
); );
} }
} }

Loading…
Cancel
Save