login #1
					 4 changed files with 73 additions and 17 deletions
				
			
		| 
						 | 
					@ -13,7 +13,7 @@ class ApiService {
 | 
				
			||||||
  Future<List<GetThreadResponse>> fetchEmailsFromFolder(
 | 
					  Future<List<GetThreadResponse>> fetchEmailsFromFolder(
 | 
				
			||||||
      String folder, int pagenitaion) async {
 | 
					      String folder, int pagenitaion) async {
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
      var url = Uri.http('127.0.0.1:3001', 'sorted_threads_by_date', {
 | 
					      var url = Uri.http('0.0.0.0:3001', 'sorted_threads_by_date', {
 | 
				
			||||||
        'folder': folder,
 | 
					        'folder': folder,
 | 
				
			||||||
        'limit': '50',
 | 
					        'limit': '50',
 | 
				
			||||||
        'offset': pagenitaion.toString(),
 | 
					        'offset': pagenitaion.toString(),
 | 
				
			||||||
| 
						 | 
					@ -49,7 +49,7 @@ class ApiService {
 | 
				
			||||||
      List<GetThreadResponse> allEmails) async {
 | 
					      List<GetThreadResponse> allEmails) async {
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
      var url =
 | 
					      var url =
 | 
				
			||||||
          Uri.http('127.0.0.1:3001', 'get_thread', {'id': threadId.toString()});
 | 
					          Uri.http('0.0.0.0:3001', 'get_thread', {'id': threadId.toString()});
 | 
				
			||||||
      var response = await http.get(url);
 | 
					      var response = await http.get(url);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (response.statusCode == 200) {
 | 
					      if (response.statusCode == 200) {
 | 
				
			||||||
| 
						 | 
					@ -70,15 +70,16 @@ class ApiService {
 | 
				
			||||||
  Future<List<SerializableMessage>> sonicSearch(
 | 
					  Future<List<SerializableMessage>> sonicSearch(
 | 
				
			||||||
      String list, int limit, int offset, String query) async {
 | 
					      String list, int limit, int offset, String query) async {
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
      var url = Uri.http('127.0.0.1:3001', 'search', {
 | 
					      var url = Uri.http('0.0.0.0:3001', 'search_emails', {
 | 
				
			||||||
        'list': list,
 | 
					        'list': list,
 | 
				
			||||||
        'limit': limit.toString(),
 | 
					        'limit': limit.toString(),
 | 
				
			||||||
        'offset': offset.toString(),
 | 
					        'offset': offset.toString(),
 | 
				
			||||||
        'query': query
 | 
					        'query': query
 | 
				
			||||||
      });
 | 
					      });
 | 
				
			||||||
 | 
					      print(url);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      var response = await http.get(url);
 | 
					      var response = await http.get(url);
 | 
				
			||||||
 | 
					      print(response);
 | 
				
			||||||
      if (response.statusCode == 200) {
 | 
					      if (response.statusCode == 200) {
 | 
				
			||||||
        List<dynamic> messagesJson = json.decode(response.body);
 | 
					        List<dynamic> messagesJson = json.decode(response.body);
 | 
				
			||||||
        List<SerializableMessage> messages =
 | 
					        List<SerializableMessage> messages =
 | 
				
			||||||
| 
						 | 
					@ -86,6 +87,7 @@ class ApiService {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return messages;
 | 
					        return messages;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					      print(response.statusCode);
 | 
				
			||||||
    } catch (e) {
 | 
					    } catch (e) {
 | 
				
			||||||
      print("caught $e");
 | 
					      print("caught $e");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -99,12 +101,17 @@ class ApiService {
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
      //attaches email after email from a thread
 | 
					      //attaches email after email from a thread
 | 
				
			||||||
      for (var id in IDs) {
 | 
					      for (var id in IDs) {
 | 
				
			||||||
        var url = Uri.http('127.0.0.1:3001', 'email', {'id': id});
 | 
					        var url = Uri.http('0.0.0.0:3001', 'email', {'id': id});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        var response = await http.get(url);
 | 
					        var response = await http.get(url);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (response.statusCode == 200) {
 | 
					        if (response.statusCode == 200) {
 | 
				
			||||||
          content += response.body;
 | 
					          content += response.body;
 | 
				
			||||||
 | 
					          try {
 | 
				
			||||||
 | 
					            getAttachmentsInfo("INBOX", id);
 | 
				
			||||||
 | 
					          } catch (innerError) {
 | 
				
			||||||
 | 
					            print('_getAttachment info caught error $innerError');
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
          content += "<hr>";
 | 
					          content += "<hr>";
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
| 
						 | 
					@ -121,7 +128,7 @@ class ApiService {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Future<List<String>> fetchFolders() async {
 | 
					  Future<List<String>> fetchFolders() async {
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
      var url = Uri.http('127.0.0.1:3001', 'folders');
 | 
					      var url = Uri.http('0.0.0.0:3001', 'folders');
 | 
				
			||||||
      var response = await http.get(url);
 | 
					      var response = await http.get(url);
 | 
				
			||||||
      return List<String>.from(json.decode(response.body));
 | 
					      return List<String>.from(json.decode(response.body));
 | 
				
			||||||
    } catch (e) {
 | 
					    } catch (e) {
 | 
				
			||||||
| 
						 | 
					@ -131,7 +138,7 @@ class ApiService {
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Future<void> createFolder(String folderName) async {
 | 
					  Future<void> createFolder(String folderName) async {
 | 
				
			||||||
    var url = Uri.http('127.0.0.1:3001', 'create_folder');
 | 
					    var url = Uri.http('0.0.0.0:3001', 'create_folder');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Map<String, String> requestBody = {'name': folderName};
 | 
					    Map<String, String> requestBody = {'name': folderName};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -154,7 +161,7 @@ class ApiService {
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Future<void> deleteFolder(String folderName) async {
 | 
					  Future<void> deleteFolder(String folderName) async {
 | 
				
			||||||
    var url = Uri.http('127.0.0.1:3001', 'delete_folder');
 | 
					    var url = Uri.http('0.0.0.0:3001', 'delete_folder');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Map<String, String> requestBody = {'name': folderName};
 | 
					    Map<String, String> requestBody = {'name': folderName};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -175,6 +182,41 @@ class ApiService {
 | 
				
			||||||
      print('error making post req: $e');
 | 
					      print('error making post req: $e');
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<bool> logIn(String json) async {
 | 
				
			||||||
 | 
					    // var url = Uri.https('')
 | 
				
			||||||
 | 
					    // try{
 | 
				
			||||||
 | 
					    //   String response = await http.post(
 | 
				
			||||||
 | 
					    //     url
 | 
				
			||||||
 | 
					    //     );
 | 
				
			||||||
 | 
					    // }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return false;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<List<AttachmentInfo>> getAttachmentsInfo(
 | 
				
			||||||
 | 
					      String folder, String email_id) async {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      var url = Uri.http('0.0.0.0:3001', 'get_attachments_info',
 | 
				
			||||||
 | 
					          {'folder': folder, 'email_id': email_id});
 | 
				
			||||||
 | 
					      print(url);
 | 
				
			||||||
 | 
					      var response = await http.get(url);
 | 
				
			||||||
 | 
					      print("response $response");
 | 
				
			||||||
 | 
					      if (response.statusCode == 200) {
 | 
				
			||||||
 | 
					        var result = response.body;
 | 
				
			||||||
 | 
					        List<dynamic> attachmentList = json.decode(result);
 | 
				
			||||||
 | 
					        print("attachment list $attachmentList");
 | 
				
			||||||
 | 
					        List<AttachmentInfo> attachments =
 | 
				
			||||||
 | 
					            attachmentList.map((al) => AttachmentInfo.fromJson(al)).toList();
 | 
				
			||||||
 | 
					        print("attachments $attachments");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return attachments;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      print(e);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return [];
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class EmailView extends StatefulWidget {
 | 
					class EmailView extends StatefulWidget {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,13 +1,11 @@
 | 
				
			||||||
import 'package:crab_ui/contact.dart';
 | 
					import 'package:crab_ui/contact.dart';
 | 
				
			||||||
import 'package:flutter/material.dart';
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
import 'home_page.dart';
 | 
					import 'home_page.dart';
 | 
				
			||||||
// import 'api_service.dart';
 | 
					 | 
				
			||||||
import 'login.dart';
 | 
					import 'login.dart';
 | 
				
			||||||
import 'email.dart';
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void main() {
 | 
					void main() {
 | 
				
			||||||
  WidgetsFlutterBinding.ensureInitialized();
 | 
					  WidgetsFlutterBinding.ensureInitialized();
 | 
				
			||||||
  // debugPaintSizeEnabled = true;
 | 
					 | 
				
			||||||
  runApp(HyM());
 | 
					  runApp(HyM());
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -22,14 +20,12 @@ class HyM extends StatelessWidget {
 | 
				
			||||||
      theme: ThemeData.light(),
 | 
					      theme: ThemeData.light(),
 | 
				
			||||||
      title: 'HyM',
 | 
					      title: 'HyM',
 | 
				
			||||||
      // home: HomeScreen(),
 | 
					      // home: HomeScreen(),
 | 
				
			||||||
      // home: HomeScreen(),
 | 
					 | 
				
			||||||
      initialRoute: "/",
 | 
					      initialRoute: "/",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      routes: {
 | 
					      routes: {
 | 
				
			||||||
        "/": (context) => SplashScreen(),
 | 
					        "/": (context) => SplashScreen(),
 | 
				
			||||||
        "/login": (context) => const LoginPage(),
 | 
					        "/login": (context) => const LoginPage(),
 | 
				
			||||||
        "/home": (context) => HomeScreen(),
 | 
					        "/home": (context) => HomeScreen(),
 | 
				
			||||||
        // "/email": (context) => EmailPage(),
 | 
					 | 
				
			||||||
        "/contacts": (context) => ContactsPage(),
 | 
					        "/contacts": (context) => ContactsPage(),
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -51,6 +51,7 @@ class MailAddress {
 | 
				
			||||||
    return '${name} <${address}>';
 | 
					    return '${name} <${address}>';
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// //old data structure
 | 
					// //old data structure
 | 
				
			||||||
class SerializableMessage {
 | 
					class SerializableMessage {
 | 
				
			||||||
  final String name;
 | 
					  final String name;
 | 
				
			||||||
| 
						 | 
					@ -101,3 +102,19 @@ class SerializableMessage {
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class AttachmentInfo {
 | 
				
			||||||
 | 
					  final String name;
 | 
				
			||||||
 | 
					  final int size;
 | 
				
			||||||
 | 
					  final String path;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  AttachmentInfo({required this.name, required this.size, required this.path});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  factory AttachmentInfo.fromJson(Map<String, dynamic> json) {
 | 
				
			||||||
 | 
					    return AttachmentInfo(
 | 
				
			||||||
 | 
					      name: json['name'],
 | 
				
			||||||
 | 
					      size: json['size'],
 | 
				
			||||||
 | 
					      path: json['path'],
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -17,6 +17,7 @@ dependencies:
 | 
				
			||||||
  shared_preferences: ^2.0.6
 | 
					  shared_preferences: ^2.0.6
 | 
				
			||||||
  encrypt: ^5.0.0
 | 
					  encrypt: ^5.0.0
 | 
				
			||||||
  pointycastle: ^3.4.0
 | 
					  pointycastle: ^3.4.0
 | 
				
			||||||
 | 
					  mime: ^1.0.3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  english_words: ^4.0.0
 | 
					  english_words: ^4.0.0
 | 
				
			||||||
  provider: ^6.0.0
 | 
					  provider: ^6.0.0
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue