updateRowFromJson method
Perbarui baris dari map JSON hasil edit. Mengembalikan pesan error atau null jika sukses.
Implementation
Future<String?> updateRowFromJson({
required String sourceId,
required String collection,
required Map<String, Object?> originalRow,
required Map<String, Object?> updatedRow,
}) async {
final original = Map<String, Object?>.from(originalRow);
final originalDisplay = DbLensJsonUtils.prepareRow(original);
final updated = Map<String, Object?>.from(
withoutRowIdEntry(Map<String, dynamic>.from(updatedRow)),
);
final changedColumns = <String>[];
for (final key in originalDisplay.keys) {
if (!updated.containsKey(key)) continue;
if (!_valuesEqual(originalDisplay[key], updated[key])) {
changedColumns.add(key);
}
}
if (changedColumns.isEmpty) return null;
busy = true;
lastError = null;
notifyListeners();
try {
for (final column in changedColumns) {
await _repository.updateCell(
sourceId,
collection,
column,
updated[column],
original,
);
}
busy = false;
notifyListeners();
return null;
} catch (error) {
busy = false;
final message = 'Failed to update row: $error';
lastError = message;
notifyListeners();
return message;
}
}