resolve method
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,
);
}
}