Fix sync duplicates and extreme slowness
Behebt Dubletten auf beiden Seiten und sehr langsame Syncs: - Getrennte Hash-Baselines pro Seite (LastOutlookHash/LastStarfaceHash) statt eines gemeinsamen Hashes. Outlook und Starface stellen denselben Kontakt unterschiedlich dar, wodurch der gemeinsame Hash nie passte und bei jedem Lauf praktisch jeder Kontakt neu geschrieben wurde. - Update-Methoden geben den frisch eingelesenen Stand zurueck, damit die Baseline nach dem Schreiben korrekt gesetzt wird (sauberes Konvergieren). - Unvollstaendig geladene Starface-Liste bricht jetzt mit Fehler ab (inkl. Retry) statt still mit Teil-Liste weiterzuarbeiten - das liess Kontakte faelschlich als geloescht erscheinen und erzeugte Dubletten. - Fehlender Starface-Kontakt (anderes Adressbuch) behaelt das Mapping, statt es zu verwerfen und neu anzulegen. - Lockereres Re-Matching: gleicher E-Mail- oder voller Namens-Treffer reicht; umformatierte Telefonnummern blockieren ihn nicht mehr. - Starface-Kontaktdetails werden parallel geladen (8 gleichzeitig). Bestehende Mappings werden beim ersten Sync automatisch migriert. CHANGELOG.md hinzugefuegt. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -350,7 +350,13 @@ namespace StarfaceOutlookSync.Services
|
||||
}
|
||||
}
|
||||
|
||||
public bool UpdateContact(string entryId, UnifiedContact contact)
|
||||
/// <summary>
|
||||
/// Aktualisiert den Outlook-Kontakt und gibt den frisch eingelesenen
|
||||
/// Stand zurueck (null bei Fehler). Der zurueckgegebene Kontakt liefert
|
||||
/// den massgeblichen Hash NACH dem Schreiben - noetig damit die naechste
|
||||
/// Synchronisation den Kontakt nicht erneut als geaendert erkennt.
|
||||
/// </summary>
|
||||
public UnifiedContact UpdateContact(string entryId, UnifiedContact contact)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -361,15 +367,17 @@ namespace StarfaceOutlookSync.Services
|
||||
MapToOutlook(contact, ci);
|
||||
ci.Save();
|
||||
|
||||
var updated = MapFromOutlook(ci);
|
||||
|
||||
Marshal.ReleaseComObject(ci);
|
||||
Marshal.ReleaseComObject(ns);
|
||||
|
||||
return true;
|
||||
return updated;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
System.Diagnostics.Debug.WriteLine($"Error updating contact: {ex.Message}");
|
||||
return false;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user