void CopyNamePhoto (Friend src, Message dst) { dst.FriendPhoto = src.Photo; dst.FriendName = src.Name; }
async Task<Friend> GetFriend (Message msg) { long id = GetFriendId (msg); var friend = await DataManager.GetFriendAsync (id); if (friend == null) { friend = new Friend { FriendId = id, Name = string.Empty }; await App.FriendsViewModel.UpdateFriendInfoAsync (friend); } return friend; }
void Bind(Friend friend, UICollectionViewFriendCell cell) { cell.AvatarUrl = friend.Photo; cell.Name = friend.Name; }
public async Task ExecuteSearchForFriendCommand (string search) { search.Trim (); if (IsBusy) return; LoadingMessage = "Finding Friend..."; using (BusyContext ()) { using (App.Logger.TrackTimeContext ("FriendSearch")) { try { App.Logger.Track ("FriendSearch"); if (!search.IsValidEmail ()) { App.MessageDialog.SendToast ("Please enter a valide email address."); return; } if (!await RefreshToken ()) return; var userManager = new UserManager (Settings.AccessToken); var result = await userManager.GetUserViaEmail (search); IsBusy = false; //did not find anyone //add them and send invite if (result == null || result.Devices == null) { var newFriend = new Friend { FriendId = Settings.GenerateTempFriendId (), Name = search }; await DataManager.AddOrSaveFriendAsync (newFriend); await FriendsSemaphore.WaitAsync(); Friends.Add (newFriend); FriendsSemaphore.Release (); await userManager.SendUserInvite (search); RaiseNotification ("Your friend hasn't signed up for Kinder Chat yet. We have sent them an invite!", "Friend Request Sent"); App.Logger.Track ("FriendRequestSent"); return; } //did you enter yourself? if (!string.IsNullOrWhiteSpace(Settings.Email) && result.Email.ToLowerInvariant () == Settings.Email.ToLowerInvariant ()) { RaiseNotification ("This is you!"); return; } //did you already friend them? await FriendsSemaphore.WaitAsync (); var alreadyFriend = Friends.FirstOrDefault (f => f.FriendId == result.Id) != null; FriendsSemaphore.Release (); if (alreadyFriend) { RaiseNotification ("Friend already added."); return; } //new friend found and we want to add them. var msg = string.Format ("We found {0} do you want to add to friend list?", result.NickName); App.MessageDialog.SendConfirmation (msg, "Friend found!", async add => { if (!add) return; var newFriend = new Friend { FriendId = result.Id, Name = result.NickName, Photo = EndPoints.BaseUrl + result.Avatar.Location, AvatarType = result.Avatar.Type }; await DataManager.AddOrSaveFriendAsync (newFriend); await FriendsSemaphore.WaitAsync (); Friends.Add (newFriend); FriendsSemaphore.Release (); RaiseNotification ("Friend added!"); App.Logger.Track ("FriendAdded"); }); } catch (Exception ex) { App.Logger.Report (ex); RaiseError ("Something has gone wrong, please try to search again."); } } } }
public async Task UpdateFriendInfoAsync(Friend item) { if (App.FakeSignup) return; var userManager = new UserManager(Settings.AccessToken); //should it be cached? User user = null; if (item.FriendId < 0) user = await userManager.GetUserViaEmail(item.Name).ConfigureAwait (false); else user = await userManager.GetUserViaEmail((int)item.FriendId).ConfigureAwait (false); if (user != null && user.Devices != null) { //update messages for newly connected friends) if(item.FriendId < 0){ var messages = await DataManager.GetUnsentMessagesAsync (item.FriendId).ConfigureAwait (false); //update each message with new information. foreach (var message in messages) { message.FriendName = user.NickName; message.FriendPhoto = EndPoints.BaseUrl + user.Avatar.Location; message.Recipient = user.Id; message.RecipientName = user.NickName; await DataManager.AddMessageAsync (message).ConfigureAwait (false); } } //user found item.FriendId = user.Id; item.Name = user.NickName; item.Photo = EndPoints.BaseUrl + user.Avatar.Location; item.AvatarType = user.Avatar.Type; await SaveUserDevices(user).ConfigureAwait (false); await DataManager.AddOrSaveFriendAsync(item).ConfigureAwait (false); } }
public Task<int> AddOrSaveFriendAsync (Friend friend) { return database.SaveItemAsync<Friend> (friend); }