migrate to strong api calls (#29)
* migrate to strong api calls * set last added user to null on changing notes popup setting
This commit is contained in:
		| @@ -1,4 +1,4 @@ | ||||
| using System.Collections.Generic; | ||||
| using System; | ||||
| using System.Linq; | ||||
| using System.Threading.Tasks; | ||||
| using MareSynchronos.API; | ||||
| @@ -12,96 +12,115 @@ public partial class ApiController | ||||
| { | ||||
|     public ClientPairDto? LastAddedUser { get; set; } | ||||
|  | ||||
|     private void UserForcedReconnectCallback() | ||||
|     public void OnUserUpdateClientPairs(Action<ClientPairDto> act) | ||||
|     { | ||||
|         _ = CreateConnections(); | ||||
|         if (_initialized) return; | ||||
|         _mareHub!.On(nameof(Client_UserUpdateClientPairs), act); | ||||
|     } | ||||
|  | ||||
|     private void UpdateLocalClientPairsCallback(ClientPairDto dto) | ||||
|     public void OnUpdateSystemInfo(Action<SystemInfoDto> act) | ||||
|     { | ||||
|         if (_initialized) return; | ||||
|         _mareHub!.On(nameof(Client_UpdateSystemInfo), act); | ||||
|     } | ||||
|  | ||||
|     public void OnUserReceiveCharacterData(Action<CharacterCacheDto, string> act) | ||||
|     { | ||||
|         if (_initialized) return; | ||||
|         _mareHub!.On(nameof(Client_UserReceiveCharacterData), act); | ||||
|     } | ||||
|  | ||||
|     public void OnUserChangePairedPlayer(Action<string, bool> act) | ||||
|     { | ||||
|         if (_initialized) return; | ||||
|         _mareHub!.On(nameof(Client_UserChangePairedPlayer), act); | ||||
|     } | ||||
|  | ||||
|     public void OnGroupChange(Action<GroupDto> act) | ||||
|     { | ||||
|         if (_initialized) return; | ||||
|         _mareHub!.On(nameof(Client_GroupChange), act); | ||||
|     } | ||||
|  | ||||
|     public void OnGroupUserChange(Action<GroupPairDto> act) | ||||
|     { | ||||
|         if (_initialized) return; | ||||
|         _mareHub!.On(nameof(Client_GroupUserChange), act); | ||||
|     } | ||||
|  | ||||
|     public void OnAdminForcedReconnect(Action act) | ||||
|     { | ||||
|         if (_initialized) return; | ||||
|         _mareHub!.On(nameof(Client_AdminForcedReconnect), act); | ||||
|     } | ||||
|  | ||||
|     public void OnAdminDeleteBannedUser(Action<BannedUserDto> act) | ||||
|     { | ||||
|         if (_initialized) return; | ||||
|         _mareHub!.On(nameof(Client_AdminDeleteBannedUser), act); | ||||
|     } | ||||
|  | ||||
|     public void OnAdminDeleteForbiddenFile(Action<ForbiddenFileDto> act) | ||||
|     { | ||||
|         if (_initialized) return; | ||||
|         _mareHub!.On(nameof(Client_AdminDeleteForbiddenFile), act); | ||||
|     } | ||||
|  | ||||
|     public void OnAdminUpdateOrAddBannedUser(Action<BannedUserDto> act) | ||||
|     { | ||||
|         if (_initialized) return; | ||||
|         _mareHub!.On(nameof(Client_AdminUpdateOrAddBannedUser), act); | ||||
|     } | ||||
|  | ||||
|     public void OnAdminUpdateOrAddForbiddenFile(Action<ForbiddenFileDto> act) | ||||
|     { | ||||
|         if (_initialized) return; | ||||
|         _mareHub!.On(nameof(Client_AdminUpdateOrAddForbiddenFile), act); | ||||
|     } | ||||
|  | ||||
|     public Task Client_UserUpdateClientPairs(ClientPairDto dto) | ||||
|     { | ||||
|         var entry = PairedClients.SingleOrDefault(e => string.Equals(e.OtherUID, dto.OtherUID, System.StringComparison.Ordinal)); | ||||
|         if (dto.IsRemoved) | ||||
|         { | ||||
|             PairedClients.RemoveAll(p => string.Equals(p.OtherUID, dto.OtherUID, System.StringComparison.Ordinal)); | ||||
|             return; | ||||
|             return Task.CompletedTask; | ||||
|         } | ||||
|         if (entry == null) | ||||
|         { | ||||
|             LastAddedUser = dto; | ||||
|             PairedClients.Add(dto); | ||||
|             return; | ||||
|             return Task.CompletedTask; | ||||
|         } | ||||
|  | ||||
|         entry.IsPaused = dto.IsPaused; | ||||
|         entry.IsPausedFromOthers = dto.IsPausedFromOthers; | ||||
|         entry.IsSynced = dto.IsSynced; | ||||
|     } | ||||
|  | ||||
|     private Task ReceiveCharacterDataCallback(CharacterCacheDto character, string characterHash) | ||||
|     { | ||||
|         Logger.Verbose("Received DTO for " + characterHash); | ||||
|         CharacterReceived?.Invoke(null, new CharacterReceivedEventArgs(characterHash, character)); | ||||
|         return Task.CompletedTask; | ||||
|     } | ||||
|  | ||||
|     private void UpdateOrAddBannedUserCallback(BannedUserDto obj) | ||||
|     public Task Client_UpdateSystemInfo(SystemInfoDto systemInfo) | ||||
|     { | ||||
|         var user = AdminBannedUsers.SingleOrDefault(b => string.Equals(b.CharacterHash, obj.CharacterHash, System.StringComparison.Ordinal)); | ||||
|         if (user == null) | ||||
|         { | ||||
|             AdminBannedUsers.Add(obj); | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             user.Reason = obj.Reason; | ||||
|         } | ||||
|         SystemInfoDto = systemInfo; | ||||
|         return Task.CompletedTask; | ||||
|     } | ||||
|  | ||||
|     private void DeleteBannedUserCallback(BannedUserDto obj) | ||||
|     public Task Client_UserReceiveCharacterData(CharacterCacheDto clientPairDto, string characterIdent) | ||||
|     { | ||||
|         AdminBannedUsers.RemoveAll(a => string.Equals(a.CharacterHash, obj.CharacterHash, System.StringComparison.Ordinal)); | ||||
|         Logger.Verbose("Received DTO for " + characterIdent); | ||||
|         CharacterReceived?.Invoke(null, new CharacterReceivedEventArgs(characterIdent, clientPairDto)); | ||||
|         return Task.CompletedTask; | ||||
|     } | ||||
|  | ||||
|     private void UpdateOrAddForbiddenFileCallback(ForbiddenFileDto obj) | ||||
|     public Task Client_UserChangePairedPlayer(string characterIdent, bool isOnline) | ||||
|     { | ||||
|         var user = AdminForbiddenFiles.SingleOrDefault(b => string.Equals(b.Hash, obj.Hash, System.StringComparison.Ordinal)); | ||||
|         if (user == null) | ||||
|         { | ||||
|             AdminForbiddenFiles.Add(obj); | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             user.ForbiddenBy = obj.ForbiddenBy; | ||||
|         } | ||||
|         if (isOnline) PairedClientOnline?.Invoke(characterIdent); | ||||
|         else PairedClientOffline?.Invoke(characterIdent); | ||||
|         return Task.CompletedTask; | ||||
|     } | ||||
|  | ||||
|     private void DeleteForbiddenFileCallback(ForbiddenFileDto obj) | ||||
|     { | ||||
|         AdminForbiddenFiles.RemoveAll(f => string.Equals(f.Hash, obj.Hash, System.StringComparison.Ordinal)); | ||||
|     } | ||||
|  | ||||
|     private void GroupPairChangedCallback(GroupPairDto dto) | ||||
|     { | ||||
|         if (dto.IsRemoved.GetValueOrDefault(false)) | ||||
|         { | ||||
|             GroupPairedClients.RemoveAll(g => string.Equals(g.GroupGID, dto.GroupGID, System.StringComparison.Ordinal) && string.Equals(g.UserUID, dto.UserUID, System.StringComparison.Ordinal)); | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         var existingUser = GroupPairedClients.FirstOrDefault(f => string.Equals(f.GroupGID, dto.GroupGID, System.StringComparison.Ordinal) && string.Equals(f.UserUID, dto.UserUID, System.StringComparison.Ordinal)); | ||||
|         if (existingUser == null) | ||||
|         { | ||||
|             GroupPairedClients.Add(dto); | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         existingUser.IsPaused = dto.IsPaused ?? existingUser.IsPaused; | ||||
|         existingUser.UserAlias = dto.UserAlias ?? existingUser.UserAlias; | ||||
|         existingUser.IsPinned = dto.IsPinned ?? existingUser.IsPinned; | ||||
|         existingUser.IsModerator = dto.IsModerator ?? existingUser.IsModerator; | ||||
|     } | ||||
|  | ||||
|     private async Task GroupChangedCallback(GroupDto dto) | ||||
|     public async Task Client_GroupChange(GroupDto dto) | ||||
|     { | ||||
|         if (dto.IsDeleted.GetValueOrDefault(false)) | ||||
|         { | ||||
| @@ -114,7 +133,7 @@ public partial class ApiController | ||||
|         if (existingGroup == null) | ||||
|         { | ||||
|             Groups.Add(dto); | ||||
|             GroupPairedClients.AddRange(await _mareHub!.InvokeAsync<List<GroupPairDto>>(Api.InvokeGroupGetUsersInGroup, dto.GID).ConfigureAwait(false)); | ||||
|             GroupPairedClients.AddRange(await GroupsGetUsersInGroup(dto.GID).ConfigureAwait(false)); | ||||
|             return; | ||||
|         } | ||||
|  | ||||
| @@ -123,4 +142,75 @@ public partial class ApiController | ||||
|         existingGroup.IsPaused = dto.IsPaused ?? existingGroup.IsPaused; | ||||
|         existingGroup.IsModerator = dto.IsModerator ?? existingGroup.IsModerator; | ||||
|     } | ||||
|  | ||||
|     public Task Client_GroupUserChange(GroupPairDto dto) | ||||
|     { | ||||
|         if (dto.IsRemoved.GetValueOrDefault(false)) | ||||
|         { | ||||
|             GroupPairedClients.RemoveAll(g => string.Equals(g.GroupGID, dto.GroupGID, System.StringComparison.Ordinal) && string.Equals(g.UserUID, dto.UserUID, System.StringComparison.Ordinal)); | ||||
|             return Task.CompletedTask; | ||||
|         } | ||||
|  | ||||
|         var existingUser = GroupPairedClients.FirstOrDefault(f => string.Equals(f.GroupGID, dto.GroupGID, System.StringComparison.Ordinal) && string.Equals(f.UserUID, dto.UserUID, System.StringComparison.Ordinal)); | ||||
|         if (existingUser == null) | ||||
|         { | ||||
|             GroupPairedClients.Add(dto); | ||||
|             return Task.CompletedTask; | ||||
|         } | ||||
|  | ||||
|         existingUser.IsPaused = dto.IsPaused ?? existingUser.IsPaused; | ||||
|         existingUser.UserAlias = dto.UserAlias ?? existingUser.UserAlias; | ||||
|         existingUser.IsPinned = dto.IsPinned ?? existingUser.IsPinned; | ||||
|         existingUser.IsModerator = dto.IsModerator ?? existingUser.IsModerator; | ||||
|  | ||||
|         return Task.CompletedTask; | ||||
|     } | ||||
|  | ||||
|     public Task Client_AdminForcedReconnect() | ||||
|     { | ||||
|         _ = CreateConnections(); | ||||
|         return Task.CompletedTask; | ||||
|     } | ||||
|  | ||||
|     public Task Client_AdminDeleteBannedUser(BannedUserDto dto) | ||||
|     { | ||||
|         AdminBannedUsers.RemoveAll(a => string.Equals(a.CharacterHash, dto.CharacterHash, System.StringComparison.Ordinal)); | ||||
|         return Task.CompletedTask; | ||||
|     } | ||||
|  | ||||
|     public Task Client_AdminDeleteForbiddenFile(ForbiddenFileDto dto) | ||||
|     { | ||||
|         AdminForbiddenFiles.RemoveAll(f => string.Equals(f.Hash, dto.Hash, System.StringComparison.Ordinal)); | ||||
|         return Task.CompletedTask; | ||||
|     } | ||||
|  | ||||
|     public Task Client_AdminUpdateOrAddBannedUser(BannedUserDto dto) | ||||
|     { | ||||
|         var user = AdminBannedUsers.SingleOrDefault(b => string.Equals(b.CharacterHash, dto.CharacterHash, System.StringComparison.Ordinal)); | ||||
|         if (user == null) | ||||
|         { | ||||
|             AdminBannedUsers.Add(dto); | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             user.Reason = dto.Reason; | ||||
|         } | ||||
|  | ||||
|         return Task.CompletedTask; | ||||
|     } | ||||
|  | ||||
|     public Task Client_AdminUpdateOrAddForbiddenFile(ForbiddenFileDto dto) | ||||
|     { | ||||
|         var user = AdminForbiddenFiles.SingleOrDefault(b => string.Equals(b.Hash, dto.Hash, System.StringComparison.Ordinal)); | ||||
|         if (user == null) | ||||
|         { | ||||
|             AdminForbiddenFiles.Add(dto); | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             user.ForbiddenBy = dto.ForbiddenBy; | ||||
|         } | ||||
|  | ||||
|         return Task.CompletedTask; | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 rootdarkarchon
					rootdarkarchon