Compare commits
No commits in common. "bde05197aee3f480e33057bcb9950125e709eb11" and "4177e29e8bbaa0fac383497342ca30d2c89b8d41" have entirely different histories.
bde05197ae
...
4177e29e8b
118
lib/augment.dart
118
lib/augment.dart
@ -3,11 +3,9 @@ import 'package:crab_ui/attachmentDownload.dart';
|
|||||||
import 'package:crab_ui/collapsableEmails.dart';
|
import 'package:crab_ui/collapsableEmails.dart';
|
||||||
import 'package:crab_ui/structs.dart';
|
import 'package:crab_ui/structs.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:go_router/go_router.dart';
|
|
||||||
import 'package:pointer_interceptor/pointer_interceptor.dart';
|
import 'package:pointer_interceptor/pointer_interceptor.dart';
|
||||||
import 'attachmentWidget.dart';
|
import 'attachmentWidget.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'routingHandler.dart';
|
|
||||||
|
|
||||||
class EmailToolbar extends StatefulWidget {
|
class EmailToolbar extends StatefulWidget {
|
||||||
final Function(String) onJumpToNumbering;
|
final Function(String) onJumpToNumbering;
|
||||||
@ -16,7 +14,6 @@ class EmailToolbar extends StatefulWidget {
|
|||||||
final Function(String) onFiltering;
|
final Function(String) onFiltering;
|
||||||
final List<String> emails;
|
final List<String> emails;
|
||||||
final String subject;
|
final String subject;
|
||||||
late AugmentTree? rootAugment;
|
|
||||||
|
|
||||||
EmailToolbar({
|
EmailToolbar({
|
||||||
Key? key,
|
Key? key,
|
||||||
@ -26,7 +23,6 @@ class EmailToolbar extends StatefulWidget {
|
|||||||
required this.onFiltering,
|
required this.onFiltering,
|
||||||
required this.emails,
|
required this.emails,
|
||||||
required this.subject,
|
required this.subject,
|
||||||
required this.rootAugment,
|
|
||||||
}) : super(key: key);
|
}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -37,7 +33,7 @@ class _DynamicClassesAugment extends State<EmailToolbar> {
|
|||||||
String selectedClass = 'Class 1';
|
String selectedClass = 'Class 1';
|
||||||
TextEditingController _jumpController = TextEditingController();
|
TextEditingController _jumpController = TextEditingController();
|
||||||
TextEditingController _viewspecsController = TextEditingController();
|
TextEditingController _viewspecsController = TextEditingController();
|
||||||
AugmentTree? localAugment;
|
AugmentClasses? localAugment;
|
||||||
List<SerializableMessage>? emailsInThread;
|
List<SerializableMessage>? emailsInThread;
|
||||||
|
|
||||||
// late final FocusNode _JumpItemfocusNode;
|
// late final FocusNode _JumpItemfocusNode;
|
||||||
@ -59,7 +55,6 @@ class _DynamicClassesAugment extends State<EmailToolbar> {
|
|||||||
// _viewSpecsfocusNode.addListener(() {
|
// _viewSpecsfocusNode.addListener(() {
|
||||||
// setState(() => _viewSpecsHasFocus = _viewSpecsfocusNode.hasFocus);
|
// setState(() => _viewSpecsHasFocus = _viewSpecsfocusNode.hasFocus);
|
||||||
// });
|
// });
|
||||||
localAugment = widget.rootAugment;
|
|
||||||
_serializableData(widget.emails);
|
_serializableData(widget.emails);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -241,9 +236,7 @@ class _DynamicClassesAugment extends State<EmailToolbar> {
|
|||||||
child: Text('Create Link'),
|
child: Text('Create Link'),
|
||||||
),
|
),
|
||||||
ElevatedButton(
|
ElevatedButton(
|
||||||
// onPressed: () => localAugment!.handlePaste(context),
|
onPressed: AugmentClasses.handleFind,
|
||||||
onPressed: () =>
|
|
||||||
AugmentClasses().handlePaste(context, widget.emails[0]),
|
|
||||||
child: Text('Paste Link'),
|
child: Text('Paste Link'),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
@ -256,11 +249,6 @@ class _DynamicClassesAugment extends State<EmailToolbar> {
|
|||||||
class AugmentClasses {
|
class AugmentClasses {
|
||||||
CollapsableEmails? localCollapsable;
|
CollapsableEmails? localCollapsable;
|
||||||
String? nameOfDocument;
|
String? nameOfDocument;
|
||||||
AugmentTree? rootTree;
|
|
||||||
|
|
||||||
void setRootTree(AugmentTree aTree) {
|
|
||||||
rootTree = aTree;
|
|
||||||
}
|
|
||||||
|
|
||||||
// AugmentClasses(CollapsableEmails localCollapsable) {
|
// AugmentClasses(CollapsableEmails localCollapsable) {
|
||||||
// localCollapsable = localCollapsable;
|
// localCollapsable = localCollapsable;
|
||||||
@ -531,26 +519,6 @@ class AugmentClasses {
|
|||||||
print("Find button pressed");
|
print("Find button pressed");
|
||||||
}
|
}
|
||||||
|
|
||||||
AugmentTree? _findAugmentNode(String target, AugmentTree node, int index) {
|
|
||||||
// so the ideqa is that since the numbering its quite linear, meaning that it tells you where it goes,
|
|
||||||
// thus i've thought the amount of max moves are only the length of the string of the target
|
|
||||||
//e.g. if we have a target of 1e9, its steps are the same or time complexity as if it were 1a1, or 99z99
|
|
||||||
// since each number or letter tells us which is the index in this array, genius ik
|
|
||||||
// thus first one needs another function from converting from alphabetical to numbers
|
|
||||||
if (node.numbering[index] == target[index]) {
|
|
||||||
_findAugmentNode(target, node.children[index++], index++);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool _checkValidTarget(String target) {
|
|
||||||
target = target.trim();
|
|
||||||
//find if the target exists,
|
|
||||||
//recursive?
|
|
||||||
_findAugmentNode(target, rootTree!, 0);
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
_copyLink(String anchor, String target, String format, String viewspecs,
|
_copyLink(String anchor, String target, String format, String viewspecs,
|
||||||
String nameOfDocument) {
|
String nameOfDocument) {
|
||||||
String form = "$anchor < $nameOfDocument, $target :$viewspecs >";
|
String form = "$anchor < $nameOfDocument, $target :$viewspecs >";
|
||||||
@ -663,13 +631,7 @@ class AugmentClasses {
|
|||||||
actions: [
|
actions: [
|
||||||
ElevatedButton(
|
ElevatedButton(
|
||||||
onPressed: () => {
|
onPressed: () => {
|
||||||
// _checkValidTarget(targetController.text),
|
_copyLink(anchorController.text, targetController.text, format, viewspecsController.text,
|
||||||
|
|
||||||
_copyLink(
|
|
||||||
anchorController.text,
|
|
||||||
targetController.text,
|
|
||||||
format,
|
|
||||||
viewspecsController.text,
|
|
||||||
nameOfDocument),
|
nameOfDocument),
|
||||||
Navigator.of(context).pop()
|
Navigator.of(context).pop()
|
||||||
},
|
},
|
||||||
@ -682,72 +644,6 @@ class AugmentClasses {
|
|||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> handlePaste(BuildContext context, String emailID) async {
|
|
||||||
final TextEditingController gotoLink = TextEditingController();
|
|
||||||
|
|
||||||
Routinghandler localRouting;
|
|
||||||
await showDialog(
|
|
||||||
context: context,
|
|
||||||
builder: (context) => AlertDialog(
|
|
||||||
title: Text("GOTO Link"),
|
|
||||||
content: SizedBox(
|
|
||||||
height: 400,
|
|
||||||
child: Column(
|
|
||||||
children: [
|
|
||||||
Row(
|
|
||||||
children: [
|
|
||||||
Text("Paste link to go: "),
|
|
||||||
SizedBox(
|
|
||||||
width: 350,
|
|
||||||
child: TextField(
|
|
||||||
controller: gotoLink,
|
|
||||||
maxLines: 1,
|
|
||||||
autofocus: true,
|
|
||||||
decoration: const InputDecoration(
|
|
||||||
border: OutlineInputBorder(),
|
|
||||||
),
|
|
||||||
))
|
|
||||||
],
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
actions: [
|
|
||||||
ElevatedButton(
|
|
||||||
onPressed: () {
|
|
||||||
print('pressed');
|
|
||||||
// i need this shit to be processed into args
|
|
||||||
print("email_id given $emailID");
|
|
||||||
Navigator.of(context).pop();
|
|
||||||
final localRouting =
|
|
||||||
Routinghandler(gotoLink.text, emailID);
|
|
||||||
final String subject =
|
|
||||||
localRouting.docName; // This is your :subject
|
|
||||||
final String target =
|
|
||||||
localRouting.target; // This is your :target
|
|
||||||
final String viewspecs =
|
|
||||||
localRouting.viewspecs; // This is your :viewspecs
|
|
||||||
final String finalEmailID = emailID;
|
|
||||||
|
|
||||||
final encodedSubject = Uri.encodeComponent(subject);
|
|
||||||
final encodedTarget = Uri.encodeComponent(target);
|
|
||||||
final encodedViewspecs = Uri.encodeComponent(viewspecs);
|
|
||||||
final encodedEmailID = Uri.encodeComponent(finalEmailID);
|
|
||||||
print("emailID $encodedEmailID");
|
|
||||||
String link =
|
|
||||||
"/email/$encodedSubject/$encodedTarget/$encodedViewspecs/$encodedEmailID";
|
|
||||||
GoRouter.of(context).go(link);
|
|
||||||
},
|
|
||||||
child: Text("OK")),
|
|
||||||
ElevatedButton(
|
|
||||||
onPressed: () {
|
|
||||||
Navigator.of(context).pop();
|
|
||||||
},
|
|
||||||
child: Text("Cancel"))
|
|
||||||
],
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
static void handleStop() {
|
static void handleStop() {
|
||||||
print("Stop button pressed");
|
print("Stop button pressed");
|
||||||
}
|
}
|
||||||
@ -759,8 +655,12 @@ class AugmentClasses {
|
|||||||
static void invisibility(String htmlClass) {}
|
static void invisibility(String htmlClass) {}
|
||||||
|
|
||||||
static Future<void> JumpButton(BuildContext context) async {
|
static Future<void> JumpButton(BuildContext context) async {
|
||||||
|
// FocusNode textFieldFocusNode = FocusNode();
|
||||||
|
|
||||||
|
// AugmentClasses.disableIframePointerEvents();
|
||||||
await showDialog(
|
await showDialog(
|
||||||
barrierDismissible: true,
|
barrierDismissible: true,
|
||||||
|
// barrierColor: Colors.yellow,
|
||||||
context: context,
|
context: context,
|
||||||
builder: (context) => AlertDialog(
|
builder: (context) => AlertDialog(
|
||||||
title: Text('Jump Item:'),
|
title: Text('Jump Item:'),
|
||||||
@ -992,6 +892,10 @@ class AugmentClasses {
|
|||||||
await showDialog(
|
await showDialog(
|
||||||
context: context,
|
context: context,
|
||||||
builder: (BuildContext dialogContext) {
|
builder: (BuildContext dialogContext) {
|
||||||
|
// => Container(
|
||||||
|
// height: 150,
|
||||||
|
// width: 300,
|
||||||
|
// child:
|
||||||
return StatefulBuilder(builder:
|
return StatefulBuilder(builder:
|
||||||
(BuildContext statefulBuilderContext, StateSetter setState) {
|
(BuildContext statefulBuilderContext, StateSetter setState) {
|
||||||
return AlertDialog(
|
return AlertDialog(
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
|
import 'package:english_words/english_words.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'api_service.dart';
|
import 'api_service.dart';
|
||||||
import 'structs.dart';
|
import 'structs.dart';
|
||||||
|
import 'package:html2md/html2md.dart' as html2md;
|
||||||
import 'package:markdown_widget/markdown_widget.dart';
|
import 'package:markdown_widget/markdown_widget.dart';
|
||||||
import 'package:markdown/markdown.dart' as md;
|
import 'package:markdown/markdown.dart' as md;
|
||||||
|
|
||||||
@ -12,7 +14,6 @@ class CollapsableEmails extends StatefulWidget {
|
|||||||
final String? targetJumpNumbering;
|
final String? targetJumpNumbering;
|
||||||
final String? targetViewspecs;
|
final String? targetViewspecs;
|
||||||
final String? targetFiltering;
|
final String? targetFiltering;
|
||||||
final String? nameOfDocument;
|
|
||||||
|
|
||||||
const CollapsableEmails({
|
const CollapsableEmails({
|
||||||
required this.thread,
|
required this.thread,
|
||||||
@ -22,15 +23,10 @@ class CollapsableEmails extends StatefulWidget {
|
|||||||
this.targetJumpNumbering,
|
this.targetJumpNumbering,
|
||||||
this.targetViewspecs,
|
this.targetViewspecs,
|
||||||
this.targetFiltering,
|
this.targetFiltering,
|
||||||
this.nameOfDocument,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<CollapsableEmails> createState() => _CollapsableEmailsState();
|
State<CollapsableEmails> createState() => _CollapsableEmailsState();
|
||||||
|
|
||||||
AugmentTree? getAugmentRoot() {
|
|
||||||
return _CollapsableEmailsState().getAugmentRoot();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class _CollapsableEmailsState extends State<CollapsableEmails> {
|
class _CollapsableEmailsState extends State<CollapsableEmails> {
|
||||||
@ -67,7 +63,7 @@ class _CollapsableEmailsState extends State<CollapsableEmails> {
|
|||||||
static bool leftNumbering = true;
|
static bool leftNumbering = true;
|
||||||
static bool rightNumbering = true;
|
static bool rightNumbering = true;
|
||||||
bool showWhole = false;
|
bool showWhole = false;
|
||||||
List<AugmentTree> queryResults = []; //results of conducting filtering
|
List<AugmentTree> queryResults = [];
|
||||||
bool _isFilteringActive = false;
|
bool _isFilteringActive = false;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -103,14 +99,6 @@ class _CollapsableEmailsState extends State<CollapsableEmails> {
|
|||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
List<SerializableMessage> getThreads() {
|
|
||||||
return emailsInThread;
|
|
||||||
}
|
|
||||||
|
|
||||||
AugmentTree getAugmentRoot() {
|
|
||||||
return zoomTreeRoot;
|
|
||||||
}
|
|
||||||
|
|
||||||
void _add2Tree(AugmentTree tree, md.Element node2add) {
|
void _add2Tree(AugmentTree tree, md.Element node2add) {
|
||||||
// adds node to its corresponding place
|
// adds node to its corresponding place
|
||||||
AugmentTree newNode = AugmentTree();
|
AugmentTree newNode = AugmentTree();
|
||||||
@ -264,8 +252,6 @@ class _CollapsableEmailsState extends State<CollapsableEmails> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildForZooms(int indexThread) {
|
Widget _buildForZooms(int indexThread) {
|
||||||
// index of email in thread, currentZoomTree,
|
|
||||||
//
|
|
||||||
if (!_isLoaded) {
|
if (!_isLoaded) {
|
||||||
return const Center(child: CircularProgressIndicator()); // loading screen
|
return const Center(child: CircularProgressIndicator()); // loading screen
|
||||||
}
|
}
|
||||||
@ -582,6 +568,7 @@ class _CollapsableEmailsState extends State<CollapsableEmails> {
|
|||||||
maxHeight: MediaQuery.of(context).size.height * 0.6,
|
maxHeight: MediaQuery.of(context).size.height * 0.6,
|
||||||
),
|
),
|
||||||
child: _buildForZooms(index), //show the tree
|
child: _buildForZooms(index), //show the tree
|
||||||
|
// child: _buildForZooms(key: ValueKey(currentZoomNode)),
|
||||||
),
|
),
|
||||||
Divider(),
|
Divider(),
|
||||||
],
|
],
|
||||||
|
@ -1,18 +1,12 @@
|
|||||||
import 'package:crab_ui/contact.dart';
|
import 'package:crab_ui/contact.dart';
|
||||||
import 'package:crab_ui/email.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:provider/provider.dart';
|
|
||||||
import 'home_page.dart';
|
import 'home_page.dart';
|
||||||
import 'login.dart';
|
import 'login.dart';
|
||||||
import 'package:go_router/go_router.dart';
|
|
||||||
import 'routingHandler.dart';
|
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
WidgetsFlutterBinding.ensureInitialized();
|
WidgetsFlutterBinding.ensureInitialized();
|
||||||
runApp(ChangeNotifierProvider(
|
runApp(HyM());
|
||||||
create: (context) => AuthService(),
|
|
||||||
child: HyM(),
|
|
||||||
));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class HyM extends StatelessWidget {
|
class HyM extends StatelessWidget {
|
||||||
@ -21,56 +15,22 @@ class HyM extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final GoRouter _router = GoRouter(
|
return MaterialApp(
|
||||||
// refreshListenable: ,
|
|
||||||
initialLocation: '/',
|
|
||||||
routes: [
|
|
||||||
GoRoute(
|
|
||||||
path: "/",
|
|
||||||
builder: (context, state) => SplashScreen(),
|
|
||||||
),
|
|
||||||
GoRoute(
|
|
||||||
path: "/login",
|
|
||||||
builder: (context, state) => const LoginPage(),
|
|
||||||
),
|
|
||||||
GoRoute(
|
|
||||||
path: "/home",
|
|
||||||
builder: (context, state) => HomeScreen(),
|
|
||||||
),
|
|
||||||
GoRoute(
|
|
||||||
path: "/contacts",
|
|
||||||
builder: (context, state) => ContactsPage(),
|
|
||||||
),
|
|
||||||
GoRoute(
|
|
||||||
path: "/email/:subject/:target/:viewspecs/:emailID",
|
|
||||||
builder: (context, state) {
|
|
||||||
final subject = state.pathParameters['subject']!;
|
|
||||||
final target = state.pathParameters['target']!;
|
|
||||||
final viewspecs = state.pathParameters['viewspecs']!;
|
|
||||||
final emailId = state.pathParameters['emailID']!;
|
|
||||||
return Routinghandler.fromParameters("main anchor", subject, target, viewspecs, emailId);
|
|
||||||
}),
|
|
||||||
]);
|
|
||||||
return MaterialApp.router(
|
|
||||||
debugShowCheckedModeBanner: false,
|
debugShowCheckedModeBanner: false,
|
||||||
theme: ThemeData(
|
theme: ThemeData(
|
||||||
colorScheme: ColorScheme.light(),
|
colorScheme: ColorScheme.light(),
|
||||||
useMaterial3: true,
|
useMaterial3: true,
|
||||||
),
|
),
|
||||||
title: 'HyM',
|
title: 'HyM',
|
||||||
routerConfig: _router,
|
|
||||||
// home: HomeScreen(),
|
// home: HomeScreen(),
|
||||||
|
initialRoute: "/",
|
||||||
|
|
||||||
// routes: {
|
routes: {
|
||||||
// "/": (context) => SplashScreen(),
|
"/": (context) => SplashScreen(),
|
||||||
// "/login": (context) => const LoginPage(),
|
"/login": (context) => const LoginPage(),
|
||||||
// "/home": (context) => HomeScreen(),
|
"/home": (context) => HomeScreen(),
|
||||||
// "/contacts": (context) => ContactsPage(),
|
"/contacts": (context) => ContactsPage(),
|
||||||
// GoRoute(
|
},
|
||||||
// path:
|
|
||||||
// )
|
|
||||||
// "/email": (context) => EmailListScreen(),
|
|
||||||
// },
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,205 +0,0 @@
|
|||||||
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: [],
|
|
||||||
));
|
|
||||||
}
|
|
||||||
}
|
|
@ -30,7 +30,6 @@ dependencies:
|
|||||||
html2md: ^1.3.2
|
html2md: ^1.3.2
|
||||||
markdown_widget: ^2.3.2+8
|
markdown_widget: ^2.3.2+8
|
||||||
markdown: ^7.3.0
|
markdown: ^7.3.0
|
||||||
go_router: ^16.0.0
|
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
|
Loading…
Reference in New Issue
Block a user