void ConflictItems_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) { if (ConflictItems.Any()) { // TODO: navigate to conflicts UI } }
private void InitializeQuery() { Manager.SharedInstance.GetDatabase(DatabaseName) .GetView("all-docs") .SetMap((doc, emit) => { // Create index on '_id' with reference to the document. emit(doc["_id"], null); }, "ver2"); Manager.SharedInstance.GetDatabase(DatabaseName) .GetView("query-view") .SetMap((doc, emit) => { if (!doc.ContainsKey("doc") || !doc.ContainsKey("doctype")) { return; } var item = doc["doc"] as JContainer; if (item == null) { return; } item.Children() .Where(p => p is JProperty) .Cast <JProperty>() .Select(p => new { name = p.Name, value = p.Value.ToString().ToLower() }) .ToList() .ForEach(prop => { var doctype = doc["doctype"] != null ? doc["doctype"].ToString() : "unknown"; var v = doctype + "::" + prop.name; emit(prop.value, v); }); } , "query2"); var query = Manager.SharedInstance.GetDatabase(DatabaseName) .GetView("all-docs") .CreateQuery(); query.Run() .ToList() .ForEach(row => { ProcessDocument(row.Document); }); var liveQuery = Manager.SharedInstance.GetDatabase(DatabaseName) .GetExistingView("all-docs") .CreateQuery() .ToLiveQuery(); liveQuery.Changed += (object sender, QueryChangeEventArgs e) => { var conflicts = e.Rows .Where(item => item.Document.ConflictingRevisions.Any()) .Select(item => item.Document) ; foreach (var item in conflicts) { ConflictItems.Add(item); } Debug.WriteLine("liveQuery.Changed " + e.Rows.Count); }; liveQuery.Start(); }