get the email view when on search
This commit is contained in:
		
							parent
							
								
									61c91b633b
								
							
						
					
					
						commit
						1db462ec8e
					
				
					 3 changed files with 75 additions and 69 deletions
				
			
		| 
						 | 
					@ -15,7 +15,7 @@ class ApiService {
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
      var url = Uri.http('127.0.0.1:3001', 'sorted_threads_by_date', {
 | 
					      var url = Uri.http('127.0.0.1:3001', 'sorted_threads_by_date', {
 | 
				
			||||||
        'folder': folder,
 | 
					        'folder': folder,
 | 
				
			||||||
        'limit': '20',
 | 
					        'limit': '50',
 | 
				
			||||||
        'offset': pagenitaion.toString(),
 | 
					        'offset': pagenitaion.toString(),
 | 
				
			||||||
      });
 | 
					      });
 | 
				
			||||||
      var response = await http.get(url);
 | 
					      var response = await http.get(url);
 | 
				
			||||||
| 
						 | 
					@ -90,7 +90,7 @@ class ApiService {
 | 
				
			||||||
        // -            messagesJson.map((mj) => SerializableMessage.fromJson(mj)).toList();
 | 
					        // -            messagesJson.map((mj) => SerializableMessage.fromJson(mj)).toList();
 | 
				
			||||||
        // print("above mess");
 | 
					        // print("above mess");
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        print(messages[0].uid);
 | 
					        // print(messages[0].uid);
 | 
				
			||||||
        return messages;
 | 
					        return messages;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    } catch (e) {
 | 
					    } catch (e) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -84,12 +84,12 @@ class EmailPageState extends State<EmailPage> {
 | 
				
			||||||
  void updatePagenation(String option) {
 | 
					  void updatePagenation(String option) {
 | 
				
			||||||
    if (option == "next") {
 | 
					    if (option == "next") {
 | 
				
			||||||
      setState(() {
 | 
					      setState(() {
 | 
				
			||||||
        widget.offset += 20;
 | 
					        widget.offset += 50;
 | 
				
			||||||
        widget.page += 1;
 | 
					        widget.page += 1;
 | 
				
			||||||
      });
 | 
					      });
 | 
				
			||||||
    } else if (option == "back") {
 | 
					    } else if (option == "back") {
 | 
				
			||||||
      setState(() {
 | 
					      setState(() {
 | 
				
			||||||
        widget.offset -= 20;
 | 
					        widget.offset -= 50;
 | 
				
			||||||
        widget.page -= 1;
 | 
					        widget.page -= 1;
 | 
				
			||||||
      });
 | 
					      });
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -102,6 +102,8 @@ class EmailPageState extends State<EmailPage> {
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
      List<GetThreadResponse> fetchedEmails = await apiService
 | 
					      List<GetThreadResponse> fetchedEmails = await apiService
 | 
				
			||||||
          .fetchEmailsFromFolder(widget.selectedFolder, widget.offset);
 | 
					          .fetchEmailsFromFolder(widget.selectedFolder, widget.offset);
 | 
				
			||||||
 | 
					      if (!mounted) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      setState(() {
 | 
					      setState(() {
 | 
				
			||||||
        emails = fetchedEmails; // Update the list of emails
 | 
					        emails = fetchedEmails; // Update the list of emails
 | 
				
			||||||
      });
 | 
					      });
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -36,7 +36,8 @@ class _HomeScreenState extends State<HomeScreen> with TickerProviderStateMixin {
 | 
				
			||||||
    setState(() {
 | 
					    setState(() {
 | 
				
			||||||
      if (!_tabs.contains(query)) {
 | 
					      if (!_tabs.contains(query)) {
 | 
				
			||||||
        _tabs.add(query);
 | 
					        _tabs.add(query);
 | 
				
			||||||
        _tabWidgets[query] = _buildSearchResultsWidget(query); // Store a different widget for this tab
 | 
					        _tabWidgets[query] = _buildSearchResultsWidget(
 | 
				
			||||||
 | 
					            query); // Store a different widget for this tab
 | 
				
			||||||
        _tabController = TabController(length: _tabs.length, vsync: this);
 | 
					        _tabController = TabController(length: _tabs.length, vsync: this);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
| 
						 | 
					@ -72,76 +73,80 @@ class _HomeScreenState extends State<HomeScreen> with TickerProviderStateMixin {
 | 
				
			||||||
    //   ),
 | 
					    //   ),
 | 
				
			||||||
    // );
 | 
					    // );
 | 
				
			||||||
    return FutureBuilder<List<SerializableMessage>>(
 | 
					    return FutureBuilder<List<SerializableMessage>>(
 | 
				
			||||||
    future: apiService.sonicSearch("INBOX", 10, 0, query),
 | 
					      future: apiService.sonicSearch("INBOX", 10, 0, query),
 | 
				
			||||||
    builder: (BuildContext context, AsyncSnapshot<List<SerializableMessage>> snapshot) {
 | 
					      builder: (BuildContext context,
 | 
				
			||||||
      if (snapshot.connectionState == ConnectionState.waiting) {
 | 
					          AsyncSnapshot<List<SerializableMessage>> snapshot) {
 | 
				
			||||||
        return Center(child: CircularProgressIndicator());
 | 
					        if (snapshot.connectionState == ConnectionState.waiting) {
 | 
				
			||||||
      } else if (snapshot.hasError) {
 | 
					          return Center(child: CircularProgressIndicator());
 | 
				
			||||||
        return Center(child: Text('Error: ${snapshot.error}'));
 | 
					        } else if (snapshot.hasError) {
 | 
				
			||||||
      } else if (!snapshot.hasData || snapshot.data!.isEmpty) {
 | 
					          return Center(child: Text('Error: ${snapshot.error}'));
 | 
				
			||||||
        return Center(child: Text('No results found for: $query'));
 | 
					        } else if (!snapshot.hasData || snapshot.data!.isEmpty) {
 | 
				
			||||||
      } else {
 | 
					          return Center(child: Text('No results found for: $query'));
 | 
				
			||||||
        List<SerializableMessage> result = snapshot.data!;
 | 
					        } else {
 | 
				
			||||||
        return Scaffold(
 | 
					          List<SerializableMessage> result = snapshot.data!;
 | 
				
			||||||
          body: ListView.separated(
 | 
					          return Scaffold(
 | 
				
			||||||
            itemCount: result.length,
 | 
					            body: ListView.separated(
 | 
				
			||||||
            itemBuilder: (context, index){
 | 
					              itemCount: result.length,
 | 
				
			||||||
              final email = result[index];
 | 
					              itemBuilder: (context, index) {
 | 
				
			||||||
              return ListTile(
 | 
					                final email = result[index];
 | 
				
			||||||
              title: Text(email.from,
 | 
					                return ListTile(
 | 
				
			||||||
                  style: TextStyle(fontWeight: FontWeight.bold)),
 | 
					                  title: Text(email.from,
 | 
				
			||||||
              subtitle: Column(
 | 
					                      style: TextStyle(fontWeight: FontWeight.bold)),
 | 
				
			||||||
                crossAxisAlignment: CrossAxisAlignment.start,
 | 
					                  subtitle: Column(
 | 
				
			||||||
                children: [Text(email.subject)],
 | 
					                    crossAxisAlignment: CrossAxisAlignment.start,
 | 
				
			||||||
              ),
 | 
					                    children: [Text(email.subject)],
 | 
				
			||||||
              trailing: Text(email.date.toString()),
 | 
					 | 
				
			||||||
              onTap: () async {
 | 
					 | 
				
			||||||
                String emailContent = await apiService.fetchEmailContent(email.id as List<String>);
 | 
					 | 
				
			||||||
                Navigator.push(
 | 
					 | 
				
			||||||
                  context,
 | 
					 | 
				
			||||||
                  MaterialPageRoute(
 | 
					 | 
				
			||||||
                    builder: (context) => EmailView(
 | 
					 | 
				
			||||||
                      emailContent: emailContent,
 | 
					 | 
				
			||||||
                      from: email.from,
 | 
					 | 
				
			||||||
                      name: email.name,
 | 
					 | 
				
			||||||
                      to: email.to.toString(),
 | 
					 | 
				
			||||||
                      subject: email.subject,
 | 
					 | 
				
			||||||
                      date: email.date.toString(),
 | 
					 | 
				
			||||||
                      id: email.id.toString(),
 | 
					 | 
				
			||||||
                    ),
 | 
					 | 
				
			||||||
                  ),
 | 
					                  ),
 | 
				
			||||||
 | 
					                  trailing: Text(email.date.toString()),
 | 
				
			||||||
 | 
					                  onTap: () async {
 | 
				
			||||||
 | 
					                    print('tapped');
 | 
				
			||||||
 | 
					                    String emailContent = await apiService
 | 
				
			||||||
 | 
					                        .fetchEmailContent([email.id]);
 | 
				
			||||||
 | 
					                    print('content below');
 | 
				
			||||||
 | 
					                    print(emailContent);
 | 
				
			||||||
 | 
					                    Navigator.push(
 | 
				
			||||||
 | 
					                      context,
 | 
				
			||||||
 | 
					                      MaterialPageRoute(
 | 
				
			||||||
 | 
					                        builder: (context) => EmailView(
 | 
				
			||||||
 | 
					                          emailContent: emailContent,
 | 
				
			||||||
 | 
					                          from: email.from,
 | 
				
			||||||
 | 
					                          name: email.name,
 | 
				
			||||||
 | 
					                          to: email.to.toString(),
 | 
				
			||||||
 | 
					                          subject: email.subject,
 | 
				
			||||||
 | 
					                          date: email.date.toString(),
 | 
				
			||||||
 | 
					                          id: email.id.toString(),
 | 
				
			||||||
 | 
					                        ),
 | 
				
			||||||
 | 
					                      ),
 | 
				
			||||||
 | 
					                    );
 | 
				
			||||||
 | 
					                  },
 | 
				
			||||||
                );
 | 
					                );
 | 
				
			||||||
              },
 | 
					              },
 | 
				
			||||||
              );
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
              separatorBuilder: (context, index) => Divider(),
 | 
					              separatorBuilder: (context, index) => Divider(),
 | 
				
			||||||
            ),
 | 
					            ),
 | 
				
			||||||
          // child: Column(
 | 
					            // child: Column(
 | 
				
			||||||
          //   mainAxisAlignment: MainAxisAlignment.center,
 | 
					            //   mainAxisAlignment: MainAxisAlignment.center,
 | 
				
			||||||
          //   children: [
 | 
					            //   children: [
 | 
				
			||||||
          //     Text("Results for: $query", style: TextStyle(fontSize: 24)),
 | 
					            //     Text("Results for: $query", style: TextStyle(fontSize: 24)),
 | 
				
			||||||
          //     // Display the actual data
 | 
					            //     // Display the actual data
 | 
				
			||||||
          //     Text(result[0].name), // Accessing the first result safely
 | 
					            //     Text(result[0].name), // Accessing the first result safely
 | 
				
			||||||
          //     Text(result[0].from), // Displaying the 'from' field as an example
 | 
					            //     Text(result[0].from), // Displaying the 'from' field as an example
 | 
				
			||||||
          //     Text(result[0].hash),
 | 
					            //     Text(result[0].hash),
 | 
				
			||||||
          //     Text(result[0].subject),
 | 
					            //     Text(result[0].subject),
 | 
				
			||||||
          //     Text(result[0].uid.toString()),
 | 
					            //     Text(result[0].uid.toString()),
 | 
				
			||||||
          //     Text(result[0].list),
 | 
					            //     Text(result[0].list),
 | 
				
			||||||
          //     Text(result[0].id),
 | 
					            //     Text(result[0].id),
 | 
				
			||||||
              
 | 
					 | 
				
			||||||
              
 | 
					 | 
				
			||||||
          //     // Add more fields or customize the display
 | 
					 | 
				
			||||||
          //     // SerializableEmailListScreen(emails: result, getEmailContent: getEmailContent)
 | 
					 | 
				
			||||||
          //     // Expanded(
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
          //     //   child: 
 | 
					            //     // Add more fields or customize the display
 | 
				
			||||||
          //     // ),
 | 
					            //     // SerializableEmailListScreen(emails: result, getEmailContent: getEmailContent)
 | 
				
			||||||
 | 
					            //     // Expanded(
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            //     //   child:
 | 
				
			||||||
 | 
					            //     // ),
 | 
				
			||||||
            // ],
 | 
					            // ],
 | 
				
			||||||
          );
 | 
					          );
 | 
				
			||||||
        // );
 | 
					          // );
 | 
				
			||||||
      }
 | 
					        }
 | 
				
			||||||
    },
 | 
					      },
 | 
				
			||||||
  );
 | 
					    );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  @override
 | 
					  @override
 | 
				
			||||||
| 
						 | 
					@ -160,7 +165,6 @@ class _HomeScreenState extends State<HomeScreen> with TickerProviderStateMixin {
 | 
				
			||||||
          _emailPageKey.currentState?.updateSelectedFolder(folder);
 | 
					          _emailPageKey.currentState?.updateSelectedFolder(folder);
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
      ),
 | 
					      ),
 | 
				
			||||||
 | 
					 | 
				
			||||||
      body: Stack(
 | 
					      body: Stack(
 | 
				
			||||||
        children: [
 | 
					        children: [
 | 
				
			||||||
          Row(
 | 
					          Row(
 | 
				
			||||||
| 
						 | 
					@ -316,7 +320,7 @@ class _HomeScreenState extends State<HomeScreen> with TickerProviderStateMixin {
 | 
				
			||||||
                        controller: _tabController,
 | 
					                        controller: _tabController,
 | 
				
			||||||
                        children: _tabs.map((tab) {
 | 
					                        children: _tabs.map((tab) {
 | 
				
			||||||
                          return _tabWidgets[tab] ??
 | 
					                          return _tabWidgets[tab] ??
 | 
				
			||||||
                            Center(child: Text("No content found"));
 | 
					                              Center(child: Text("No content found"));
 | 
				
			||||||
                          // return Center(
 | 
					                          // return Center(
 | 
				
			||||||
                          //     child: EmailPage(
 | 
					                          //     child: EmailPage(
 | 
				
			||||||
                          //   key: _emailPageKey,
 | 
					                          //   key: _emailPageKey,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue