diff --git a/lib/folder_drawer.dart b/lib/folder_drawer.dart new file mode 100644 index 0000000..deeb94b --- /dev/null +++ b/lib/folder_drawer.dart @@ -0,0 +1,64 @@ +//drawer with the folders for emails a.k.a mailboxes + +import 'package:flutter/material.dart'; +import 'api_service.dart'; + +class FolderDrawer extends StatefulWidget { + ApiService apiService; + Function(String) onFolderTap; + + FolderDrawer({required this.apiService, required this.onFolderTap}); + + @override + _FolderDrawerState createState() => _FolderDrawerState(); +} + +class _FolderDrawerState extends State { + List folders = []; + + @override + void initState() { + super.initState(); + _fetchFolders(); + } + + Future _fetchFolders() async { + try { + List fetchedFolders = await widget.apiService.fetchFolders(); + setState(() { + folders = fetchedFolders; + }); + } catch (e) { + print('Error fetching folders: $e'); + } + } + + @override + Widget build(BuildContext context) { + return Drawer( + child: ListView( + padding: EdgeInsets.zero, + children: [ + ...folders.map((folder) { + return ListTile( + leading: Icon(Icons.mail), + title: Text(folder), + onTap: () { + widget.onFolderTap(folder); + Navigator.pop(context); // Close the drawer after selecting a folder + }, + ); + }).toList(), + ListTile( + leading: Icon(Icons.refresh), + title: Text('Refresh Folders'), + onTap: () { + _fetchFolders(); // Refresh folders when this tile is tapped + Navigator.pop(context); // Close the drawer after refresh + }, + ), + ], + ), + ); + } +}