public void OpenContactChat()
{
if (ContactChat == null) {
ContactChat = Session.CreateChat<GroupChatModel>(
"Contacts", "Contacts", this
);
Session.AddChat(ContactChat);
} else if (!ContactChat.IsEnabled) {
Session.EnableChat(ContactChat);
} else {
// already open
return;
}
foreach (var pair in Contacts) {
if (pair.Value.Resources.Count != 0) {
ContactChat.UnsafePersons.Add(pair.Key, pair.Value.ToPersonModel());
}
}
// HACK: lower probability of sync race condition during connect
ThreadPool.QueueUserWorkItem(delegate {
Thread.Sleep(5000);
lock (this) {
if (IsDisposed) {
return;
}
if (ContactChat != null) {
Session.SyncChat(ContactChat);
}
}
});
}