get the email view when on search
This commit is contained in:
parent
61c91b633b
commit
1db462ec8e
@ -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…
Reference in New Issue
Block a user