cleaned, and new endpoint
This commit is contained in:
		
							parent
							
								
									f867312af3
								
							
						
					
					
						commit
						aaaacade4d
					
				
					 4 changed files with 24 additions and 40 deletions
				
			
		| 
						 | 
					@ -1,12 +1,10 @@
 | 
				
			||||||
import 'package:crab_ui/structs.dart';
 | 
					import 'package:crab_ui/structs.dart';
 | 
				
			||||||
import 'package:english_words/english_words.dart';
 | 
					 | 
				
			||||||
import 'package:flutter/material.dart';
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
import 'package:http/http.dart' as http;
 | 
					import 'package:http/http.dart' as http;
 | 
				
			||||||
import 'dart:convert';
 | 
					import 'dart:convert';
 | 
				
			||||||
import 'dart:ui_web' as ui;
 | 
					import 'dart:ui_web' as ui;
 | 
				
			||||||
import 'dart:html' as html;
 | 
					 | 
				
			||||||
import 'augment.dart';
 | 
					import 'augment.dart';
 | 
				
			||||||
import 'dart:js' as js;
 | 
					import 'dart:html' as html;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//data structure
 | 
					//data structure
 | 
				
			||||||
class MailAddress {
 | 
					class MailAddress {
 | 
				
			||||||
| 
						 | 
					@ -28,17 +26,15 @@ class MailAddress {
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class EmailPage extends StatefulWidget {
 | 
					class EmailPage extends StatefulWidget {
 | 
				
			||||||
  const EmailPage({super.key});
 | 
					  const EmailPage({super.key});
 | 
				
			||||||
  final String title = 'Emails';
 | 
					  final String title = 'Emails';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  @override
 | 
					  @override
 | 
				
			||||||
  State<EmailPage> createState() => _EmailPageState();
 | 
					  State<EmailPage> createState() => EmailPageState();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class _EmailPageState extends State<EmailPage> {
 | 
					class EmailPageState extends State<EmailPage> {
 | 
				
			||||||
  List emails = [];
 | 
					  List emails = [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  void _displayEmailsFromFolder(String folder) async {
 | 
					  void _displayEmailsFromFolder(String folder) async {
 | 
				
			||||||
| 
						 | 
					@ -46,9 +42,12 @@ class _EmailPageState extends State<EmailPage> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
      var url = Uri.http(
 | 
					      var url = Uri.http(
 | 
				
			||||||
          '127.0.0.1:3001', 'sorted_threads_by_date', {'folder': folder});
 | 
					          '127.0.0.1:3001', 'sorted_threads_by_date', 
 | 
				
			||||||
 | 
					          {'folder': folder,
 | 
				
			||||||
 | 
					           'limit': '10',
 | 
				
			||||||
 | 
					           'offset': '0'});
 | 
				
			||||||
      var response = await http.get(url);
 | 
					      var response = await http.get(url);
 | 
				
			||||||
 | 
					      print(response);
 | 
				
			||||||
      if (response.statusCode == 200) {
 | 
					      if (response.statusCode == 200) {
 | 
				
			||||||
        List json = jsonDecode(response.body);
 | 
					        List json = jsonDecode(response.body);
 | 
				
			||||||
        for (var item in json.take(1)) {
 | 
					        for (var item in json.take(1)) {
 | 
				
			||||||
| 
						 | 
					@ -74,8 +73,7 @@ class _EmailPageState extends State<EmailPage> {
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Future<void> fetchThreads(
 | 
					  Future<void> fetchThreads(
 | 
				
			||||||
      int threadId,
 | 
					      int threadId, 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('127.0.0.1:3001', 'get_thread', {'id': threadId.toString()});
 | 
				
			||||||
| 
						 | 
					@ -101,6 +99,7 @@ class _EmailPageState extends State<EmailPage> {
 | 
				
			||||||
    """;
 | 
					    """;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
 | 
					      //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('127.0.0.1:3001', 'email', {'id': id});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -108,6 +107,7 @@ class _EmailPageState extends State<EmailPage> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (response.statusCode == 200) {
 | 
					        if (response.statusCode == 200) {
 | 
				
			||||||
          content += response.body;
 | 
					          content += response.body;
 | 
				
			||||||
 | 
					          content += "<p>new shit</p><br><br><br>";
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    } catch (e) {
 | 
					    } catch (e) {
 | 
				
			||||||
| 
						 | 
					@ -116,7 +116,7 @@ class _EmailPageState extends State<EmailPage> {
 | 
				
			||||||
    return content;
 | 
					    return content;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Future<List<Widget>> _getDrawerItems() async {
 | 
					  Future<List<Widget>> getDrawerItems(BuildContext context) async {
 | 
				
			||||||
    List<String> drawerItems = [];
 | 
					    List<String> drawerItems = [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
| 
						 | 
					@ -124,7 +124,7 @@ class _EmailPageState extends State<EmailPage> {
 | 
				
			||||||
      var response = await http.get(url);
 | 
					      var response = await http.get(url);
 | 
				
			||||||
      drawerItems = List<String>.from(json.decode(response.body));
 | 
					      drawerItems = List<String>.from(json.decode(response.body));
 | 
				
			||||||
    } catch (e) {
 | 
					    } catch (e) {
 | 
				
			||||||
      print('_getDrawerItems caught error: $e');
 | 
					      print('getDrawerItems caught error: $e');
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    List<Widget> drawerWidgets = [];
 | 
					    List<Widget> drawerWidgets = [];
 | 
				
			||||||
| 
						 | 
					@ -155,7 +155,7 @@ class _EmailPageState extends State<EmailPage> {
 | 
				
			||||||
      drawer: Drawer(
 | 
					      drawer: Drawer(
 | 
				
			||||||
        child: FutureBuilder<List<Widget>>(
 | 
					        child: FutureBuilder<List<Widget>>(
 | 
				
			||||||
          future:
 | 
					          future:
 | 
				
			||||||
              _getDrawerItems(), // call the async function to get the future
 | 
					              getDrawerItems(context), // call the async function to get the future
 | 
				
			||||||
          builder:
 | 
					          builder:
 | 
				
			||||||
              (BuildContext context, AsyncSnapshot<List<Widget>> snapshot) {
 | 
					              (BuildContext context, AsyncSnapshot<List<Widget>> snapshot) {
 | 
				
			||||||
            if (snapshot.connectionState == ConnectionState.waiting) {
 | 
					            if (snapshot.connectionState == ConnectionState.waiting) {
 | 
				
			||||||
| 
						 | 
					@ -237,8 +237,7 @@ class EmailListScreen extends StatelessWidget {
 | 
				
			||||||
                            subject: subject,
 | 
					                            subject: subject,
 | 
				
			||||||
                            date: date,
 | 
					                            date: date,
 | 
				
			||||||
                            id: id,
 | 
					                            id: id,
 | 
				
			||||||
                          )
 | 
					                          )),
 | 
				
			||||||
                      ),
 | 
					 | 
				
			||||||
                );
 | 
					                );
 | 
				
			||||||
              });
 | 
					              });
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,12 +1,6 @@
 | 
				
			||||||
import 'package:flutter/cupertino.dart';
 | 
					 | 
				
			||||||
import 'package:flutter/material.dart';
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
import 'package:flutter/widgets.dart';
 | 
					 | 
				
			||||||
import 'package:http/http.dart' as http;
 | 
					 | 
				
			||||||
import 'dart:convert';
 | 
					 | 
				
			||||||
import 'dart:ui_web' as ui;
 | 
					 | 
				
			||||||
import 'dart:html' as html;
 | 
					import 'dart:html' as html;
 | 
				
			||||||
import 'dart:js' as js;
 | 
					import 'dart:js' as js;
 | 
				
			||||||
import 'api_service.dart';
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
class EmailToolbar extends StatefulWidget {
 | 
					class EmailToolbar extends StatefulWidget {
 | 
				
			||||||
  final Function(String) onJumpToSpan;
 | 
					  final Function(String) onJumpToSpan;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,18 +1,18 @@
 | 
				
			||||||
import 'package:crab_ui/contact.dart';
 | 
					import 'package:crab_ui/contact.dart';
 | 
				
			||||||
import 'package:flutter/material.dart';
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
import 'package:flutter/rendering.dart';
 | 
					 | 
				
			||||||
import 'home_page.dart';
 | 
					import 'home_page.dart';
 | 
				
			||||||
import 'api_service.dart';
 | 
					import 'api_service.dart';
 | 
				
			||||||
import 'dart:html' as html;
 | 
					import 'login.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void main() {
 | 
					void main() {
 | 
				
			||||||
  WidgetsFlutterBinding.ensureInitialized();
 | 
					  WidgetsFlutterBinding.ensureInitialized();
 | 
				
			||||||
  // debugPaintSizeEnabled = true;
 | 
					  // debugPaintSizeEnabled = true;
 | 
				
			||||||
  runApp(const HyM());
 | 
					  runApp( HyM());
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class HyM extends StatelessWidget {
 | 
					class HyM extends StatelessWidget {
 | 
				
			||||||
  const HyM({super.key});
 | 
					  final AuthService _authService = AuthService();
 | 
				
			||||||
 | 
					  HyM({super.key});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  @override
 | 
					  @override
 | 
				
			||||||
  Widget build(BuildContext context) {
 | 
					  Widget build(BuildContext context) {
 | 
				
			||||||
| 
						 | 
					@ -20,8 +20,11 @@ class HyM extends StatelessWidget {
 | 
				
			||||||
      debugShowCheckedModeBanner: false,
 | 
					      debugShowCheckedModeBanner: false,
 | 
				
			||||||
      theme: ThemeData.light(),
 | 
					      theme: ThemeData.light(),
 | 
				
			||||||
      title: 'HyM',
 | 
					      title: 'HyM',
 | 
				
			||||||
 | 
					      // home: HomeScreen(),
 | 
				
			||||||
      home: HomeScreen(),
 | 
					      home: HomeScreen(),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      routes: {
 | 
					      routes: {
 | 
				
			||||||
 | 
					        "/login": (context) => const LoginPage(),
 | 
				
			||||||
        "/email": (context) => EmailPage(),
 | 
					        "/email": (context) => EmailPage(),
 | 
				
			||||||
        "/contacts": (context) => ContactsPage(),
 | 
					        "/contacts": (context) => ContactsPage(),
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,13 +1,4 @@
 | 
				
			||||||
import 'package:flutter/material.dart';
 | 
					 | 
				
			||||||
import 'package:http/http.dart' as http;
 | 
					 | 
				
			||||||
import 'dart:convert';
 | 
					 | 
				
			||||||
import 'dart:ui_web' as ui;
 | 
					 | 
				
			||||||
import 'dart:html' as html;
 | 
					 | 
				
			||||||
import 'augment.dart';
 | 
					 | 
				
			||||||
import 'dart:js' as js;
 | 
					 | 
				
			||||||
import 'api_service.dart';
 | 
					import 'api_service.dart';
 | 
				
			||||||
import 'dart:convert';  // For JSON decoding
 | 
					 | 
				
			||||||
import 'package:intl/intl.dart'; 
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class GetThreadResponse {
 | 
					class GetThreadResponse {
 | 
				
			||||||
| 
						 | 
					@ -29,13 +20,10 @@ class GetThreadResponse {
 | 
				
			||||||
    required this.to,
 | 
					    required this.to,
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
  factory GetThreadResponse.fromJson(Map<String, dynamic> json) {
 | 
					  factory GetThreadResponse.fromJson(Map<String, dynamic> json) {
 | 
				
			||||||
    var messagesList = json['messages'] as List<dynamic>;
 | 
					 | 
				
			||||||
    var toList = json['to'] as List<dynamic>;
 | 
					    var toList = json['to'] as List<dynamic>;
 | 
				
			||||||
    // var ccList = json['cc'] as List;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return GetThreadResponse (
 | 
					    return GetThreadResponse (
 | 
				
			||||||
      id: json['id'],
 | 
					      id: json['id'],
 | 
				
			||||||
      // messages: messagesList.map((message) => message.toString()).toList(),
 | 
					 | 
				
			||||||
      messages: List<String>.from(json['messages']),
 | 
					      messages: List<String>.from(json['messages']),
 | 
				
			||||||
      subject: json['subject'],
 | 
					      subject: json['subject'],
 | 
				
			||||||
      date: DateTime.parse(json['date']),
 | 
					      date: DateTime.parse(json['date']),
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue