From a7c30732f47fe4a6ff775ac83565bf4bbdc57a50 Mon Sep 17 00:00:00 2001 From: juan Date: Thu, 24 Apr 2025 17:01:46 -0400 Subject: [PATCH] alerDialog widget for renaming --- lib/folder_drawer.dart | 100 +++++++++++++++++++++++++++-------------- 1 file changed, 67 insertions(+), 33 deletions(-) diff --git a/lib/folder_drawer.dart b/lib/folder_drawer.dart index 62b0a42..257a98d 100644 --- a/lib/folder_drawer.dart +++ b/lib/folder_drawer.dart @@ -16,6 +16,7 @@ class FolderDrawer extends StatefulWidget { class _FolderDrawerState extends State { List folders = []; + final TextEditingController _renameController = TextEditingController(); @override void initState() { @@ -48,7 +49,7 @@ class _FolderDrawerState extends State { icon: Icon(Icons.more_vert), onPressed: () => { ///show options - _showOptions(context) + _showOptions(context, folder) }, ), onTap: () { @@ -65,7 +66,7 @@ class _FolderDrawerState extends State { showDialog( context: context, builder: (BuildContext context) { - return NewMailbox(apiService: widget.apiService); + return NewMailbox(apiService: widget.apiService); }, ); // Navigator.of(context).pop(); @@ -83,39 +84,74 @@ class _FolderDrawerState extends State { ), ); } - void _showOptions(BuildContext context) async { - final RenderBox overlay = Overlay.of(context).context.findRenderObject() as RenderBox; - - await showMenu( - context: context, - position: RelativeRect.fromLTRB(100, 100, overlay.size.width, overlay.size.height), - items: >[ - PopupMenuItem( - value: 'Rename', - child: Text('Rename Folder'), - ), - PopupMenuItem( - value: 'Delete', - child: Text('Delete Folder'), - ), - ], - ).then((value) { - // Handle the action based on the selected menu item - if (value == 'Rename') { - // Logic for renaming the folder - print('Rename folder'); - } else if (value == 'Delete') { - // Logic for deleting the folder - print('Delete folder'); - } - }); -} + Future _renameDialog(String oldFolder) async { + showDialog( + context: context, + builder: (BuildContext context) { + return AlertDialog( + title: Text("Rename Mailbox"), + content: TextField( + controller: _renameController, + decoration: const InputDecoration( + hintText: "New Name", + ), + ), + actions: [ + TextButton( + onPressed: () { + String newfolderName = _renameController.text; + if (newfolderName.isNotEmpty) { + //make an and to make sure there's two folders with the same name + ApiService().renameFolder(oldFolder, newfolderName); + } + Navigator.of(context).pop(); + }, + child: const Text("Rename"), + ) + ], + ); + }); + + return false; + } + + void _showOptions(BuildContext context, String folderName) async { + final RenderBox overlay = + Overlay.of(context).context.findRenderObject() as RenderBox; + print(folderName); + await showMenu( + context: context, + position: RelativeRect.fromLTRB( + 100, 100, overlay.size.width, overlay.size.height), + items: >[ + PopupMenuItem( + value: 'Rename', + child: Text('Rename Folder'), + ), + PopupMenuItem( + value: 'Delete', + child: Text('Delete Folder'), + ), + ], + ).then((value) { + // Handle the action based on the selected menu item + if (value == 'Rename') { + // Logic for renaming the folder + print('Rename folder $folderName'); + _renameDialog(folderName); + } else if (value == 'Delete') { + // Logic for deleting the folder + print("Deleting $folderName"); + ApiService().deleteFolder(folderName); + print('Deleted folder'); + } + }); + } } class NewMailbox extends StatelessWidget { final ApiService apiService; - // final Function(String) onFolderCreated; final TextEditingController _textFieldController = TextEditingController(); NewMailbox({required this.apiService}); @@ -127,7 +163,7 @@ class NewMailbox extends StatelessWidget { content: TextField( controller: _textFieldController, decoration: const InputDecoration( - hintText: "EPIC FOLDER", // Your custom hint text here + hintText: "New Folder", ), ), actions: [ @@ -138,9 +174,7 @@ class NewMailbox extends StatelessWidget { if (folderName.isNotEmpty) { apiService.createFolder(folderName); - // onFolderCreated(folderName); } - // apiService.createFolder(_textFieldController.text); Navigator.of(context).pop(); }, child: const Text("Approve"),