private void UpdateAvatarFromCurrentContact() { if (!rainbowApplication.IsConnected()) { return; } var dlg = NSOpenPanel.OpenPanel; dlg.CanChooseFiles = true; dlg.CanChooseDirectories = true; dlg.AllowedFileTypes = new string[] { "png", "jpg" }; if (dlg.RunModal() == 1) { var url = dlg.Urls[0]; if (url != null) { var path = url.Path; string ext = Path.GetExtension(path).ToUpper(); ext = ext.Substring(1, ext.Length - 1); if (ext == "PNG" || ext == "JPG") { byte[] data = File.ReadAllBytes(path); rainbowContacts.UpdateAvatarFromCurrentContact(ref data, ext, callback => { if (callback.Result.Success) { AddStateLine("Avatar successfully updated"); GetAvatarFromCurrentContact(); } else { string logline = String.Format("Impossible to update your avatar:\r\n{0}", Util.SerializeSdkError(callback.Result)); AddStateLine(logline); log.Warn(logline); } }); } else { AddStateLine($"Image file can only be of type PNG or JPG"); } } else { AddStateLine($"Your avatar can't be updated - file doesn't exist"); } } }