Skip to content
Snippets Groups Projects
Commit d3c84f28 authored by Matt Kirby's avatar Matt Kirby
Browse files

Added request manager class

parent d2c2c2a9
No related branches found
No related tags found
1 merge request!15Add Friend service
import FriendDataStore from "../Datastores/FriendDataStore";
import RequestDataStore from "../Datastores/RequestDataStore"
import { FriendManager } from "../Friends/FriendManager";
import { Friend } from "../Types/Friend";
import { FriendRequest } from "../Types/Request";
/**
* Handles all friend request functionality
*/
export class RequestManager {
private friendManager: FriendManager
constructor(friendManager: FriendManager){
this.friendManager = friendManager;
}
/**
* Method to create a new friend request
* @param sourceId
* @param targetId
* @returns
*/
public NewRequest = async (sourceId: string, targetId: string):Promise<FriendRequest> => {
if(await RequestDataStore.GetItem({SourceUser: sourceId, TargetUser: targetId}) !== null || await RequestDataStore.GetItem({SourceUser: targetId, TargetUser: sourceId}) !== null){
throw new Error("Request already exists!");
}
if(await FriendDataStore.GetFriendByUsers(sourceId, targetId) !== null){
throw new Error("Users are already friends!");
}
return await RequestDataStore.newRequest(sourceId, targetId);
}
/**
*
* @param targetId Method to get user requests
* @returns
*/
public GetRequests = async (targetId: string):Promise<FriendRequest[]> => {
return await RequestDataStore.getRequests(targetId)
}
public AcceptRequest = async (requestId: string): Promise<Friend> => {
const request = await RequestDataStore.handleRequestById(requestId)
return await this.friendManager.AddFriend(request.SourceUser, request.TargetUser)
}
public RejectRequest = async (requestId: string): Promise<FriendRequest> => {
return await RequestDataStore.handleRequestById(requestId);
}
public GetSingleRequest = async (requestId: string): Promise<FriendRequest> => {
return await RequestDataStore.GetRequestById(requestId);
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment