Example #1
0
        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");
                }
            }
        }