Fix invalid categories finally!

This commit is contained in:
Ryan Pandya 2024-01-19 01:44:25 -08:00
parent fd171b8aa7
commit ececb7439a
7 changed files with 57 additions and 15 deletions

View File

@ -0,0 +1 @@
flake-profile-2-link

View File

@ -0,0 +1 @@
/nix/store/548c9rk983kzvkfiicqmkslqmd7s1ldg-nix-shell-env

View File

@ -0,0 +1 @@
/nix/store/rmm84806g3pgv1nc8wvi7g72ivh6axsi-nix-shell-env

View File

@ -56,7 +56,7 @@ class Category {
} }
bool hasParent() { bool hasParent() {
return parent == number ? false : true; return parent != number;
} }
double leftPadding() { double leftPadding() {
@ -99,10 +99,17 @@ class CategoriesAPI extends ChangeNotifier {
if (!_ready) { if (!_ready) {
return false; return false;
} }
try{
return Category(_categories.singleWhere((e) { return Category(_categories.singleWhere((e) {
return e.data['number'] == double.parse(n.toString()); return e.data['number'] == double.parse(n.toString());
})); }));
} }
catch(e){
return Category(_categories.singleWhere((e) {
return e.data['number'] == -9;
}));
}
}
init() { init() {
client.setEndpoint(APPWRITE_URL).setProject(APPWRITE_PROJECT_ID); client.setEndpoint(APPWRITE_URL).setProject(APPWRITE_PROJECT_ID);

View File

@ -71,6 +71,7 @@ class DatabaseAPI extends ChangeNotifier {
notifyListeners(); notifyListeners();
// _entries.add(entry); // _entries.add(entry);
// sortByDate(_entries); // sortByDate(_entries);
} }
}); });
} }
@ -81,10 +82,14 @@ class DatabaseAPI extends ChangeNotifier {
var referenceDate = DateTime.parse("2023-01-01"); var referenceDate = DateTime.parse("2023-01-01");
final date = DateTime.parse(dateISO); final date = DateTime.parse(dateISO);
return date.difference(referenceDate).inDays + 1;
int _total = date.difference(referenceDate).inDays + 1;
return _total;
} }
getAll() async { getAll() async {
print("Loading entries");
String paginationQuery = Query.offset(0); String paginationQuery = Query.offset(0);
int max = total(); int max = total();
@ -102,10 +107,27 @@ class DatabaseAPI extends ChangeNotifier {
paginationQuery: paginationQuery, 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); _entries.addAll(newEntries);
notifyListeners(); notifyListeners();
} }
_ready = true; _ready = true;
print("Got ${_entries.length} entries");
} }
getOne({required String date}) async { getOne({required String date}) async {
@ -126,11 +148,14 @@ class DatabaseAPI extends ChangeNotifier {
print("No entry in database; creating $date"); print("No entry in database; creating $date");
Document newEntry = await addEntry(date: date); Document newEntry = await addEntry(date: date);
_entries.add(newEntry); _entries.add(newEntry);
notifyListeners();
return(newEntry);
} }
else{ else{
_entries.add(response.first); _entries.add(response.first);
}
notifyListeners(); notifyListeners();
return(response.first);
}
} }
} }

View File

@ -31,7 +31,7 @@ class _CategoriesPageState extends State<CategoriesPage> {
), ),
body: Consumer<CategoriesAPI>(builder: (context, categories, child) { body: Consumer<CategoriesAPI>(builder: (context, categories, child) {
return ListView.builder( return ListView.builder(
itemCount: categories.total + 1, itemCount: categories.total,
itemBuilder: (context, i) { itemBuilder: (context, i) {
if (i < categories.total) { if (i < categories.total) {
Category category = categories.get(i); Category category = categories.get(i);
@ -42,15 +42,17 @@ class _CategoriesPageState extends State<CategoriesPage> {
height: 0, height: 0,
thickness: 2, thickness: 2,
), ),
category.number == -1 category.number < 0
? SizedBox.shrink() ? SizedBox.shrink()
: CategoryRow(category: category), : CategoryRow(category: category),
], ],
); );
} }
return CategoryRow(category: category); return CategoryRow(category: category);
} }
else{
print("Huh?");
}
return null; return null;
}, },
); );

View File

@ -47,29 +47,34 @@ class _DayViewState extends State<DayView> {
} }
} }
@override void getDayEntry() async{
Widget build(BuildContext context) {
List<Document> entries = database.entries; List<Document> entries = database.entries;
String formattedDate = formatDate( String formattedDate = formatDate(
dateISO: _date.toIso8601String(), dateISO: _date.toIso8601String(),
format: "yyyy-MM-dd", format: "yyyy-MM-dd",
); );
try { try {
dayEntry = entries.singleWhere((element) => element.$id == formattedDate); dayEntry = entries.singleWhere((element) => element.$id == formattedDate);
String date = formatDate( String date = formatDate(
format: "LLL d", dateISO: dayEntry?.data['date'].toString()); format: "LLL d", dateISO: dayEntry?.data['date'].toString());
print("Got entry for $date"); print("Got entry for $date");
} catch (e) { } catch (e) {
database.getOne(date: formattedDate).then((value) { dayEntry = entries.last;
dayEntry = value; print("Got entry for ${entries.last.$id}");
});
} }
// print(entries.length); }
@override
Widget build(BuildContext context) {
getDayEntry();
setState(() { setState(() {
if (dayEntry != null) { if (dayEntry != null) {
comments = dayEntry?.data["comments"]; String? newComment = dayEntry?.data["comments"];
if(newComment == null){
newComment = "";
}
comments = newComment;
mood = dayEntry?.data["mood"]; mood = dayEntry?.data["mood"];
} }
}); });
@ -512,7 +517,7 @@ class _HourFormFieldState extends State<HourFormField> {
} }
}); });
if (widget.category != null) { if (widget.category != null) {
catNum = widget.category!.number.toString(); catNum = widget.dayEntry!.data['hours'][widget.index].toString();
fgColor = widget.category!.foregroundColor; fgColor = widget.category!.foregroundColor;
catName = widget.category!.name; catName = widget.category!.name;
} }