import 'package:flutter/material.dart'; import 'package:matrix/matrix.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:zenith/rooms.dart'; import 'package:zenith/login.dart'; import 'package:provider/provider.dart'; import 'package:zenith/zenith_client_provider.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { return ChangeNotifierProvider( create: (context) => ZenithClientProvider(), child: MaterialApp( title: 'Zenith', theme: ThemeData( colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple), useMaterial3: true, ), home: const MyHomePage(), ), ); } } class MyHomePage extends StatefulWidget { const MyHomePage({super.key}); @override State createState() => _MyHomePageState(); } class _MyHomePageState extends State { bool showRooms = false; String errorMessage = ""; void getCreds() async { final prefs = await SharedPreferences.getInstance(); final homeserver = prefs.getString("homeserver"); final username = prefs.getString("username"); final accessToken = prefs.getString("accessToken"); final refreshToken = prefs.getString("refreshToken"); if (homeserver == null || username == null || accessToken == null) return; if (!mounted) return; final provider = Provider.of(context, listen: false); final client = Client("zenith"); try { await client.checkHomeserver(Uri.parse(homeserver)); await client.login(LoginType.mLoginToken, token: accessToken); provider.setClient(client); setState(() { showRooms = true; }); } catch (error) { print(error); setState(() { errorMessage = error.toString(); }); } } @override void initState() { super.initState(); getCreds(); } @override Widget build(BuildContext context) { if (showRooms) return const RoomsPage(); else return const LoginPage(); } }