✨ Unblock user
This commit is contained in:
parent
082a096470
commit
6a9cd0905d
@ -230,4 +230,24 @@ public class RelationshipController(AppDatabase db, RelationshipService rels) :
|
|||||||
return BadRequest(err.Message);
|
return BadRequest(err.Message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[HttpDelete("{userId:guid}/block")]
|
||||||
|
[Authorize]
|
||||||
|
public async Task<ActionResult<Relationship>> UnblockUser(Guid userId)
|
||||||
|
{
|
||||||
|
if (HttpContext.Items["CurrentUser"] is not Account currentUser) return Unauthorized();
|
||||||
|
|
||||||
|
var relatedUser = await db.Accounts.FindAsync(userId);
|
||||||
|
if (relatedUser is null) return NotFound("Account was not found.");
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var relationship = await rels.UnblockAccount(currentUser, relatedUser);
|
||||||
|
return relationship;
|
||||||
|
}
|
||||||
|
catch (InvalidOperationException err)
|
||||||
|
{
|
||||||
|
return BadRequest(err.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
@ -63,6 +63,19 @@ public class RelationshipService(AppDatabase db, ICacheService cache)
|
|||||||
return await UpdateRelationship(sender.Id, target.Id, RelationshipStatus.Blocked);
|
return await UpdateRelationship(sender.Id, target.Id, RelationshipStatus.Blocked);
|
||||||
return await CreateRelationship(sender, target, RelationshipStatus.Blocked);
|
return await CreateRelationship(sender, target, RelationshipStatus.Blocked);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<Relationship> UnblockAccount(Account sender, Account target)
|
||||||
|
{
|
||||||
|
var relationship = await GetRelationship(sender.Id, target.Id, RelationshipStatus.Blocked);
|
||||||
|
if (relationship is null) throw new ArgumentException("There is no relationship between you and the user.");
|
||||||
|
db.Remove(relationship);
|
||||||
|
await db.SaveChangesAsync();
|
||||||
|
|
||||||
|
await cache.RemoveAsync($"{UserFriendsCacheKeyPrefix}{sender.Id}");
|
||||||
|
await cache.RemoveAsync($"{UserFriendsCacheKeyPrefix}{target.Id}");
|
||||||
|
|
||||||
|
return relationship;
|
||||||
|
}
|
||||||
|
|
||||||
public async Task<Relationship> SendFriendRequest(Account sender, Account target)
|
public async Task<Relationship> SendFriendRequest(Account sender, Account target)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user