From ececb7439a4b5430d7d9ffb8b44f5f4fd4cb6d68 Mon Sep 17 00:00:00 2001 From: Ryan Pandya Date: Fri, 19 Jan 2024 01:44:25 -0800 Subject: [PATCH] Fix invalid categories finally! --- ltx_flutter/.direnv/flake-profile | 1 + ltx_flutter/.direnv/flake-profile-1-link | 1 + ltx_flutter/.direnv/flake-profile-2-link | 1 + ltx_flutter/lib/appwrite/categories_api.dart | 9 +++++- ltx_flutter/lib/appwrite/database_api.dart | 29 +++++++++++++++++-- ltx_flutter/lib/pages/categories_page.dart | 8 +++-- .../lib/pages/today_views/day_view.dart | 23 +++++++++------ 7 files changed, 57 insertions(+), 15 deletions(-) create mode 120000 ltx_flutter/.direnv/flake-profile create mode 120000 ltx_flutter/.direnv/flake-profile-1-link create mode 120000 ltx_flutter/.direnv/flake-profile-2-link diff --git a/ltx_flutter/.direnv/flake-profile b/ltx_flutter/.direnv/flake-profile new file mode 120000 index 0000000..c7ae5b7 --- /dev/null +++ b/ltx_flutter/.direnv/flake-profile @@ -0,0 +1 @@ +flake-profile-2-link \ No newline at end of file diff --git a/ltx_flutter/.direnv/flake-profile-1-link b/ltx_flutter/.direnv/flake-profile-1-link new file mode 120000 index 0000000..aff7925 --- /dev/null +++ b/ltx_flutter/.direnv/flake-profile-1-link @@ -0,0 +1 @@ +/nix/store/548c9rk983kzvkfiicqmkslqmd7s1ldg-nix-shell-env \ No newline at end of file diff --git a/ltx_flutter/.direnv/flake-profile-2-link b/ltx_flutter/.direnv/flake-profile-2-link new file mode 120000 index 0000000..ad037df --- /dev/null +++ b/ltx_flutter/.direnv/flake-profile-2-link @@ -0,0 +1 @@ +/nix/store/rmm84806g3pgv1nc8wvi7g72ivh6axsi-nix-shell-env \ No newline at end of file diff --git a/ltx_flutter/lib/appwrite/categories_api.dart b/ltx_flutter/lib/appwrite/categories_api.dart index 0901421..e541420 100644 --- a/ltx_flutter/lib/appwrite/categories_api.dart +++ b/ltx_flutter/lib/appwrite/categories_api.dart @@ -56,7 +56,7 @@ class Category { } bool hasParent() { - return parent == number ? false : true; + return parent != number; } double leftPadding() { @@ -99,10 +99,17 @@ class CategoriesAPI extends ChangeNotifier { if (!_ready) { return false; } + try{ return Category(_categories.singleWhere((e) { return e.data['number'] == double.parse(n.toString()); })); } + catch(e){ + return Category(_categories.singleWhere((e) { + return e.data['number'] == -9; + })); + } + } init() { client.setEndpoint(APPWRITE_URL).setProject(APPWRITE_PROJECT_ID); diff --git a/ltx_flutter/lib/appwrite/database_api.dart b/ltx_flutter/lib/appwrite/database_api.dart index e03e227..3da8c76 100644 --- a/ltx_flutter/lib/appwrite/database_api.dart +++ b/ltx_flutter/lib/appwrite/database_api.dart @@ -71,6 +71,7 @@ class DatabaseAPI extends ChangeNotifier { notifyListeners(); // _entries.add(entry); // sortByDate(_entries); + } }); } @@ -81,10 +82,14 @@ class DatabaseAPI extends ChangeNotifier { var referenceDate = DateTime.parse("2023-01-01"); final date = DateTime.parse(dateISO); - return date.difference(referenceDate).inDays + 1; + + int _total = date.difference(referenceDate).inDays + 1; + return _total; } getAll() async { + print("Loading entries"); + String paginationQuery = Query.offset(0); int max = total(); @@ -102,10 +107,27 @@ class DatabaseAPI extends ChangeNotifier { paginationQuery: paginationQuery, ); + if(newEntries.isEmpty){ + // This only happens if we were expecting more + // (i.e., _entries.length < max), + // but getEntries didn't return anything + // (i.e., an entry doesn't exist). + // So, let's create it. + // + // BAD CODE: THIS ASSUMES IT NEEDS TO BE TODAY + // This will eventually break. + // + + Document new_today_entry = await getOne(date: formatter.format(DateTime.now())); + + newEntries.add(new_today_entry); + } + _entries.addAll(newEntries); notifyListeners(); } _ready = true; + print("Got ${_entries.length} entries"); } getOne({required String date}) async { @@ -126,11 +148,14 @@ class DatabaseAPI extends ChangeNotifier { print("No entry in database; creating $date"); Document newEntry = await addEntry(date: date); _entries.add(newEntry); + notifyListeners(); + return(newEntry); } else{ _entries.add(response.first); + notifyListeners(); + return(response.first); } - notifyListeners(); } } diff --git a/ltx_flutter/lib/pages/categories_page.dart b/ltx_flutter/lib/pages/categories_page.dart index 1a7cee8..6e064cd 100644 --- a/ltx_flutter/lib/pages/categories_page.dart +++ b/ltx_flutter/lib/pages/categories_page.dart @@ -31,7 +31,7 @@ class _CategoriesPageState extends State { ), body: Consumer(builder: (context, categories, child) { return ListView.builder( - itemCount: categories.total + 1, + itemCount: categories.total, itemBuilder: (context, i) { if (i < categories.total) { Category category = categories.get(i); @@ -42,15 +42,17 @@ class _CategoriesPageState extends State { height: 0, thickness: 2, ), - category.number == -1 + category.number < 0 ? SizedBox.shrink() : CategoryRow(category: category), ], ); } - return CategoryRow(category: category); } + else{ + print("Huh?"); + } return null; }, ); diff --git a/ltx_flutter/lib/pages/today_views/day_view.dart b/ltx_flutter/lib/pages/today_views/day_view.dart index ff208e5..52c155e 100644 --- a/ltx_flutter/lib/pages/today_views/day_view.dart +++ b/ltx_flutter/lib/pages/today_views/day_view.dart @@ -47,29 +47,34 @@ class _DayViewState extends State { } } - @override - Widget build(BuildContext context) { + void getDayEntry() async{ List entries = database.entries; String formattedDate = formatDate( dateISO: _date.toIso8601String(), format: "yyyy-MM-dd", ); - try { dayEntry = entries.singleWhere((element) => element.$id == formattedDate); String date = formatDate( format: "LLL d", dateISO: dayEntry?.data['date'].toString()); print("Got entry for $date"); } catch (e) { - database.getOne(date: formattedDate).then((value) { - dayEntry = value; - }); + dayEntry = entries.last; + print("Got entry for ${entries.last.$id}"); } - // print(entries.length); + } + + @override + Widget build(BuildContext context) { + getDayEntry(); setState(() { if (dayEntry != null) { - comments = dayEntry?.data["comments"]; + String? newComment = dayEntry?.data["comments"]; + if(newComment == null){ + newComment = ""; + } + comments = newComment; mood = dayEntry?.data["mood"]; } }); @@ -512,7 +517,7 @@ class _HourFormFieldState extends State { } }); if (widget.category != null) { - catNum = widget.category!.number.toString(); + catNum = widget.dayEntry!.data['hours'][widget.index].toString(); fgColor = widget.category!.foregroundColor; catName = widget.category!.name; }