diff --git a/lib/data_layer/db/object_box_camelus/db_camelus.dart b/lib/data_layer/db/object_box_camelus/db_camelus.dart index 161cd044..6d08daba 100644 --- a/lib/data_layer/db/object_box_camelus/db_camelus.dart +++ b/lib/data_layer/db/object_box_camelus/db_camelus.dart @@ -53,6 +53,23 @@ class DbAppImpl implements AppDb { @override Future save({required String key, required String value}) async { await _dbRdy; - _objectBox.store.box().put(DbKeyValue(key: key, value: value)); + + _objectBox.store.runInTransaction(TxMode.write, () { + // check if key already exists + final keyBox = _objectBox.store.box(); + final DbKeyValue? keyValue = + keyBox.query(DbKeyValue_.key.equals(key)).build().findFirst(); + // update + if (keyValue != null) { + keyValue.value = value; + _objectBox.store.box().put(keyValue, mode: PutMode.update); + } else { + // insert + final newKeyValue = DbKeyValue(key: key, value: value); + _objectBox.store + .box() + .put(newKeyValue, mode: PutMode.insert); + } + }); } } diff --git a/lib/presentation_layer/providers/main_feed_provider.dart b/lib/presentation_layer/providers/main_feed_provider.dart index 9a8ec1b4..75867e66 100644 --- a/lib/presentation_layer/providers/main_feed_provider.dart +++ b/lib/presentation_layer/providers/main_feed_provider.dart @@ -67,7 +67,7 @@ class MainFeedState extends FamilyNotifier { } else { cutoff = now; } - // + // Save the current time as the new cutoff appDbP.save(key: 'main_feed_cache_cutoff', value: now.toString()); // Timeline subscription