91 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System.Linq;
 | |
| using System.Threading.Tasks;
 | |
| using MareSynchronos.API;
 | |
| using MareSynchronos.Utils;
 | |
| using MareSynchronos.WebAPI.Utils;
 | |
| 
 | |
| namespace MareSynchronos.WebAPI
 | |
| {
 | |
|     public partial class ApiController
 | |
|     {
 | |
|         private void UserForcedReconnectCallback()
 | |
|         {
 | |
|             _ = CreateConnections();
 | |
|         }
 | |
| 
 | |
|         private void UpdateLocalClientPairsCallback(ClientPairDto dto, string characterIdentifier)
 | |
|         {
 | |
|             var entry = PairedClients.SingleOrDefault(e => e.OtherUID == dto.OtherUID);
 | |
|             if (dto.IsRemoved)
 | |
|             {
 | |
|                 PairedClients.RemoveAll(p => p.OtherUID == dto.OtherUID);
 | |
|                 UnpairedFromOther?.Invoke(characterIdentifier);
 | |
|                 return;
 | |
|             }
 | |
|             if (entry == null)
 | |
|             {
 | |
|                 PairedClients.Add(dto);
 | |
|                 return;
 | |
|             }
 | |
| 
 | |
|             if ((entry.IsPausedFromOthers != dto.IsPausedFromOthers || entry.IsSynced != dto.IsSynced || entry.IsPaused != dto.IsPaused)
 | |
|                 && !dto.IsPaused && dto.IsSynced && !dto.IsPausedFromOthers)
 | |
|             {
 | |
|                 PairedWithOther?.Invoke(characterIdentifier);
 | |
|             }
 | |
| 
 | |
|             entry.IsPaused = dto.IsPaused;
 | |
|             entry.IsPausedFromOthers = dto.IsPausedFromOthers;
 | |
|             entry.IsSynced = dto.IsSynced;
 | |
| 
 | |
|             if (dto.IsPaused || dto.IsPausedFromOthers || !dto.IsSynced)
 | |
|             {
 | |
|                 UnpairedFromOther?.Invoke(characterIdentifier);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         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)
 | |
|         {
 | |
|             var user = AdminBannedUsers.SingleOrDefault(b => b.CharacterHash == obj.CharacterHash);
 | |
|             if (user == null)
 | |
|             {
 | |
|                 AdminBannedUsers.Add(obj);
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 user.Reason = obj.Reason;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         private void DeleteBannedUserCallback(BannedUserDto obj)
 | |
|         {
 | |
|             AdminBannedUsers.RemoveAll(a => a.CharacterHash == obj.CharacterHash);
 | |
|         }
 | |
| 
 | |
|         private void UpdateOrAddForbiddenFileCallback(ForbiddenFileDto obj)
 | |
|         {
 | |
|             var user = AdminForbiddenFiles.SingleOrDefault(b => b.Hash == obj.Hash);
 | |
|             if (user == null)
 | |
|             {
 | |
|                 AdminForbiddenFiles.Add(obj);
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 user.ForbiddenBy = obj.ForbiddenBy;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         private void DeleteForbiddenFileCallback(ForbiddenFileDto obj)
 | |
|         {
 | |
|             AdminForbiddenFiles.RemoveAll(f => f.Hash == obj.Hash);
 | |
|         }
 | |
|     }
 | |
| }
 | 
