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() {
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);

View File

@ -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);
}
}
}

View File

@ -31,7 +31,7 @@ class _CategoriesPageState extends State<CategoriesPage> {
),
body: Consumer<CategoriesAPI>(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<CategoriesPage> {
height: 0,
thickness: 2,
),
category.number == -1
category.number < 0
? SizedBox.shrink()
: CategoryRow(category: category),
],
);
}
return CategoryRow(category: category);
}
else{
print("Huh?");
}
return null;
},
);

View File

@ -47,29 +47,34 @@ class _DayViewState extends State<DayView> {
}
}
@override
Widget build(BuildContext context) {
void getDayEntry() async{
List<Document> 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<HourFormField> {
}
});
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;
}