ok gotta test all the paths but we more or less have the friendships and users modules working the new way
This commit is contained in:
@@ -26,9 +26,10 @@ export class FriendshipController {
|
|||||||
@UseGuards(AuthenticateGuard)
|
@UseGuards(AuthenticateGuard)
|
||||||
@UseGuards(TwoFactorGuard)
|
@UseGuards(TwoFactorGuard)
|
||||||
findOne(@Query('username') otherUsername: string, @Req() req) {
|
findOne(@Query('username') otherUsername: string, @Req() req) {
|
||||||
console.log('GET myfriend')
|
console.log('GET myfriends')
|
||||||
const user = req.user;
|
const user = req.user;
|
||||||
if (otherUsername !== undefined) {
|
if (otherUsername !== undefined) {
|
||||||
|
console.log('my friend: ' + otherUsername)
|
||||||
return this.friendshipService.findOneRelationshipByUsername(otherUsername, user.username);
|
return this.friendshipService.findOneRelationshipByUsername(otherUsername, user.username);
|
||||||
}
|
}
|
||||||
// might change this
|
// might change this
|
||||||
@@ -48,17 +49,18 @@ export class FriendshipController {
|
|||||||
// return this.friendshipService.findOneRelationshipByUsername(friendUsername, user.username);
|
// return this.friendshipService.findOneRelationshipByUsername(friendUsername, user.username);
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// POST http://transcendance:8080/api/v2/network/relations
|
// POST http://transcendance:8080/api/v2/network/relations
|
||||||
@Post('relations')
|
@Post('relations')
|
||||||
@HttpCode(HttpStatus.CREATED)
|
@HttpCode(HttpStatus.CREATED)
|
||||||
@UseGuards(AuthenticateGuard)
|
@UseGuards(AuthenticateGuard)
|
||||||
@UseGuards(TwoFactorGuard)
|
@UseGuards(TwoFactorGuard)
|
||||||
create(@Body() createFriendshipDto: CreateFriendshipDto, @Req() req) {
|
create(@Body() createFriendshipDto: CreateFriendshipDto, @Req() req) {
|
||||||
|
console.log('friendship.service create')
|
||||||
const user = req.user;
|
const user = req.user;
|
||||||
if (user.username !== createFriendshipDto.receiverUsername)
|
if (user.username !== createFriendshipDto.receiverUsername) {
|
||||||
|
console.log('friendship.service create have a receiver name')
|
||||||
return this.friendshipService.create(createFriendshipDto, user);
|
return this.friendshipService.create(createFriendshipDto, user);
|
||||||
|
}
|
||||||
return new HttpException('You can\'t request a frienship to yourself', HttpStatus.BAD_REQUEST);
|
return new HttpException('You can\'t request a frienship to yourself', HttpStatus.BAD_REQUEST);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -129,6 +129,7 @@ export class FriendshipService {
|
|||||||
const friendship = await this.friendshipRepository
|
const friendship = await this.friendshipRepository
|
||||||
.createQueryBuilder('friendship')
|
.createQueryBuilder('friendship')
|
||||||
.leftJoinAndSelect('friendship.sender', 'sender')
|
.leftJoinAndSelect('friendship.sender', 'sender')
|
||||||
|
.leftJoinAndSelect('friendship.receiver', 'receiver')
|
||||||
.where('friendship.id = :id', { id: friendshipId })
|
.where('friendship.id = :id', { id: friendshipId })
|
||||||
.andWhere('sender.id = :requester', { requester: userId })
|
.andWhere('sender.id = :requester', { requester: userId })
|
||||||
.andWhere('friendship.status = :status', { status: FriendshipStatus.BLOCKED })
|
.andWhere('friendship.status = :status', { status: FriendshipStatus.BLOCKED })
|
||||||
@@ -139,6 +140,7 @@ export class FriendshipService {
|
|||||||
return new SendableFriendship(friendship);
|
return new SendableFriendship(friendship);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
async findOneBlockedByUsername(blockedUsername : string, userId : number) {
|
async findOneBlockedByUsername(blockedUsername : string, userId : number) {
|
||||||
const friendship = await this.friendshipRepository
|
const friendship = await this.friendshipRepository
|
||||||
.createQueryBuilder('friendship')
|
.createQueryBuilder('friendship')
|
||||||
@@ -159,6 +161,7 @@ export class FriendshipService {
|
|||||||
const friendships : Friendship[] = await this.friendshipRepository
|
const friendships : Friendship[] = await this.friendshipRepository
|
||||||
.createQueryBuilder('friendship')
|
.createQueryBuilder('friendship')
|
||||||
.leftJoinAndSelect('friendship.sender', 'sender')
|
.leftJoinAndSelect('friendship.sender', 'sender')
|
||||||
|
.leftJoinAndSelect('friendship.receiver', 'receiver')
|
||||||
.where('sender.id = :requestee', { requestee: userId })
|
.where('sender.id = :requestee', { requestee: userId })
|
||||||
.andWhere('friendship.status = :status', { status: FriendshipStatus.BLOCKED })
|
.andWhere('friendship.status = :status', { status: FriendshipStatus.BLOCKED })
|
||||||
.getMany();
|
.getMany();
|
||||||
@@ -184,6 +187,7 @@ export class FriendshipService {
|
|||||||
const friendships = await this.friendshipRepository
|
const friendships = await this.friendshipRepository
|
||||||
.createQueryBuilder('friendship')
|
.createQueryBuilder('friendship')
|
||||||
.leftJoinAndSelect('friendship.sender', 'sender')
|
.leftJoinAndSelect('friendship.sender', 'sender')
|
||||||
|
.leftJoinAndSelect('friendship.receiver', 'receiver')
|
||||||
.where('sender.id = :requestee', { requestee: userId })
|
.where('sender.id = :requestee', { requestee: userId })
|
||||||
.andWhere('friendship.status = :status', { status: FriendshipStatus.REQUESTED })
|
.andWhere('friendship.status = :status', { status: FriendshipStatus.REQUESTED })
|
||||||
.getMany();
|
.getMany();
|
||||||
@@ -207,6 +211,7 @@ export class FriendshipService {
|
|||||||
async findAllReceivedRequestsForFriendship(userId: number) {
|
async findAllReceivedRequestsForFriendship(userId: number) {
|
||||||
const friendships = await this.friendshipRepository
|
const friendships = await this.friendshipRepository
|
||||||
.createQueryBuilder('friendship')
|
.createQueryBuilder('friendship')
|
||||||
|
.leftJoinAndSelect('friendship.sender', 'sender')
|
||||||
.leftJoinAndSelect('friendship.receiver', 'receiver')
|
.leftJoinAndSelect('friendship.receiver', 'receiver')
|
||||||
.where('receiver.id = :addressee', { addressee: userId })
|
.where('receiver.id = :addressee', { addressee: userId })
|
||||||
.andWhere('friendship.status = :status', { status: FriendshipStatus.REQUESTED })
|
.andWhere('friendship.status = :status', { status: FriendshipStatus.REQUESTED })
|
||||||
@@ -231,18 +236,32 @@ export class FriendshipService {
|
|||||||
async create(createFriendshipDto: CreateFriendshipDto, creator : User) {
|
async create(createFriendshipDto: CreateFriendshipDto, creator : User) {
|
||||||
console.log("DTO : \n")
|
console.log("DTO : \n")
|
||||||
console.log({...createFriendshipDto})
|
console.log({...createFriendshipDto})
|
||||||
|
|
||||||
|
// These throws don't seem to work...
|
||||||
const receiver = await this.userRepository.findOneBy({username: createFriendshipDto.receiverUsername});
|
const receiver = await this.userRepository.findOneBy({username: createFriendshipDto.receiverUsername});
|
||||||
|
console.log('receiver: ')
|
||||||
|
console.log({...receiver})
|
||||||
if (!receiver)
|
if (!receiver)
|
||||||
throw new HttpException(`The addressee does not exist.`, HttpStatus.NOT_FOUND);
|
throw new HttpException(`The addressee does not exist.`, HttpStatus.NOT_FOUND);
|
||||||
if (createFriendshipDto.status !== FriendshipStatus.REQUESTED && createFriendshipDto.status !== FriendshipStatus.BLOCKED)
|
if (createFriendshipDto.status !== FriendshipStatus.REQUESTED && createFriendshipDto.status !== FriendshipStatus.BLOCKED)
|
||||||
throw new HttpException(`The status is not valid.`, HttpStatus.NOT_FOUND);
|
throw new HttpException(`The status is not valid.`, HttpStatus.NOT_FOUND);
|
||||||
|
|
||||||
const friendship = await this.friendshipRepository.findOneBy({ sender: creator, receiver: receiver });
|
// const friendship = await this.friendshipRepository.findOneBy({ sender: creator, receiver: receiver });
|
||||||
|
|
||||||
console.log('friendship.service create, friendship: ')
|
|
||||||
console.log({...friendship})
|
const friendship = await this.friendshipRepository
|
||||||
|
.createQueryBuilder('friendship')
|
||||||
|
.leftJoinAndSelect('friendship.sender', 'sender')
|
||||||
|
.leftJoinAndSelect('friendship.receiver', 'receiver')
|
||||||
|
.where('sender.id = :senderId', {senderId: creator.id})
|
||||||
|
.andWhere('receiver.id = :receiverId', {receiverId: receiver.id})
|
||||||
|
.getOne();
|
||||||
|
|
||||||
|
console.log('friendship.service create, friendship: \n\n\n')
|
||||||
|
// console.log({...friendship})
|
||||||
|
|
||||||
if (friendship) {
|
if (friendship) {
|
||||||
|
console.log('there is already a friend request')
|
||||||
if (friendship.status && friendship.status === FriendshipStatus.ACCEPTED)
|
if (friendship.status && friendship.status === FriendshipStatus.ACCEPTED)
|
||||||
throw new HttpException(`The friendship request has already been accepted.`, HttpStatus.OK);
|
throw new HttpException(`The friendship request has already been accepted.`, HttpStatus.OK);
|
||||||
else if (friendship.status && friendship.status === FriendshipStatus.REQUESTED)
|
else if (friendship.status && friendship.status === FriendshipStatus.REQUESTED)
|
||||||
@@ -252,6 +271,8 @@ export class FriendshipService {
|
|||||||
else if (friendship.status && friendship.status === FriendshipStatus.DECLINED)
|
else if (friendship.status && friendship.status === FriendshipStatus.DECLINED)
|
||||||
throw new HttpException(`The request has been declined.`, HttpStatus.OK);
|
throw new HttpException(`The request has been declined.`, HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
console.log('friendship.service create, we are still saving a new friendship')
|
||||||
|
|
||||||
const newFriendship = new Friendship();
|
const newFriendship = new Friendship();
|
||||||
newFriendship.sender = creator;
|
newFriendship.sender = creator;
|
||||||
// newFriendship.senderUsername = creator.username;
|
// newFriendship.senderUsername = creator.username;
|
||||||
@@ -279,9 +300,18 @@ export class FriendshipService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async acceptFriendship(relationshipId: number, user: User) {
|
async acceptFriendship(relationshipId: number, user: User) {
|
||||||
const relation = await this.friendshipRepository.findOneBy({id: relationshipId });
|
// const relation = await this.friendshipRepository.findOneBy({id: relationshipId });
|
||||||
// console.log('.service accept friendship')
|
|
||||||
// console.log({...relation})
|
|
||||||
|
const relation = await this.friendshipRepository
|
||||||
|
.createQueryBuilder('friendship')
|
||||||
|
.leftJoinAndSelect('friendship.sender', 'sender')
|
||||||
|
.leftJoinAndSelect('friendship.receiver', 'receiver')
|
||||||
|
.where('friendship.id = :friendshipId', { friendshipId: relationshipId })
|
||||||
|
.getOne();
|
||||||
|
|
||||||
|
console.log('.service accept friendship')
|
||||||
|
console.log({...relation})
|
||||||
if (!relation)
|
if (!relation)
|
||||||
throw new HttpException(`The requested relationship not found.`, HttpStatus.NOT_FOUND);
|
throw new HttpException(`The requested relationship not found.`, HttpStatus.NOT_FOUND);
|
||||||
if (relation.sender.id === user.id) {
|
if (relation.sender.id === user.id) {
|
||||||
@@ -304,7 +334,12 @@ export class FriendshipService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async declineFriendship(relationshipId: number, user: User) {
|
async declineFriendship(relationshipId: number, user: User) {
|
||||||
const relation = await this.friendshipRepository.findOneBy({id: relationshipId });
|
const relation = await this.friendshipRepository
|
||||||
|
.createQueryBuilder('friendship')
|
||||||
|
.leftJoinAndSelect('friendship.sender', 'sender')
|
||||||
|
.leftJoinAndSelect('friendship.receiver', 'receiver')
|
||||||
|
.where('friendship.id = :friendshipId', { friendshipId: relationshipId })
|
||||||
|
.getOne();
|
||||||
if (!relation)
|
if (!relation)
|
||||||
throw new HttpException(`The requested relationship not found.`, HttpStatus.NOT_FOUND);
|
throw new HttpException(`The requested relationship not found.`, HttpStatus.NOT_FOUND);
|
||||||
if (relation.sender.id === user.id) {
|
if (relation.sender.id === user.id) {
|
||||||
@@ -325,7 +360,12 @@ export class FriendshipService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async blockFriendship(relationshipId: number, user: User) {
|
async blockFriendship(relationshipId: number, user: User) {
|
||||||
let relation = await this.friendshipRepository.findOneBy({id: relationshipId });
|
const relation = await this.friendshipRepository
|
||||||
|
.createQueryBuilder('friendship')
|
||||||
|
.leftJoinAndSelect('friendship.sender', 'sender')
|
||||||
|
.leftJoinAndSelect('friendship.receiver', 'receiver')
|
||||||
|
.where('friendship.id = :friendshipId', { friendshipId: relationshipId })
|
||||||
|
.getOne();
|
||||||
if (!relation)
|
if (!relation)
|
||||||
throw new HttpException(`The requested relationship not found.`, HttpStatus.NOT_FOUND);
|
throw new HttpException(`The requested relationship not found.`, HttpStatus.NOT_FOUND);
|
||||||
|
|
||||||
@@ -365,7 +405,12 @@ export class FriendshipService {
|
|||||||
async removeFriendship(relationshipId: number, user : User) {
|
async removeFriendship(relationshipId: number, user : User) {
|
||||||
// const friendship = await this.friendshipRepository.findOneBy({ id: +relationshipId });
|
// const friendship = await this.friendshipRepository.findOneBy({ id: +relationshipId });
|
||||||
// once again we need find() not findOneBy() so once again have to grab first elem of an array
|
// once again we need find() not findOneBy() so once again have to grab first elem of an array
|
||||||
const friendship = await this.friendshipRepository.findOneBy({id: relationshipId });
|
const friendship = await this.friendshipRepository
|
||||||
|
.createQueryBuilder('friendship')
|
||||||
|
.leftJoinAndSelect('friendship.sender', 'sender')
|
||||||
|
.leftJoinAndSelect('friendship.receiver', 'receiver')
|
||||||
|
.where('friendship.id = :friendshipId', { friendshipId: relationshipId })
|
||||||
|
.getOne();
|
||||||
console.log('deleting a friendship .service')
|
console.log('deleting a friendship .service')
|
||||||
console.log({...friendship})
|
console.log({...friendship})
|
||||||
console.log('who is the user')
|
console.log('who is the user')
|
||||||
|
|||||||
@@ -10,9 +10,9 @@ export class SendableFriendship {
|
|||||||
id: number;
|
id: number;
|
||||||
date: Date;
|
date: Date;
|
||||||
senderUsername: string;
|
senderUsername: string;
|
||||||
senderId: number;
|
// senderId: number;
|
||||||
receiverUsername: string;
|
receiverUsername: string;
|
||||||
receiverId: number;
|
// receiverId: number;
|
||||||
status: FriendshipStatus;
|
status: FriendshipStatus;
|
||||||
|
|
||||||
// if my constructor is here won't it get sent all over the place too?
|
// if my constructor is here won't it get sent all over the place too?
|
||||||
@@ -20,9 +20,9 @@ export class SendableFriendship {
|
|||||||
this.id = friendship.id;
|
this.id = friendship.id;
|
||||||
this.date = friendship.date
|
this.date = friendship.date
|
||||||
this.senderUsername = friendship.sender.username;
|
this.senderUsername = friendship.sender.username;
|
||||||
this.senderId = friendship.sender.id;
|
// this.senderId = friendship.sender.id;
|
||||||
this.receiverUsername = friendship.receiver.username;
|
this.receiverUsername = friendship.receiver.username;
|
||||||
this.receiverId = friendship.receiver.id;
|
// this.receiverId = friendship.receiver.id;
|
||||||
this.status = friendship.status;
|
this.status = friendship.status;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -93,23 +93,28 @@
|
|||||||
const fetchFriendshipFull = async(aUsername) => {
|
const fetchFriendshipFull = async(aUsername) => {
|
||||||
console.log('fetch friendship from a username')
|
console.log('fetch friendship from a username')
|
||||||
console.log(aUsername)
|
console.log(aUsername)
|
||||||
friendshipStatusFull = await fetch(`http://transcendance:8080/api/v2/network/myfriends/${aUsername}`)
|
friendshipStatusFull = await fetch(`http://transcendance:8080/api/v2/network/myfriends?username=${aUsername}`)
|
||||||
.then( x => x.json());
|
.then( x => x.json());
|
||||||
console.log({...friendshipStatusFull})
|
console.log({...friendshipStatusFull})
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
const sendFriendRequest = async(aUser) => {
|
const sendFriendRequest = async(aUsername) => {
|
||||||
|
console.log('sending a friend request')
|
||||||
|
console.log(aUsername)
|
||||||
const resp = await fetch("http://transcendance:8080/api/v2/network/relations", {
|
const resp = await fetch("http://transcendance:8080/api/v2/network/relations", {
|
||||||
method : "POST",
|
method : "POST",
|
||||||
headers: { 'Content-Type': 'application/json'},
|
headers: { 'Content-Type': 'application/json'},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
"receiverUsername": aUser.username,
|
"receiverUsername": aUsername,
|
||||||
"status": "R"
|
"status": "R"
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
.then( x => x.json())
|
.then( x => x.json())
|
||||||
fetchFriendshipFull(aUser.username);
|
// .catch( x => console.log({...x}))
|
||||||
|
// "status": "A"
|
||||||
|
console.log({...resp})
|
||||||
|
fetchFriendshipFull(aUsername);
|
||||||
};
|
};
|
||||||
|
|
||||||
const viewAUser = async(aUsername) => {
|
const viewAUser = async(aUsername) => {
|
||||||
@@ -335,6 +340,7 @@
|
|||||||
<Button type="secondary" on:click={() => sendFriendRequest(usernameBeingViewed)}>Add Friend</Button>
|
<Button type="secondary" on:click={() => sendFriendRequest(usernameBeingViewed)}>Add Friend</Button>
|
||||||
<Button on:click={() => blockANonFriendUser(usernameBeingViewed)}>Block User</Button>
|
<Button on:click={() => blockANonFriendUser(usernameBeingViewed)}>Block User</Button>
|
||||||
{/if}
|
{/if}
|
||||||
|
<Button type="secondary" on:click={() => sendFriendRequest(usernameBeingViewed)}>Add Friend</Button>
|
||||||
</div>
|
</div>
|
||||||
{:else}
|
{:else}
|
||||||
<div class="placeholder">
|
<div class="placeholder">
|
||||||
|
|||||||
Reference in New Issue
Block a user