206 lines
5.5 KiB
Dart
206 lines
5.5 KiB
Dart
import 'package:crab_ui/collapsableEmails.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:go_router/go_router.dart';
|
|
import 'package:markdown/markdown.dart' as md;
|
|
import 'package:markdown_widget/markdown_widget.dart';
|
|
import 'api_service.dart';
|
|
|
|
class Routinghandler extends StatefulWidget {
|
|
Routinghandler(String link, emailID) {
|
|
bool anchorDone = false;
|
|
|
|
bool docNameDone = false;
|
|
|
|
bool viewspecsDone = false;
|
|
|
|
bool targetDone = false;
|
|
|
|
for (int letter = 0; letter < link.length; letter++) {
|
|
if (!anchorDone) {
|
|
if (link[letter] != '<') {
|
|
//when the anchor hasnt been dissected
|
|
anchor += link[letter];
|
|
} else {
|
|
anchorDone = true;
|
|
}
|
|
} else if (!docNameDone) {
|
|
if (link[letter] != ',') {
|
|
//when the docName hasnt been dissected
|
|
docName += link[letter];
|
|
} else {
|
|
docNameDone = true;
|
|
}
|
|
} else if (!targetDone) {
|
|
if (link[letter] != ':') {
|
|
target += link[letter];
|
|
} else {
|
|
targetDone = true;
|
|
}
|
|
} else if (!viewspecsDone) {
|
|
if (link[letter] != '>') {
|
|
//when the docName hasnt been dissected
|
|
viewspecs += link[letter];
|
|
} else {
|
|
viewspecsDone = true;
|
|
}
|
|
}
|
|
}
|
|
anchor = anchor.trim();
|
|
docName = docName.trim();
|
|
target = target.trim();
|
|
viewspecs = viewspecs.trim();
|
|
print("inside constructor uwu $emailID");
|
|
emailID = emailID.trim();
|
|
}
|
|
Routinghandler.fromParameters(String anchor, String docName, String target,
|
|
String viewspecs, String emailID) {
|
|
this.anchor = anchor;
|
|
this.docName = docName;
|
|
this.viewspecs = viewspecs;
|
|
this.target = target;
|
|
this.emailID = emailID;
|
|
}
|
|
Routinghandler.copyConstructor(Routinghandler other) {
|
|
anchor = other.anchor;
|
|
docName = other.docName;
|
|
viewspecs = other.viewspecs;
|
|
target = other.target;
|
|
emailID = other.emailID;
|
|
}
|
|
|
|
String anchor = '';
|
|
String docName = '';
|
|
String viewspecs = '';
|
|
String target = '';
|
|
String emailID = '';
|
|
|
|
void goToLink() {
|
|
// bool anchorDone = false;
|
|
|
|
// bool docNameDone = false;
|
|
|
|
// bool viewspecsDone = false;
|
|
|
|
// bool targetDone = false;
|
|
|
|
// for (int letter = 0; letter < link.length; letter++) {
|
|
// if (!anchorDone) {
|
|
// if (link[letter] != '<') {
|
|
// //when the anchor hasnt been dissected
|
|
// anchor += link[letter];
|
|
// } else {
|
|
// anchorDone = true;
|
|
// }
|
|
// } else if (!docNameDone) {
|
|
// if (link[letter] != ',') {
|
|
// //when the docName hasnt been dissected
|
|
// docName += link[letter];
|
|
// } else {
|
|
// docNameDone = true;
|
|
// }
|
|
// } else if (!targetDone) {
|
|
// if (link[letter] != ':') {
|
|
// target += link[letter];
|
|
// } else {
|
|
// targetDone = true;
|
|
// }
|
|
// } else if (!viewspecsDone) {
|
|
// if (link[letter] != '>') {
|
|
// //when the docName hasnt been dissected
|
|
// viewspecs += link[letter];
|
|
// } else {
|
|
// viewspecsDone = true;
|
|
// }
|
|
// }
|
|
// }
|
|
print("anchor $anchor");
|
|
print("docName $docName");
|
|
print("target $target");
|
|
print("viewspecs $viewspecs");
|
|
print("emailID $emailID");
|
|
//now it should open a widget in that part
|
|
//maybe i need a rewrite
|
|
}
|
|
|
|
String getEmailID() {
|
|
return emailID;
|
|
}
|
|
|
|
@override
|
|
State<StatefulWidget> createState() => _RoutingHandlerState();
|
|
}
|
|
|
|
class _RoutingHandlerState extends State<Routinghandler> {
|
|
List<String> markdownContent = [];
|
|
bool _isLoaded = false;
|
|
|
|
@override
|
|
void initState() {
|
|
// TODO: implement initState
|
|
super.initState();
|
|
_loadMarkdown();
|
|
}
|
|
|
|
Future<void> _loadMarkdown() async {
|
|
String folder = ApiService.currFolder;
|
|
// print(folder);
|
|
print(widget.getEmailID());
|
|
String emailID = widget.emailID;
|
|
print("inside _loadMarkdown in routinghandler $emailID");
|
|
markdownContent =
|
|
await ApiService().fetchMarkdownContent([emailID], "INBOX");
|
|
// print(markdownContent);
|
|
setState(() {
|
|
_isLoaded = true;
|
|
});
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
if (!_isLoaded) {
|
|
return const Center(
|
|
child: CircularProgressIndicator(),
|
|
);
|
|
}
|
|
return Scaffold(
|
|
appBar: AppBar(
|
|
title: Text("Routing Handler"),
|
|
leading: IconButton(
|
|
onPressed: () {
|
|
GoRouter.of(context).go('/home');
|
|
},
|
|
icon: const Icon(Icons.arrow_back_ios)),
|
|
),
|
|
body: ConstrainedBox(
|
|
constraints: BoxConstraints(
|
|
minHeight: 100,
|
|
maxHeight: MediaQuery.of(context).size.height * 0.7,
|
|
),
|
|
child: SingleChildScrollView(
|
|
child:MarkdownBlock(data: markdownContent[0]))),
|
|
);
|
|
}
|
|
}
|
|
|
|
class LinkViewer extends StatefulWidget {
|
|
const LinkViewer({super.key});
|
|
|
|
@override
|
|
State<StatefulWidget> createState() => _LinkViewerState();
|
|
}
|
|
|
|
class _LinkViewerState extends State<LinkViewer> {
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
// this should be a class that opens a popup of the email on the view it wants
|
|
|
|
return Scaffold(
|
|
appBar: AppBar(
|
|
title: Text('url viewer'),
|
|
),
|
|
body: Column(
|
|
children: [],
|
|
));
|
|
}
|
|
}
|