flushNoteDraft method

Future<void> flushNoteDraft(
  1. CatalogRow row
)

Implementation

Future<void> flushNoteDraft(CatalogRow row) async {
  final draft = _noteDrafts[row.keyPath];
  if (draft == null) {
    return;
  }
  draft.timer?.cancel();
  if (!_isNoteDraftDirty(draft)) {
    notifyListeners();
    return;
  }
  draft.syncState = CatalogDraftSyncState.saving;
  notifyListeners();
  try {
    final updatedRow = await _client.updateKeyNote(
      keyPath: row.keyPath,
      note: draft.note,
    );
    draft.baseNote = updatedRow.note ?? '';
    draft.note = updatedRow.note ?? '';
    draft.touched = false;
    draft.syncState = CatalogDraftSyncState.saved;
    draft.errorMessage = null;
    _queue.upsertRow(updatedRow);
    _scheduleSavedReset(draft);
    notifyListeners();
  } catch (error) {
    draft.syncState = CatalogDraftSyncState.saveError;
    draft.errorMessage = error.toString();
    notifyListeners();
  }
}