Zenith/lib/main.dart

85 lines
2.2 KiB
Dart
Raw Normal View History

import 'package:flutter/material.dart';
import 'package:matrix/matrix.dart';
import 'package:shared_preferences/shared_preferences.dart';
2023-12-28 21:40:09 +00:00
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<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
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<ZenithClientProvider>(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)
2023-12-28 21:40:09 +00:00
return const RoomsPage();
else
return const LoginPage();
}
}