public FriendsAppUser(UserDetailMsg userMsg, uint?roomId, ulong[] friendsList) { UserId = userMsg.UserId; Username = userMsg.Username; CurrentRoomId = roomId; FriendsList = friendsList; }
private void RenderPage(int pageNum) { if (_friends == null || _users == null) { Refresh(); } _root.GetChildren().ForEach(x => x.Dispose()); _root.Clear(); for (int i = 0; i <= ROWS; ++i) { if (pageNum * ROWS + i >= _users.Count) { break; } UserDetailMsg user = _users[pageNum * ROWS + i]; MenuItemText username = new MenuItemText($"username{user.Username}"); username.SetText(user.Username); _root.AddChild(0, i, 3, 1, username); if (!_friends.Contains(user.UserId)) { MenuItemButton addFriend = new MenuItemButton($"addFriend{user.Username}"); addFriend.SetText("Add Friend"); addFriend.Clicked += () => { _api.DefaultApps.Friends.SendFriendRequest(user.UserId).Wait(); MenuItemText requestSent = new MenuItemText("requestSent"); _root.RemoveChild(addFriend); addFriend.Dispose(); _root.AddChild(3, i, 1, 1, requestSent); }; _root.AddChild(3, i, 1, 1, addFriend); } } if (pageNum > 0) { MenuItemButton prevPage = new MenuItemButton("prevPage"); prevPage.SetText("<"); prevPage.Clicked += () => { RenderPage(pageNum - 1); }; _root.AddChild(0, ROWS, 1, 1, prevPage); } if ((pageNum + 1) * ROWS < _users.Count) { MenuItemButton nextPage = new MenuItemButton("nextPage"); nextPage.SetText(">"); nextPage.Clicked += () => { RenderPage(pageNum + 1); }; _root.AddChild(3, ROWS, 1, 1, nextPage); } }
private MainMessage HandleUserRequest(MainMessage msg) { _log.Debug("In HandleUserRequest method."); try { // TODO needs enhancemnets UserRequestMsg userRequest = msg.UserMngMsg.UserMsg.UserRequestMsg; switch (userRequest.UserRequestTypeCase) { // create new User case UserRequestMsg.UserRequestTypeOneofCase.CreateQuery: _log.Debug("Creating new user: "******"User sucessfuly created."); return(new MainMessage { UserMngMsg = userMngMsg }); // List users (Username LIKE '%msg.username%') case UserRequestMsg.UserRequestTypeOneofCase.ListQuery: _log.Debug("Looking for user like: " + userRequest.ListQuery.Username); UserDetailMsg userDetail = userRequest.ListQuery; UserDetailMsg[] users = User.List(userDetail) .Select(x => new UserDetailMsg { Password = "", UserId = x.Id, Username = x.Username }) .ToArray(); UserListMsg userList = new UserListMsg(); userList.Users.AddRange(users); UserMngMsg userMngMsg1 = new UserMngMsg(); userMngMsg1.UserMsg = new UserMsg { UserListMsg = userList }; _log.Debug($"Found {users.Length} records."); return(new MainMessage { UserMngMsg = userMngMsg1 }); // Change password, where old and new password are in same filed, separated by newline case UserRequestMsg.UserRequestTypeOneofCase.UpdateQuery: _log.Debug("Changing password to user: "******"Password sucessfuly changed."); return(ISystemService.CreateOkMessage(msg.MsgId)); // show user by its Id case UserRequestMsg.UserRequestTypeOneofCase.UserIdDetail: _log.Debug($"Looking for user with id {userRequest.UserIdDetail}"); User user2 = User.Get(userRequest.UserIdDetail); UserDetailMsg userDetail1 = new UserDetailMsg(); userDetail1.UserId = user2.Id; userDetail1.Password = ""; userDetail1.Username = user2.Username; UserMsg userMsg1 = new UserMsg(); userMsg1.UserDetailMsg = userDetail1; return(new MainMessage { UserMngMsg = new UserMngMsg { UserMsg = userMsg1 } }); case UserRequestMsg.UserRequestTypeOneofCase.UserByClientId: _log.Debug($"Looking for user with client id {userRequest.UserByClientId}"); if (msg.SenderIdCase != MainMessage.SenderIdOneofCase.ServerId) { return(ISystemService.CreateErrorMessage(msg.MsgId, 0, 0, "Not enough permissions.")); } ulong clientId = userRequest.UserByClientId; if (clientId >= (ulong)_clientMachines.Count || _clientMachines[(int)clientId] == null) { return(ISystemService.CreateErrorMessage(msg.MsgId, 0, 0, "Unable to find user with this client ID")); } MainMessage respUserDetail = new MainMessage(); respUserDetail.UserMngMsg = new UserMngMsg(); respUserDetail.UserMngMsg.UserMsg = new UserMsg(); respUserDetail.UserMngMsg.UserMsg.UserDetailMsg = _clientMachines[(int)clientId].ToMessage(); return(respUserDetail); default: throw new ErrorMsgException("This message cannot be empty."); } } catch (Exception ex) { _log.Error(ex); return(ISystemService.CreateErrorMessage(0, 0, 0, ex.Message)); } }