Listeners: What are conflict listeners and how to work with them?

To allow users to handle document replication conflicts automatically, we introduced a Document Conflict listener. To create your own listener of this type, just implement IDocumentConflictListener interface.

public interface IDocumentConflictListener
	bool TryResolveConflict(string key, JsonDocument[] conflictedDocs, 
							out JsonDocument resolvedDocument);


This example shows how to create an automatic conflict resolver by using IDocumentConflictListener, which will pick the newest item from the list of conflicted documents:

public class ResolveInFavourOfNewest : IDocumentConflictListener
	public bool TryResolveConflict(
		string key,
		JsonDocument[] conflictedDocs,
		out JsonDocument resolvedDocument)
		DateTime? maxDate = conflictedDocs.Max(x => x.LastModified);
		resolvedDocument = conflictedDocs
							.FirstOrDefault(x => x.LastModified == maxDate);

		if (resolvedDocument == null)
			return false;

		return true;