aboutsummaryrefslogtreecommitdiff
path: root/frontend/lib/main.dart
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/lib/main.dart')
-rw-r--r--frontend/lib/main.dart134
1 files changed, 134 insertions, 0 deletions
diff --git a/frontend/lib/main.dart b/frontend/lib/main.dart
new file mode 100644
index 000000000..8e0cac477
--- /dev/null
+++ b/frontend/lib/main.dart
@@ -0,0 +1,134 @@
+import 'package:auto_gpt_flutter_client/services/leaderboard_service.dart';
+import 'package:auto_gpt_flutter_client/services/shared_preferences_service.dart';
+import 'package:auto_gpt_flutter_client/viewmodels/settings_viewmodel.dart';
+import 'package:auto_gpt_flutter_client/viewmodels/task_queue_viewmodel.dart';
+import 'package:auto_gpt_flutter_client/views/auth/firebase_auth_view.dart';
+import 'package:flutter/material.dart';
+import 'views/main_layout.dart';
+import 'package:provider/provider.dart';
+import 'package:firebase_core/firebase_core.dart';
+import 'package:firebase_auth/firebase_auth.dart';
+
+import 'package:auto_gpt_flutter_client/viewmodels/task_viewmodel.dart';
+import 'package:auto_gpt_flutter_client/viewmodels/chat_viewmodel.dart';
+import 'package:auto_gpt_flutter_client/viewmodels/skill_tree_viewmodel.dart';
+
+import 'package:auto_gpt_flutter_client/services/chat_service.dart';
+import 'package:auto_gpt_flutter_client/services/task_service.dart';
+import 'package:auto_gpt_flutter_client/services/benchmark_service.dart';
+
+import 'package:auto_gpt_flutter_client/utils/rest_api_utility.dart';
+
+// TODO: Update documentation throughout project for consistency
+void main() async {
+ WidgetsFlutterBinding.ensureInitialized();
+ await Firebase.initializeApp(
+ options: const FirebaseOptions(
+ apiKey: 'AIzaSyBvYLAK_A0uhFuVPQbTxUdVWbb_Lsur9cg',
+ authDomain: 'prod-auto-gpt.firebaseapp.com',
+ projectId: 'prod-auto-gpt',
+ storageBucket: 'prod-auto-gpt.appspot.com',
+ messagingSenderId: '387936576242',
+ appId: '1:387936576242:web:7536e0c50dd81b4dd7a66b',
+ measurementId: 'G-8PRS69JJRL',
+ ),
+ );
+
+ runApp(
+ MultiProvider(
+ providers: [
+ Provider(
+ create: (context) => RestApiUtility("http://127.0.0.1:8000/ap/v1"),
+ ),
+ Provider(
+ create: (context) => SharedPreferencesService.instance,
+ ),
+ ProxyProvider<RestApiUtility, ChatService>(
+ update: (context, restApiUtility, chatService) =>
+ ChatService(restApiUtility),
+ ),
+ ProxyProvider2<RestApiUtility, SharedPreferencesService, TaskService>(
+ update: (context, restApiUtility, prefsService, taskService) =>
+ TaskService(restApiUtility, prefsService),
+ ),
+ ProxyProvider<RestApiUtility, BenchmarkService>(
+ update: (context, restApiUtility, benchmarkService) =>
+ BenchmarkService(restApiUtility),
+ ),
+ ProxyProvider<RestApiUtility, LeaderboardService>(
+ update: (context, restApiUtility, leaderboardService) =>
+ LeaderboardService(restApiUtility),
+ ),
+ ChangeNotifierProxyProvider2<RestApiUtility, SharedPreferencesService,
+ SettingsViewModel>(
+ create: (context) => SettingsViewModel(
+ Provider.of<RestApiUtility>(context, listen: false),
+ Provider.of<SharedPreferencesService>(context, listen: false),
+ ),
+ update: (context, restApiUtility, prefsService, settingsViewModel) =>
+ SettingsViewModel(restApiUtility, prefsService),
+ ),
+ ],
+ child: MyApp(),
+ ),
+ );
+}
+
+class MyApp extends StatelessWidget {
+ @override
+ Widget build(BuildContext context) {
+ final taskService = Provider.of<TaskService>(context, listen: false);
+ taskService.loadDeletedTasks();
+
+ return MaterialApp(
+ debugShowCheckedModeBanner: false,
+ title: 'AutoGPT Flutter Client',
+ theme: ThemeData(
+ primarySwatch: Colors.blue,
+ ),
+ home: StreamBuilder<User?>(
+ stream: FirebaseAuth.instance.authStateChanges(),
+ builder: (context, snapshot) {
+ if (snapshot.connectionState == ConnectionState.waiting) {
+ return CircularProgressIndicator();
+ }
+ String hostname = Uri.base.host;
+
+ if (snapshot.hasData && snapshot.data != null ||
+ hostname.contains('github.dev')) {
+ return MultiProvider(
+ providers: [
+ ChangeNotifierProvider(
+ create: (context) => ChatViewModel(
+ Provider.of<ChatService>(context, listen: false),
+ Provider.of<SharedPreferencesService>(context,
+ listen: false),
+ ),
+ ),
+ ChangeNotifierProvider(
+ create: (context) => TaskViewModel(
+ Provider.of<TaskService>(context, listen: false),
+ Provider.of<SharedPreferencesService>(context,
+ listen: false),
+ ),
+ ),
+ ChangeNotifierProvider(
+ create: (context) => SkillTreeViewModel()),
+ ChangeNotifierProvider(
+ create: (context) => TaskQueueViewModel(
+ Provider.of<BenchmarkService>(context, listen: false),
+ Provider.of<LeaderboardService>(context, listen: false),
+ Provider.of<SharedPreferencesService>(context,
+ listen: false),
+ ),
+ ),
+ ],
+ child: MainLayout(),
+ ); // User is signed in
+ }
+ return FirebaseAuthView(); // User is not signed in, show auth UI
+ },
+ ),
+ );
+ }
+}