fixed issues regarding <script> tags being repeated
This commit is contained in:
parent
79c19abbc9
commit
8baf399608
@ -3,6 +3,8 @@ 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;
|
||||
|
||||
class MailAddress {
|
||||
final String? name;
|
||||
@ -108,7 +110,6 @@ class _EmailPageState extends State<EmailPage> {
|
||||
List<dynamic> json = jsonDecode(response.body);
|
||||
for (var item in json) {
|
||||
if (item.length > 1 && item[0] is String && item[1] is List) {
|
||||
// print('Date: ${item[0]}, Threads: ${item[1]}');
|
||||
List<int> threadIDs = List<int>.from(item[1]);
|
||||
for (var threadId in threadIDs) {
|
||||
await fetchThreadMessages(threadId, allEmails);
|
||||
@ -125,7 +126,6 @@ class _EmailPageState extends State<EmailPage> {
|
||||
emails.clear();
|
||||
// emails = messagesMap.values.toList().expand((list) => list).toList();
|
||||
emails.addAll(allEmails);
|
||||
// print(emails);
|
||||
;
|
||||
});
|
||||
}
|
||||
@ -135,9 +135,9 @@ class _EmailPageState extends State<EmailPage> {
|
||||
try {
|
||||
var url = Uri.http(
|
||||
'127.0.0.1:3001', 'get_thread_messages', {'id': threadId.toString()});
|
||||
// print(url);
|
||||
|
||||
var response = await http.get(url);
|
||||
// print(response.body);
|
||||
|
||||
if (response.statusCode == 200) {
|
||||
List<dynamic> messagesJson = jsonDecode(response.body);
|
||||
List<SerializableMessage> messages =
|
||||
@ -156,59 +156,22 @@ class _EmailPageState extends State<EmailPage> {
|
||||
String content = r"""
|
||||
|
||||
""";
|
||||
// String restcontent = "";
|
||||
|
||||
try {
|
||||
var url = Uri.http('127.0.0.1:3001', 'email', {'id': id});
|
||||
// print(url);
|
||||
|
||||
var response = await http.get(url);
|
||||
// print(response.body);
|
||||
|
||||
if (response.statusCode == 200) {
|
||||
print('ok');
|
||||
content = response.body;
|
||||
// try {
|
||||
// var restUrl =
|
||||
// Uri.http('127.0.0.1:3001', 'get_thread_messages', {'id': id});
|
||||
// // print(restUrl);
|
||||
// var restresponse = await http.get(restUrl);
|
||||
// // print(restresponse.statusCode);
|
||||
// if (restresponse.statusCode == 200) {
|
||||
// print("ok squared");
|
||||
// // restcontent = restresponse.body;
|
||||
// }
|
||||
// } catch (i) {
|
||||
// print('jsoncontent caught error: $i');
|
||||
// }
|
||||
}
|
||||
} catch (e) {
|
||||
print('_getEmailContent caught error: $e');
|
||||
}
|
||||
// print(content);
|
||||
// print(restcontent);
|
||||
|
||||
return content;
|
||||
}
|
||||
|
||||
// Future<String> _getThreadMessagesJson(String threadId) async {
|
||||
// String jsonResponse = "";
|
||||
|
||||
// try {
|
||||
// var url =
|
||||
// Uri.http('127.0.0.1:3001', 'get_thread_messages', {'id': threadId});
|
||||
// // print(url);
|
||||
// var response = await http.get(url);
|
||||
// // print(response.statusCode);
|
||||
// // print(response.body);
|
||||
// if (response.statusCode == 200) {
|
||||
// jsonResponse = response.body; // Here you get the JSON response
|
||||
// } else {
|
||||
// throw Exception('Failed to load thread messages');
|
||||
// }
|
||||
// } catch (e) {
|
||||
// print('_getThreadMessagesJson caught error: $e');
|
||||
// }
|
||||
|
||||
// return jsonResponse; // Returns the JSON string
|
||||
// }
|
||||
|
||||
Future<List<Widget>> _getDrawerItems() async {
|
||||
List<String> drawerItems = [];
|
||||
|
||||
@ -280,17 +243,14 @@ class _EmailPageState extends State<EmailPage> {
|
||||
class EmailListScreen extends StatelessWidget {
|
||||
final List emails;
|
||||
final Future<String> Function(String) getEmailContent;
|
||||
// final Future<String> Function(String) getJsonEmail;
|
||||
|
||||
EmailListScreen({
|
||||
required this.emails,
|
||||
required this.getEmailContent,
|
||||
// required this.getJsonEmail
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
// print(emails);
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text('Emails'),
|
||||
@ -310,9 +270,6 @@ class EmailListScreen extends StatelessWidget {
|
||||
trailing: Text(emails[index].date.toString()),
|
||||
onTap: () async {
|
||||
String emailContent = await getEmailContent(emails[index].id);
|
||||
// String jsonContent =
|
||||
// await getJsonEmail(emails[index].uid.toString());
|
||||
// print(emails[index]);
|
||||
String from = emails[index].from.toString();
|
||||
String name = emails[index].name.toString();
|
||||
String to = emails[index].to.toString();
|
||||
@ -388,6 +345,7 @@ class _EmailViewState extends State<EmailView> {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
print(widget.id);
|
||||
iframeKey = Key("iframe-${widget.id}");
|
||||
ui.platformViewRegistry.registerViewFactory(
|
||||
// 'html-view33'
|
||||
@ -397,67 +355,77 @@ class _EmailViewState extends State<EmailView> {
|
||||
..height = '100%'
|
||||
..srcdoc = widget.emailContent
|
||||
..style.border = 'none',
|
||||
// ..style.width = '100%',
|
||||
// ..style.height = '100%'
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text(widget.name),
|
||||
),
|
||||
body: Column(
|
||||
children: [
|
||||
// Container(
|
||||
// color: Colors.amber,
|
||||
// child: Text(
|
||||
// widget.from ,),
|
||||
// ),
|
||||
Row(
|
||||
// title of email
|
||||
children: [
|
||||
Text(
|
||||
widget.subject,
|
||||
style: TextStyle(fontSize: 30),
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
Text(
|
||||
'from ${widget.name}',
|
||||
style: TextStyle(fontSize: 18),
|
||||
),
|
||||
Text(
|
||||
'<${widget.from}>',
|
||||
style: TextStyle(fontSize: 18),
|
||||
),
|
||||
Spacer(),
|
||||
Text(
|
||||
'${widget.date}',
|
||||
textAlign: TextAlign.right,
|
||||
)
|
||||
],
|
||||
),
|
||||
// TODO: make a case where if one of these is the user's email it just says me :)))))
|
||||
Row(
|
||||
children: [
|
||||
Text(
|
||||
'to ${widget.to.toString()}',
|
||||
style: TextStyle(fontSize: 15),
|
||||
)
|
||||
],
|
||||
),
|
||||
void _handleNumbering() {
|
||||
// Check if the iframe content window is accessible
|
||||
try {
|
||||
js.context.callMethod('applyNumberingVisibility');
|
||||
} catch (e) {
|
||||
print('Error accessing iframe method: $e');
|
||||
// Optionally, use postMessage for cross-origin communication
|
||||
// js.context['iframeElement'].contentWindow.postMessage(jsify({'action': 'toggleNumbering'}), '*');
|
||||
}
|
||||
}
|
||||
|
||||
Expanded(
|
||||
child: HtmlElementView(
|
||||
key: iframeKey,
|
||||
viewType: iframeKey.toString(),
|
||||
// 'html-view33',
|
||||
|
||||
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text(widget.name),
|
||||
),
|
||||
body: Column(
|
||||
children: [
|
||||
EmailToolbar(onButtonPressed: _handleNumbering),
|
||||
Row(
|
||||
// title of email
|
||||
children: [
|
||||
Text(
|
||||
widget.subject,
|
||||
style: TextStyle(fontSize: 30),
|
||||
),
|
||||
],
|
||||
),
|
||||
)
|
||||
],
|
||||
)
|
||||
);
|
||||
Row(
|
||||
children: [
|
||||
Text(
|
||||
'from ${widget.name}',
|
||||
style: TextStyle(fontSize: 18),
|
||||
),
|
||||
Text(
|
||||
'<${widget.from}>',
|
||||
style: TextStyle(fontSize: 18),
|
||||
),
|
||||
Spacer(),
|
||||
Text(
|
||||
'${widget.date}',
|
||||
textAlign: TextAlign.right,
|
||||
)
|
||||
],
|
||||
),
|
||||
// TODO: make a case where if one of these is the user's email it just says me :)))))
|
||||
Row(
|
||||
children: [
|
||||
Text(
|
||||
'to ${widget.to.toString()}',
|
||||
style: TextStyle(fontSize: 15),
|
||||
)
|
||||
],
|
||||
),
|
||||
|
||||
Expanded(
|
||||
child: HtmlElementView(
|
||||
key: iframeKey,
|
||||
viewType: iframeKey.toString(),
|
||||
// 'html-view33',
|
||||
),
|
||||
),
|
||||
],
|
||||
));
|
||||
}
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ import 'package:http/http.dart' as http;
|
||||
import 'dart:convert';
|
||||
import 'dart:ui_web' as ui;
|
||||
import 'dart:html' as html;
|
||||
import 'dart:js' as js;
|
||||
|
||||
class EmailToolbar extends StatelessWidget {
|
||||
final VoidCallback onButtonPressed;
|
||||
|
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user