finished api calls for moving an email, cleaned, and made clearer logs for errors in api calls

This commit is contained in:
Juan Marulanda De Los Rios 2025-05-08 16:00:46 -04:00
parent 2677625b54
commit 9297468f6f

View File

@ -18,9 +18,11 @@ import 'dart:js' as js;
class ApiService { class ApiService {
static String ip = ""; static String ip = "";
static String port = ""; static String port = "";
static List<AttachmentResponse> threadAttachments = []; static List<AttachmentResponse> threadAttachments =
[]; //holds attachments of the thread
static String currFolder = ""; static String currFolder = "";
static List<String> currThread = []; static List<String> currThread = []; //holds the email ids of the thread
static String currThreadID = ""; //picked an email it prints the threadID
Future<List<GetThreadResponse>> fetchEmailsFromFolder( Future<List<GetThreadResponse>> fetchEmailsFromFolder(
String folder, int pagenitaion) async { String folder, int pagenitaion) async {
@ -31,7 +33,6 @@ class ApiService {
'offset': pagenitaion.toString(), 'offset': pagenitaion.toString(),
}); });
var response = await http.get(url); var response = await http.get(url);
// print(response);
List<GetThreadResponse> allEmails = []; List<GetThreadResponse> allEmails = [];
if (response.statusCode == 200) { if (response.statusCode == 200) {
@ -143,13 +144,52 @@ class ApiService {
return content; return content;
} }
Future<bool> moveEmail(String fromFolder, String uID, String toFolder) async { Future<List<SerializableMessage>> threadsInSerializable(
String thread_id) async {
// grab all of the emails in thread anyways, for the future it'll come in handy
var url = Uri.http('$ip:$port', 'get_thread_messages', {'id': thread_id});
try {
var response = await http.get(url);
if (response.statusCode == 200) {
List json = jsonDecode(response.body);
List<SerializableMessage> serializableMessages = [];
for (var mail in json) {
serializableMessages.add(SerializableMessage.fromJson(mail));
}
return serializableMessages;
} else {
print(
"failed get request with status code ${response.statusCode}, and body ${response.body}");
}
} catch (e) {
print("caught in threadInSerializable method error: $e");
}
return [];
}
Future<bool> moveEmail(
//only moves the first email of the thread //or perhaps should do the last
String fromFolder,
String thread_id,
String toFolder) async {
var url = Uri.http('$ip:$port', 'move_email'); var url = Uri.http('$ip:$port', 'move_email');
List<SerializableMessage> mailsInSerializable =
await this.threadsInSerializable(thread_id);
if (mailsInSerializable.isEmpty) {
return false;
}
SerializableMessage firstMail = mailsInSerializable[0];
Map<String, String> requestBody = { Map<String, String> requestBody = {
'from': fromFolder, 'from': fromFolder,
'uid': uID, 'uid': firstMail.uid.toString(),
'to': toFolder, 'to': toFolder,
}; };
try { try {
var response = await http.post( var response = await http.post(
url, url,
@ -162,10 +202,10 @@ class ApiService {
print('response body ${response.body}'); print('response body ${response.body}');
return true; return true;
} else { } else {
print('error '); print('error ${response.statusCode} ${response.body}');
} }
} catch (e) { } catch (e) {
print(e); print("failed trying to post move_email, with error: $e");
} }
return false; return false;
} }
@ -253,13 +293,6 @@ class ApiService {
} }
Future<bool> logIn(String json) async { Future<bool> logIn(String json) async {
// var url = Uri.https('')
// try{
// String response = await http.post(
// url
// );
// }
return false; return false;
} }
@ -298,7 +331,6 @@ class ApiService {
var response = await http.get(url); var response = await http.get(url);
if (response.statusCode == 200) { if (response.statusCode == 200) {
var result = response.body; var result = response.body;
// print(result);
Map<String, dynamic> attachmentData = json.decode(result); Map<String, dynamic> attachmentData = json.decode(result);
AttachmentResponse data = AttachmentResponse.fromJson(attachmentData); AttachmentResponse data = AttachmentResponse.fromJson(attachmentData);
print("data $data"); print("data $data");
@ -449,7 +481,8 @@ class _EmailViewState extends State<EmailView> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
// print(currentContent); // print("thread id ${widget.id}");
ApiService.currThreadID = widget.id;
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
title: Text(widget.name), title: Text(widget.name),