resolve method

Map<String, dynamic> resolve({
  1. required Map<String, dynamic> localData,
  2. required Map<String, dynamic> remoteData,
  3. required DateTime localTimestamp,
  4. required DateTime remoteTimestamp,
})

Resolves a conflict between local and remote versions of a document.

Parameters:

  • localData: The local version of the document.
  • remoteData: The remote (server) version of the document.
  • localTimestamp: When the local version was last modified.
  • remoteTimestamp: When the remote version was last modified.

Returns: The winning version of the document based on the configured strategy.

Example:

final winner = resolver.resolve(
  localData: {'text': 'Buy milk', 'done': true},
  remoteData: {'text': 'Buy milk', 'done': false},
  localTimestamp: DateTime(2024, 1, 1, 10, 0),
  remoteTimestamp: DateTime(2024, 1, 1, 10, 5),
);

Implementation

Map<String, dynamic> resolve({
  required Map<String, dynamic> localData,
  required Map<String, dynamic> remoteData,
  required DateTime localTimestamp,
  required DateTime remoteTimestamp,
}) {
  switch (strategy) {
    case ConflictStrategy.lastWriteWins:
      return localTimestamp.isAfter(remoteTimestamp) ? localData : remoteData;

    case ConflictStrategy.serverWins:
      return remoteData;

    case ConflictStrategy.clientWins:
      return localData;

    case ConflictStrategy.custom:
      return customResolver!(
        localData,
        remoteData,
        localTimestamp,
        remoteTimestamp,
      );
  }
}