select list of which foilder to move your email
This commit is contained in:
		
							parent
							
								
									9297468f6f
								
							
						
					
					
						commit
						7a1e735f11
					
				
					 2 changed files with 171 additions and 7 deletions
				
			
		| 
						 | 
					@ -46,6 +46,7 @@ class ApiService {
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        currFolder = folder;
 | 
				
			||||||
        return allEmails;
 | 
					        return allEmails;
 | 
				
			||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
        throw Exception('Failed to load threads');
 | 
					        throw Exception('Failed to load threads');
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										173
									
								
								lib/augment.dart
									
										
									
									
									
								
							
							
						
						
									
										173
									
								
								lib/augment.dart
									
										
									
									
									
								
							| 
						 | 
					@ -1,7 +1,10 @@
 | 
				
			||||||
 | 
					// import 'dart:ffi';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import 'package:crab_ui/api_service.dart';
 | 
					import 'package:crab_ui/api_service.dart';
 | 
				
			||||||
import 'package:crab_ui/attachmentDownload.dart';
 | 
					import 'package:crab_ui/attachmentDownload.dart';
 | 
				
			||||||
import 'package:crab_ui/structs.dart';
 | 
					import 'package:crab_ui/structs.dart';
 | 
				
			||||||
import 'package:flutter/material.dart';
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
 | 
					import 'package:pdfrx/pdfrx.dart';
 | 
				
			||||||
import 'package:pointer_interceptor/pointer_interceptor.dart';
 | 
					import 'package:pointer_interceptor/pointer_interceptor.dart';
 | 
				
			||||||
import 'dart:html' as html;
 | 
					import 'dart:html' as html;
 | 
				
			||||||
import 'dart:js' as js;
 | 
					import 'dart:js' as js;
 | 
				
			||||||
| 
						 | 
					@ -88,6 +91,12 @@ class _DynamicClassesAugment extends State<EmailToolbar> {
 | 
				
			||||||
            onPressed: AugmentClasses.handleStop,
 | 
					            onPressed: AugmentClasses.handleStop,
 | 
				
			||||||
            child: Text('Stop'),
 | 
					            child: Text('Stop'),
 | 
				
			||||||
          ),
 | 
					          ),
 | 
				
			||||||
 | 
					          ElevatedButton(
 | 
				
			||||||
 | 
					            onPressed: () {
 | 
				
			||||||
 | 
					              AugmentClasses.handleMove(context);
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            child: Text('Move'),
 | 
				
			||||||
 | 
					          ),
 | 
				
			||||||
          Spacer(),
 | 
					          Spacer(),
 | 
				
			||||||
          PopupMenuButton<String>(
 | 
					          PopupMenuButton<String>(
 | 
				
			||||||
            onSelected: (String value) {
 | 
					            onSelected: (String value) {
 | 
				
			||||||
| 
						 | 
					@ -212,8 +221,9 @@ class _DynamicClassesAugment extends State<EmailToolbar> {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class AugmentClasses {
 | 
					class AugmentClasses {
 | 
				
			||||||
  ApiService _apiService = ApiService();
 | 
					 | 
				
			||||||
  static OverlayEntry? _overlayEntry;
 | 
					  static OverlayEntry? _overlayEntry;
 | 
				
			||||||
 | 
					  static String? selectedFolder; // Manage selected folder at the class level
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  static void handleHome(BuildContext context) {
 | 
					  static void handleHome(BuildContext context) {
 | 
				
			||||||
    Navigator.of(context).popUntil((route) => route.isFirst);
 | 
					    Navigator.of(context).popUntil((route) => route.isFirst);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
| 
						 | 
					@ -222,11 +232,165 @@ class AugmentClasses {
 | 
				
			||||||
    print("reload");
 | 
					    print("reload");
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Widget listOfFolders(BuildContext context) {
 | 
				
			||||||
 | 
					    //list the emails and make some sort of selection box
 | 
				
			||||||
 | 
					    return FutureBuilder<List<String>>(
 | 
				
			||||||
 | 
					      future: ApiService().fetchFolders(),
 | 
				
			||||||
 | 
					      builder: (context, snapshot) {
 | 
				
			||||||
 | 
					        if (snapshot.connectionState == ConnectionState.waiting) {
 | 
				
			||||||
 | 
					          return Center(child: CircularProgressIndicator());
 | 
				
			||||||
 | 
					        } else if (snapshot.hasError) {
 | 
				
			||||||
 | 
					          return Center(child: Text('Error: ${snapshot.error}'));
 | 
				
			||||||
 | 
					        } else if (snapshot.hasData) {
 | 
				
			||||||
 | 
					          String? selectedFolder; // Declare the selected folder state
 | 
				
			||||||
 | 
					          return StatefulBuilder(
 | 
				
			||||||
 | 
					            builder: (context, setState) {
 | 
				
			||||||
 | 
					              return ListView(
 | 
				
			||||||
 | 
					                shrinkWrap: true,
 | 
				
			||||||
 | 
					                physics: NeverScrollableScrollPhysics(),
 | 
				
			||||||
 | 
					                children: snapshot.data!.map((folder) {
 | 
				
			||||||
 | 
					                  return RadioListTile<String>(
 | 
				
			||||||
 | 
					                    title: Text(folder),
 | 
				
			||||||
 | 
					                    value: folder,
 | 
				
			||||||
 | 
					                    groupValue: selectedFolder,
 | 
				
			||||||
 | 
					                    onChanged: (String? value) {
 | 
				
			||||||
 | 
					                      setState(() {
 | 
				
			||||||
 | 
					                        selectedFolder = value; // Update the selected folder
 | 
				
			||||||
 | 
					                      });
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                  );
 | 
				
			||||||
 | 
					                }).toList(),
 | 
				
			||||||
 | 
					              );
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					          );
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					          return const Center(child: Text('No folders found.'));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  static void handleMove(BuildContext context) async {
 | 
				
			||||||
 | 
					    print("current folder: ${ApiService.currFolder}");
 | 
				
			||||||
 | 
					    final overlay = Overlay.of(context);
 | 
				
			||||||
 | 
					    String? selectedFolder; // Variable to store the selected folder
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    _overlayEntry = OverlayEntry(
 | 
				
			||||||
 | 
					      builder: (context) => Stack(
 | 
				
			||||||
 | 
					        children: [
 | 
				
			||||||
 | 
					          // Dimmed background
 | 
				
			||||||
 | 
					          Container(
 | 
				
			||||||
 | 
					            color: Colors.black54,
 | 
				
			||||||
 | 
					            width: MediaQuery.of(context).size.width,
 | 
				
			||||||
 | 
					            height: MediaQuery.of(context).size.height,
 | 
				
			||||||
 | 
					          ),
 | 
				
			||||||
 | 
					          // Focused content window
 | 
				
			||||||
 | 
					          PointerInterceptor(
 | 
				
			||||||
 | 
					            child: Center(
 | 
				
			||||||
 | 
					              child: Material(
 | 
				
			||||||
 | 
					                elevation: 8,
 | 
				
			||||||
 | 
					                borderRadius: BorderRadius.circular(12),
 | 
				
			||||||
 | 
					                child: ConstrainedBox(
 | 
				
			||||||
 | 
					                  constraints: const BoxConstraints(
 | 
				
			||||||
 | 
					                    maxWidth: 400,
 | 
				
			||||||
 | 
					                    maxHeight: 500,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                  child: Column(
 | 
				
			||||||
 | 
					                    mainAxisSize: MainAxisSize.min,
 | 
				
			||||||
 | 
					                    children: [
 | 
				
			||||||
 | 
					                      Text(
 | 
				
			||||||
 | 
					                        'Move email from folder ${ApiService.currFolder} to:',
 | 
				
			||||||
 | 
					                        style: TextStyle(fontSize: 16),
 | 
				
			||||||
 | 
					                      ),
 | 
				
			||||||
 | 
					                      Divider(height: 1),
 | 
				
			||||||
 | 
					                      Expanded(
 | 
				
			||||||
 | 
					                        child: FutureBuilder<List<String>>(
 | 
				
			||||||
 | 
					                          future: ApiService().fetchFolders(),
 | 
				
			||||||
 | 
					                          builder: (context, snapshot) {
 | 
				
			||||||
 | 
					                            if (snapshot.connectionState ==
 | 
				
			||||||
 | 
					                                ConnectionState.waiting) {
 | 
				
			||||||
 | 
					                              return const Center(
 | 
				
			||||||
 | 
					                                  child: CircularProgressIndicator());
 | 
				
			||||||
 | 
					                            } else if (snapshot.hasError) {
 | 
				
			||||||
 | 
					                              return Center(
 | 
				
			||||||
 | 
					                                  child: Text('Error: ${snapshot.error}'));
 | 
				
			||||||
 | 
					                            } else if (snapshot.hasData) {
 | 
				
			||||||
 | 
					                              return StatefulBuilder(
 | 
				
			||||||
 | 
					                                builder: (context, setState) {
 | 
				
			||||||
 | 
					                                  return ListView(
 | 
				
			||||||
 | 
					                                    shrinkWrap: true,
 | 
				
			||||||
 | 
					                                    children: snapshot.data!.map((folder) {
 | 
				
			||||||
 | 
					                                      return RadioListTile<String>(
 | 
				
			||||||
 | 
					                                        title: Text(folder),
 | 
				
			||||||
 | 
					                                        value: folder,
 | 
				
			||||||
 | 
					                                        groupValue: selectedFolder,
 | 
				
			||||||
 | 
					                                        onChanged: (String? value) {
 | 
				
			||||||
 | 
					                                          setState(() {
 | 
				
			||||||
 | 
					                                            selectedFolder = value; // Update the selected folder
 | 
				
			||||||
 | 
					                                          });
 | 
				
			||||||
 | 
					                                        },
 | 
				
			||||||
 | 
					                                      );
 | 
				
			||||||
 | 
					                                    }).toList(),
 | 
				
			||||||
 | 
					                                  );
 | 
				
			||||||
 | 
					                                },
 | 
				
			||||||
 | 
					                              );
 | 
				
			||||||
 | 
					                            } else {
 | 
				
			||||||
 | 
					                              return const Center(
 | 
				
			||||||
 | 
					                                  child: Text('No folders found.'));
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                          },
 | 
				
			||||||
 | 
					                        ),
 | 
				
			||||||
 | 
					                      ),
 | 
				
			||||||
 | 
					                      Divider(height: 1),
 | 
				
			||||||
 | 
					                      Row(
 | 
				
			||||||
 | 
					                        mainAxisAlignment: MainAxisAlignment.spaceEvenly,
 | 
				
			||||||
 | 
					                        children: [
 | 
				
			||||||
 | 
					                          ElevatedButton(
 | 
				
			||||||
 | 
					                            onPressed: () {
 | 
				
			||||||
 | 
					                              // Handle Accept button
 | 
				
			||||||
 | 
					                              if (selectedFolder != null) {
 | 
				
			||||||
 | 
					                                print("Selected folder: $selectedFolder");
 | 
				
			||||||
 | 
					                                // Store the selected folder or perform any action
 | 
				
			||||||
 | 
					                                // ApiService.currFolder = selectedFolder!;
 | 
				
			||||||
 | 
					                                ApiService()
 | 
				
			||||||
 | 
					                                  .moveEmail(ApiService.currFolder, ApiService.currThreadID, selectedFolder!);
 | 
				
			||||||
 | 
					                                _overlayEntry?.remove();
 | 
				
			||||||
 | 
					                              } else {
 | 
				
			||||||
 | 
					                                print("No folder selected");
 | 
				
			||||||
 | 
					                              }
 | 
				
			||||||
 | 
					                            },
 | 
				
			||||||
 | 
					                            child: Text('Accept'),
 | 
				
			||||||
 | 
					                          ),
 | 
				
			||||||
 | 
					                          ElevatedButton(
 | 
				
			||||||
 | 
					                            onPressed: () {
 | 
				
			||||||
 | 
					                              // Handle Cancel button
 | 
				
			||||||
 | 
					                              _overlayEntry?.remove();
 | 
				
			||||||
 | 
					                            },
 | 
				
			||||||
 | 
					                            child: Text('Cancel'),
 | 
				
			||||||
 | 
					                          ),
 | 
				
			||||||
 | 
					                        ],
 | 
				
			||||||
 | 
					                      ),
 | 
				
			||||||
 | 
					                    ],
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                ),
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					          ),
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (_overlayEntry != null) {
 | 
				
			||||||
 | 
					      overlay.insert(_overlayEntry!);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  static void handleImages(BuildContext context) {
 | 
					  static void handleImages(BuildContext context) {
 | 
				
			||||||
 | 
					    //rename to handle attachments
 | 
				
			||||||
    print("Images button pressed");
 | 
					    print("Images button pressed");
 | 
				
			||||||
    final overlay = Overlay.of(context);
 | 
					    final overlay = Overlay.of(context);
 | 
				
			||||||
    final renderBox = context.findRenderObject() as RenderBox;
 | 
					    // final renderBox = context.findRenderObject() as RenderBox;
 | 
				
			||||||
    final offset = renderBox.localToGlobal(Offset.zero);
 | 
					    // final offset = renderBox.localToGlobal(Offset.zero);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    _overlayEntry = OverlayEntry(
 | 
					    _overlayEntry = OverlayEntry(
 | 
				
			||||||
      builder: (context) => Stack(
 | 
					      builder: (context) => Stack(
 | 
				
			||||||
| 
						 | 
					@ -295,8 +459,7 @@ class AugmentClasses {
 | 
				
			||||||
  static List<Widget> _buildMenuItem(BuildContext context) {
 | 
					  static List<Widget> _buildMenuItem(BuildContext context) {
 | 
				
			||||||
    List<Widget> listOfFiles = [];
 | 
					    List<Widget> listOfFiles = [];
 | 
				
			||||||
    for (AttachmentResponse file in ApiService.threadAttachments) {
 | 
					    for (AttachmentResponse file in ApiService.threadAttachments) {
 | 
				
			||||||
      listOfFiles.add(
 | 
					      listOfFiles.add(ListTile(
 | 
				
			||||||
        ListTile (
 | 
					 | 
				
			||||||
          leading: Icon(Icons.file_present),
 | 
					          leading: Icon(Icons.file_present),
 | 
				
			||||||
          title: Text(file.name.toString()),
 | 
					          title: Text(file.name.toString()),
 | 
				
			||||||
          trailing: GestureDetector(
 | 
					          trailing: GestureDetector(
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue