80 lines
2.3 KiB
C#
80 lines
2.3 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Threading.Tasks;
|
|
using DysonNetwork.Shared.Models;
|
|
using MagicOnion;
|
|
|
|
namespace DysonNetwork.Shared.Services;
|
|
|
|
public interface IRelationshipService : IService<IRelationshipService>
|
|
{
|
|
/// <summary>
|
|
/// Checks if a relationship exists between two accounts
|
|
/// </summary>
|
|
Task<bool> HasExistingRelationship(Guid accountId, Guid relatedId);
|
|
|
|
/// <summary>
|
|
/// Gets a relationship between two accounts
|
|
/// </summary>
|
|
Task<Relationship?> GetRelationship(
|
|
Guid accountId,
|
|
Guid relatedId,
|
|
RelationshipStatus? status = null,
|
|
bool ignoreExpired = false
|
|
);
|
|
|
|
/// <summary>
|
|
/// Creates a new relationship between two accounts
|
|
/// </summary>
|
|
Task<Relationship> CreateRelationship(Account sender, Account target, RelationshipStatus status);
|
|
|
|
/// <summary>
|
|
/// Blocks a user
|
|
/// </summary>
|
|
Task<Relationship> BlockAccount(Account sender, Account target);
|
|
|
|
/// <summary>
|
|
/// Unblocks a user
|
|
/// </summary>
|
|
Task<Relationship> UnblockAccount(Account sender, Account target);
|
|
|
|
/// <summary>
|
|
/// Sends a friend request to a user
|
|
/// </summary>
|
|
Task<Relationship> SendFriendRequest(Account sender, Account target);
|
|
|
|
/// <summary>
|
|
/// Deletes a friend request
|
|
/// </summary>
|
|
Task DeleteFriendRequest(Guid accountId, Guid relatedId);
|
|
|
|
/// <summary>
|
|
/// Accepts a friend request
|
|
/// </summary>
|
|
Task<Relationship> AcceptFriendRelationship(
|
|
Relationship relationship,
|
|
RelationshipStatus status = RelationshipStatus.Friends
|
|
);
|
|
|
|
/// <summary>
|
|
/// Updates a relationship between two users
|
|
/// </summary>
|
|
Task<Relationship> UpdateRelationship(Guid accountId, Guid relatedId, RelationshipStatus status);
|
|
|
|
/// <summary>
|
|
/// Lists all friends of an account
|
|
/// </summary>
|
|
Task<List<Account>> ListAccountFriends(Account account);
|
|
|
|
/// <summary>
|
|
/// Lists all blocked users of an account
|
|
/// </summary>
|
|
Task<List<Guid>> ListAccountBlocked(Account account);
|
|
|
|
/// <summary>
|
|
/// Checks if a relationship with a specific status exists between two accounts
|
|
/// </summary>
|
|
Task<bool> HasRelationshipWithStatus(Guid accountId, Guid relatedId,
|
|
RelationshipStatus status = RelationshipStatus.Friends);
|
|
}
|