updateKeyNote method

Future<CatalogRow> updateKeyNote({
  1. required String keyPath,
  2. String? note,
})

Implementation

Future<CatalogRow> updateKeyNote({
  required String keyPath,
  String? note,
}) async {
  final loaded = await _loadAndSyncState();
  if (!loaded.keyPaths.contains(keyPath)) {
    throw CatalogOperationException('Key "$keyPath" does not exist.');
  }

  final keyState = loaded.state.keys.putIfAbsent(
    keyPath,
    () => CatalogKeyState(sourceHash: '', cells: <String, CatalogCellState>{}),
  );
  final normalizedNote = _normalizeCatalogNote(note);
  final previousNote = _normalizeCatalogNote(keyState.note);
  keyState.note = normalizedNote;
  if (previousNote != normalizedNote) {
    _appendActivityEvent(
      keyState: keyState,
      event: CatalogActivityEvent(
        kind: CatalogActivityKinds.noteUpdated,
        timestamp: DateTime.now().toUtc(),
      ),
    );
  }

  await _stateStore.save(
    config: config,
    projectRootPath: projectRootPath,
    state: loaded.state,
  );

  _triggerDictionaryGeneration();
  return _buildRowForKey(
    keyPath: keyPath,
    locales: loaded.locales,
    translationsByLocale: loaded.dataset.translationsByLocale,
    state: loaded.state,
    now: DateTime.now().toUtc(),
  );
}