1
1
import 'package:flutter/material.dart' ;
2
2
import 'package:flutter_riverpod/flutter_riverpod.dart' ;
3
+ import 'package:google_docs_clone/app/navigation/routes.dart' ;
3
4
import 'package:google_docs_clone/app/providers.dart' ;
5
+ import 'package:google_docs_clone/repositories/repository_exception.dart' ;
6
+ import 'package:routemaster/routemaster.dart' ;
7
+ import 'package:uuid/uuid.dart' ;
4
8
5
9
class NewDocumentPage extends ConsumerStatefulWidget {
6
10
const NewDocumentPage ({Key ? key}) : super (key: key);
@@ -11,15 +15,40 @@ class NewDocumentPage extends ConsumerStatefulWidget {
11
15
}
12
16
13
17
class _NewDocumentPageState extends ConsumerState <NewDocumentPage > {
18
+ final _uuid = const Uuid ();
19
+
20
+ bool showError = false ;
21
+
22
+ @override
23
+ void initState () {
24
+ super .initState ();
25
+ _createNewPage ();
26
+ }
27
+
28
+ Future <void > _createNewPage () async {
29
+ final documentId = _uuid.v4 ();
30
+ try {
31
+ await ref.read (Repository .database).createNewPage (
32
+ documentId: documentId,
33
+ owner: ref.read (AppState .auth).user! .$id,
34
+ );
35
+
36
+ Routemaster .of (context).push ('${AppRoutes .document }/$documentId ' );
37
+ } on RepositoryException catch (_) {
38
+ setState (() {
39
+ showError = true ;
40
+ });
41
+ }
42
+ }
43
+
14
44
@override
15
45
Widget build (BuildContext context) {
16
- return Center (
17
- child: TextButton (
18
- onPressed: () {
19
- ref.read (AppState .auth.notifier).signOut ();
20
- },
21
- child: const Text ('Sign out' ),
22
- ),
23
- );
46
+ if (showError) {
47
+ return const Center (
48
+ child: Text ('An error occured' ),
49
+ );
50
+ } else {
51
+ return const SizedBox ();
52
+ }
24
53
}
25
54
}
0 commit comments