resolve static method
VersionResolution
resolve({
- required Syncable local,
- required Syncable remote,
- required ConflictResolutionStrategy strategy,
Apply the given strategy to resolve conflicts between local and remote Syncable objects. Note: local can be LocalItem (may not have syncId) or ServerItem remote is always ServerItem (has syncId)
Implementation
static VersionResolution resolve({
required Syncable local,
required Syncable remote,
required ConflictResolutionStrategy strategy,
}) {
switch (strategy) {
case ConflictResolutionStrategy.serverWins:
return VersionResolution(
applyLocal: false,
applyRemote: true,
hasConflict: remote.version > local.version,
winner: ResolutionWinner.remote,
);
case ConflictResolutionStrategy.clientWins:
return VersionResolution(
applyLocal: true,
applyRemote: false,
hasConflict: local.version > remote.version,
winner: ResolutionWinner.local,
);
case ConflictResolutionStrategy.mergeBoth:
return VersionResolution(
applyLocal: true,
applyRemote: true,
hasConflict: local.version != remote.version,
winner: ResolutionWinner.merge,
);
case ConflictResolutionStrategy.highestVersionWins:
return _resolveByHighestVersion(local, remote);
}
}