fixed a whole bunch of things, better logic for blocking, more reactive front, you can't double friend someone who has friended you anymore, path to display just one user other than you, cleaned up comments and commented out console.logs
This commit is contained in:
@@ -15,14 +15,13 @@ export class FriendshipController {
|
||||
@UseGuards(AuthenticateGuard)
|
||||
@UseGuards(TwoFactorGuard)
|
||||
findOne(@Query('username') otherUsername: string, @Req() req) {
|
||||
console.log('GET myfriends')
|
||||
// console.log('GET myfriends')
|
||||
const user = req.user;
|
||||
if (otherUsername !== undefined) {
|
||||
console.log('my friend: ' + otherUsername)
|
||||
// console.log('my friend: ' + otherUsername)
|
||||
return this.friendshipService.findOneRelationshipByUsername(otherUsername, user.username);
|
||||
}
|
||||
return this.friendshipService.findAllFriendships(user.id);
|
||||
// return this.friendshipService.findAllFriends(user.id);
|
||||
}
|
||||
|
||||
// POST http://transcendance:8080/api/v2/network/relations
|
||||
@@ -31,10 +30,10 @@ export class FriendshipController {
|
||||
@UseGuards(AuthenticateGuard)
|
||||
@UseGuards(TwoFactorGuard)
|
||||
create(@Body() createFriendshipDto: CreateFriendshipDto, @Req() req) {
|
||||
console.log('friendship.service create')
|
||||
// console.log('friendship.service create')
|
||||
const user = req.user;
|
||||
if (user.username !== createFriendshipDto.receiverUsername) {
|
||||
console.log('friendship.service create have a receiver name')
|
||||
// console.log('friendship.service create have a receiver name')
|
||||
return this.friendshipService.create(createFriendshipDto, user);
|
||||
}
|
||||
return new HttpException('You can\'t request a frienship to yourself', HttpStatus.BAD_REQUEST);
|
||||
@@ -73,7 +72,7 @@ export class FriendshipController {
|
||||
@UseGuards(TwoFactorGuard)
|
||||
remove(@Param('relationshipId') relationshipId: number, @Req() req) {
|
||||
const user : User = req.user;
|
||||
console.log('deleting a friendship')
|
||||
// console.log('deleting a friendship')
|
||||
return this.friendshipService.removeFriendship(relationshipId, user);
|
||||
}
|
||||
|
||||
@@ -100,21 +99,13 @@ export class FriendshipController {
|
||||
@UseGuards(AuthenticateGuard)
|
||||
@UseGuards(TwoFactorGuard)
|
||||
findBlocked(@Query('relationshipId') relationshipId: number, @Req() req) {
|
||||
console.log('friendship.controller fetching blocked users')
|
||||
console.log(relationshipId)
|
||||
// console.log('friendship.controller fetching blocked users')
|
||||
// console.log(relationshipId)
|
||||
const user = req.user;
|
||||
// if (relationshipId === undefined)
|
||||
if (Number.isNaN(relationshipId))
|
||||
return this.friendshipService.findAllBlockedFriends(user.id);
|
||||
else
|
||||
return this.friendshipService.findOneBlocked(relationshipId, user.id);
|
||||
}
|
||||
|
||||
// @Get('blocked/:relationshipId')
|
||||
// @UseGuards(AuthenticateGuard)
|
||||
// @UseGuards(TwoFactorGuard)
|
||||
// findOneBlocked(@Param('relationshipId') relationshipId: string, @Req() req) {
|
||||
// const user = req.user;
|
||||
// return this.friendshipService.findOneBlocked(relationshipId, user.username);
|
||||
// }
|
||||
}
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
import { HttpException, HttpStatus, Injectable } from '@nestjs/common';
|
||||
import { InjectRepository } from '@nestjs/typeorm';
|
||||
import { User } from 'src/users/entities/user.entity';
|
||||
|
||||
import { SendableUser } from 'src/users/sendableUsers';
|
||||
|
||||
import { Repository, Brackets } from 'typeorm';
|
||||
import { CreateFriendshipDto } from './dto/create-friendship.dto';
|
||||
import { Friendship, FriendshipStatus } from './entities/friendship.entity';
|
||||
@@ -17,20 +19,6 @@ export class FriendshipService {
|
||||
private readonly userRepository: Repository<User>,
|
||||
) { }
|
||||
|
||||
|
||||
// createSendableFriendship(friendship: Friendship): SendableFriendship {
|
||||
// let ret = new SendableFriendship;
|
||||
|
||||
// ret.id = friendship.id;
|
||||
// ret.date = friendship.date
|
||||
// ret.senderUsername = friendship.sender.username;
|
||||
// ret.senderId = friendship.sender.id;
|
||||
// ret.receiverUsername = friendship.receiver.username;
|
||||
// ret.receiverId = friendship.receiver.id;
|
||||
// ret.status = friendship.status;
|
||||
// return ret;
|
||||
// };
|
||||
|
||||
//kinda useless but someone else might use it
|
||||
async findOneRelationshipById(friendId : number, userId : number) {
|
||||
const friendship = await this.friendshipRepository
|
||||
@@ -49,6 +37,7 @@ export class FriendshipService {
|
||||
new Brackets((subBQb) => {
|
||||
subBQb.where('sender.id = :friendId2', {friendId2 : friendId})
|
||||
.andWhere('receiver.id = :userId2', {userId2 : userId})
|
||||
.andWhere('friendship.status != :status', {status : FriendshipStatus.BLOCKED})
|
||||
})
|
||||
)
|
||||
}),
|
||||
@@ -56,14 +45,12 @@ export class FriendshipService {
|
||||
// .andWhere('friendship.status != :status', {status : FriendshipStatus.BLOCKED})
|
||||
.getOne()
|
||||
|
||||
console.log('END Find one friend by ID: ')
|
||||
console.log({...friendship})
|
||||
// console.log('END Find one friend by ID: ')
|
||||
// console.log({...friendship})
|
||||
|
||||
if (!friendship) {
|
||||
throw new HttpException(`There is no such friendship`, HttpStatus.NOT_FOUND);
|
||||
}
|
||||
// return friendship;
|
||||
// return this.createSendableFriendship(friendship);
|
||||
return new SendableFriendship(friendship);
|
||||
}
|
||||
|
||||
@@ -85,6 +72,7 @@ export class FriendshipService {
|
||||
new Brackets((subBQb) => {
|
||||
subBQb.where('sender.username = :friendUsername2', {friendUsername2 : friendUsername})
|
||||
.andWhere('receiver.username = :username2', {username2 : username})
|
||||
.andWhere('friendship.status != :status', {status : FriendshipStatus.BLOCKED})
|
||||
})
|
||||
)
|
||||
}),
|
||||
@@ -92,18 +80,15 @@ export class FriendshipService {
|
||||
// .andWhere('friendship.status != :status', {status : FriendshipStatus.BLOCKED})
|
||||
.getOne()
|
||||
|
||||
console.log('END Find one friend by username: ')
|
||||
console.log({...friendship})
|
||||
// console.log('END Find one friend by username: ')
|
||||
// console.log({...friendship})
|
||||
|
||||
if (!friendship) {
|
||||
throw new HttpException(`There is no such friendship`, HttpStatus.NOT_FOUND);
|
||||
}
|
||||
// return friendship;
|
||||
return new SendableFriendship(friendship);
|
||||
}
|
||||
|
||||
// maybe i should be returning a list of users not a list of friendships
|
||||
// async findAllFriends(userId: number) {
|
||||
async findAllFriendships(userId: number) {
|
||||
const friendships = await this.friendshipRepository
|
||||
.createQueryBuilder('friendship')
|
||||
@@ -114,35 +99,17 @@ export class FriendshipService {
|
||||
.orWhere('sender.id = :requester', { requester: userId })
|
||||
.andWhere('friendship.status = :status', { status: FriendshipStatus.ACCEPTED })
|
||||
.getMany();
|
||||
// for (const friend of friendship)
|
||||
// console.log("FRIENDSHIP : " + friend.status);
|
||||
// return friendship;
|
||||
|
||||
let sendFrienships: SendableFriendship[] = [];
|
||||
for (const friendship of friendships) {
|
||||
sendFrienships.push(new SendableFriendship(friendship));
|
||||
}
|
||||
// return new SendableFriendship(friendship);
|
||||
console.log('friendship.service my friends:')
|
||||
console.log({...sendFrienships})
|
||||
// console.log('friendship.service my friends:')
|
||||
// console.log({...sendFrienships})
|
||||
return sendFrienships;
|
||||
|
||||
// let sendFriends: SendableUser[] = [];
|
||||
// for (const friendship of friendships) {
|
||||
// let user: User;
|
||||
// if (friendship.sender.id !== userId)
|
||||
// user = friendship.sender;
|
||||
// else
|
||||
// user = friendship.receiver;
|
||||
// sendFriends.push(new SendableUser(user));
|
||||
// }
|
||||
// console.log('friendship.service my friends as Users:')
|
||||
// console.log({...sendFriends})
|
||||
// return sendFriends;
|
||||
|
||||
}
|
||||
|
||||
async findOneBlocked(friendshipId: number, userId: number) {
|
||||
// const friendship = await this.friendshipRepository.findOneBy({ id: friendshipId, sender.id: userId, status: FriendshipStatus.BLOCKED });
|
||||
const friendship = await this.friendshipRepository
|
||||
.createQueryBuilder('friendship')
|
||||
.leftJoinAndSelect('friendship.sender', 'sender')
|
||||
@@ -153,11 +120,9 @@ export class FriendshipService {
|
||||
.getOne();
|
||||
if (!friendship)
|
||||
throw new HttpException(`The requested blocked not found.`, HttpStatus.NOT_FOUND);
|
||||
// return friendship;
|
||||
return new SendableFriendship(friendship);
|
||||
}
|
||||
|
||||
|
||||
async findOneBlockedByUsername(blockedUsername : string, userId : number) {
|
||||
const friendship = await this.friendshipRepository
|
||||
.createQueryBuilder('friendship')
|
||||
@@ -181,21 +146,20 @@ export class FriendshipService {
|
||||
.where('sender.id = :requestee', { requestee: userId })
|
||||
.andWhere('friendship.status = :status', { status: FriendshipStatus.BLOCKED })
|
||||
.getMany();
|
||||
|
||||
// let partialFriendship : Partial<Friendship>[] = [];
|
||||
// for (const friendship of friendships) {
|
||||
// partialFriendship.push({id: friendship.id, date: friendship.date, senderUsername: friendship.senderUsername, receiverUsername: friendship.receiverUsername, status: friendship.status});
|
||||
// }
|
||||
console.log('friendship.service findAllBlockedFriends, friendships:')
|
||||
console.log({...friendships})
|
||||
console.log('friendship.service findAllBlockedFriends, partial friendship:')
|
||||
// console.log({...partialFriendship})
|
||||
// console.log('friendship.service findAllBlockedFriends, friendships:')
|
||||
// console.log({...friendships})
|
||||
// console.log('friendship.service findAllBlockedFriends, partial friendship:')
|
||||
// return partialFriendship;
|
||||
// return friendships;
|
||||
|
||||
let sendFrienships: SendableFriendship[] = []
|
||||
for (const friendship of friendships) {
|
||||
sendFrienships.push(new SendableFriendship(friendship));
|
||||
}
|
||||
// return new SendableFriendship(friendship);
|
||||
return sendFrienships;
|
||||
}
|
||||
|
||||
@@ -208,8 +172,8 @@ export class FriendshipService {
|
||||
.andWhere('friendship.status = :status', { status: FriendshipStatus.REQUESTED })
|
||||
.getMany();
|
||||
|
||||
console.log('friendships services pendant friendships:')
|
||||
console.log({...friendships})
|
||||
// console.log('friendships services pendant friendships:')
|
||||
// console.log({...friendships})
|
||||
|
||||
let sendFrienships: SendableFriendship[] = []
|
||||
for (const friendship of friendships) {
|
||||
@@ -227,8 +191,8 @@ export class FriendshipService {
|
||||
.andWhere('friendship.status = :status', { status: FriendshipStatus.REQUESTED })
|
||||
.getMany();
|
||||
|
||||
console.log('friendship service received requests')
|
||||
console.log({...friendships})
|
||||
// console.log('friendship service received requests')
|
||||
// console.log({...friendships})
|
||||
|
||||
let sendFrienships: SendableFriendship[] = []
|
||||
for (const friendship of friendships) {
|
||||
@@ -237,22 +201,16 @@ export class FriendshipService {
|
||||
return sendFrienships;
|
||||
}
|
||||
|
||||
// this is no longer the right return
|
||||
// async create(createFriendshipDto: CreateFriendshipDto, creator : User) : Promise <Partial<Friendship>> {
|
||||
async create(createFriendshipDto: CreateFriendshipDto, creator : User) {
|
||||
console.log("DTO : \n")
|
||||
console.log({...createFriendshipDto})
|
||||
// console.log("DTO : \n")
|
||||
// console.log({...createFriendshipDto})
|
||||
|
||||
// These throws don't seem to work...
|
||||
const receiver = await this.userRepository.findOneBy({username: createFriendshipDto.receiverUsername});
|
||||
// console.log('receiver: ')
|
||||
// console.log({...receiver})
|
||||
if (!receiver)
|
||||
throw new HttpException(`The addressee does not exist.`, HttpStatus.NOT_FOUND);
|
||||
if (createFriendshipDto.status !== FriendshipStatus.REQUESTED && createFriendshipDto.status !== FriendshipStatus.BLOCKED)
|
||||
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
|
||||
.createQueryBuilder('friendship')
|
||||
@@ -260,54 +218,45 @@ export class FriendshipService {
|
||||
.leftJoinAndSelect('friendship.receiver', 'receiver')
|
||||
.where('sender.id = :senderId', {senderId: creator.id})
|
||||
.andWhere('receiver.id = :receiverId', {receiverId: receiver.id})
|
||||
.orWhere('sender.id = :senderId2', {senderId2: receiver.id})
|
||||
.andWhere('receiver.id = :receiverId2', {receiverId2: creator.id})
|
||||
.getOne();
|
||||
|
||||
console.log('friendship.service create, friendship: \n\n\n')
|
||||
// console.log('friendship.service create, friendship: \n\n\n')
|
||||
// console.log({...friendship})
|
||||
|
||||
if (friendship) {
|
||||
console.log('there is already a friend request')
|
||||
// console.log('there is already a friend request')
|
||||
|
||||
if (friendship.status && friendship.status === FriendshipStatus.ACCEPTED)
|
||||
throw new HttpException(`The friendship request has already been accepted.`, HttpStatus.OK);
|
||||
else if (friendship.status && friendship.status === FriendshipStatus.REQUESTED)
|
||||
throw new HttpException(`The friendship request has already been sent the ${friendship.date}.`, HttpStatus.OK);
|
||||
else if (friendship.status && friendship.status === FriendshipStatus.BLOCKED)
|
||||
else if (friendship.status && friendship.status === FriendshipStatus.REQUESTED) {
|
||||
if (friendship && friendship.sender && friendship.sender.id === creator.id) {
|
||||
throw new HttpException(`The friendship request has already been sent the ${friendship.date}.`, HttpStatus.OK);
|
||||
} else {
|
||||
|
||||
// console.log('the friend request is being updated to Accepted')
|
||||
|
||||
friendship.status = FriendshipStatus.ACCEPTED;
|
||||
const saveAFriendship = await this.friendshipRepository.save(friendship);
|
||||
return new SendableFriendship(saveAFriendship);
|
||||
}
|
||||
} else if (friendship.status && friendship.status === FriendshipStatus.BLOCKED)
|
||||
throw new HttpException(`We can't do that`, HttpStatus.OK);
|
||||
else if (friendship.status && friendship.status === FriendshipStatus.DECLINED)
|
||||
throw new HttpException(`The request has been declined.`, HttpStatus.OK);
|
||||
}
|
||||
console.log('friendship.service create, we are still saving a new friendship')
|
||||
// console.log('friendship.service create, we are still saving a new friendship')
|
||||
|
||||
const newFriendship = new Friendship();
|
||||
newFriendship.sender = creator;
|
||||
// newFriendship.senderUsername = creator.username;
|
||||
// newFriendship.senderId = creator.id;
|
||||
newFriendship.receiver = receiver;
|
||||
// newFriendship.receiverUsername = receiver.username;
|
||||
// newFriendship.receiverId = receiver.id;
|
||||
newFriendship.status = createFriendshipDto.status;
|
||||
const savedFriendship = await this.friendshipRepository.save(newFriendship);
|
||||
// const partialFriendship : Partial<Friendship> = {
|
||||
// id : (await savedFriendship).id,
|
||||
// date : (await savedFriendship).date,
|
||||
// receiverUsername: (await savedFriendship).receiverUsername,
|
||||
// receiverId: (await savedFriendship).receiverId,
|
||||
// status : (await savedFriendship).status
|
||||
// }
|
||||
// console.log('friendship.service create friendship, partial friendship')
|
||||
// console.log({...partialFriendship})
|
||||
// console.log('friendship.service create friendship, NEW friendship')
|
||||
// console.log({...newFriendship})
|
||||
// console.log('friendship.service create friendship, SAVED friendship')
|
||||
// console.log({...savedFriendship})
|
||||
// return partialFriendship;
|
||||
return new SendableFriendship(savedFriendship);
|
||||
}
|
||||
|
||||
async acceptFriendship(relationshipId: number, user: User) {
|
||||
// const relation = await this.friendshipRepository.findOneBy({id: relationshipId });
|
||||
|
||||
|
||||
const relation = await this.friendshipRepository
|
||||
.createQueryBuilder('friendship')
|
||||
.leftJoinAndSelect('friendship.sender', 'sender')
|
||||
@@ -315,8 +264,9 @@ export class FriendshipService {
|
||||
.where('friendship.id = :friendshipId', { friendshipId: relationshipId })
|
||||
.getOne();
|
||||
|
||||
console.log('.service accept friendship')
|
||||
console.log({...relation})
|
||||
// console.log('.service accept friendship')
|
||||
// console.log({...relation})
|
||||
|
||||
if (!relation)
|
||||
throw new HttpException(`The requested relationship not found.`, HttpStatus.NOT_FOUND);
|
||||
if (relation.sender.id === user.id) {
|
||||
@@ -324,17 +274,6 @@ export class FriendshipService {
|
||||
}
|
||||
relation.status = FriendshipStatus.ACCEPTED;
|
||||
const savedFriendship = await this.friendshipRepository.save(relation);
|
||||
// const partialFriendship : Partial<Friendship> = {
|
||||
// id : (await savedFriendship).id,
|
||||
// date : (await savedFriendship).date,
|
||||
// receiverUsername: (await savedFriendship).receiverUsername,
|
||||
// receiverId: (await savedFriendship).receiverId,
|
||||
// status : (await savedFriendship).status
|
||||
// }
|
||||
// console.log('.service accept friendship END')
|
||||
// console.log({...partialFriendship})
|
||||
|
||||
// return partialFriendship;
|
||||
return new SendableFriendship(savedFriendship);
|
||||
}
|
||||
|
||||
@@ -355,45 +294,28 @@ export class FriendshipService {
|
||||
return new SendableFriendship(savedFriendship);
|
||||
}
|
||||
|
||||
// Ok i decided you can't block someone who has already blocked you (cuz then you could unblock them and then they're blocking you would no longer apply, in a way negating their blocking of you.
|
||||
async blockFriendship(relationshipId: number, user: User) {
|
||||
const relation = await this.friendshipRepository
|
||||
.createQueryBuilder('friendship')
|
||||
.leftJoinAndSelect('friendship.sender', 'sender')
|
||||
.leftJoinAndSelect('friendship.receiver', 'receiver')
|
||||
.where('friendship.id = :friendshipId', { friendshipId: relationshipId })
|
||||
.andWhere('friendship.status != :friendshipStatus', { friendshipStatus: FriendshipStatus.BLOCKED })
|
||||
.getOne();
|
||||
if (!relation)
|
||||
throw new HttpException(`The requested relationship not found.`, HttpStatus.NOT_FOUND);
|
||||
|
||||
// do i need to check if they've already been blocked?
|
||||
|
||||
if (relation.receiver.id === user.id) {
|
||||
// throw new HttpException(`You can't block yourself.`, HttpStatus.NOT_FOUND);
|
||||
console.log('friendship.service blockFriendship trying to delete and recreate a friendship with block')
|
||||
console.log({...relation})
|
||||
// const newFriendshipDto = new CreateFriendshipDto(relation[0].receiver, FriendshipStatus.BLOCKED)
|
||||
// const newFriendshipDto = new CreateFriendshipDto({"receiverUsername": relation[0].receiver, "status": "R"})
|
||||
// we create a new one where you are the sender
|
||||
// in the case where you RECEIVED the friendship but now want to block that person
|
||||
if (relation.receiver && relation.receiver.id === user.id) {
|
||||
// console.log('friendship.service blockFriendship trying to delete and recreate a friendship with block')
|
||||
// console.log({...relation})
|
||||
const newFriendshipDto = {"receiverUsername": relation.sender.username, "receiverId": relation.sender.id, "status": FriendshipStatus.BLOCKED};
|
||||
// can't do it this way cuz READONLY
|
||||
// const newFriendshipDto = new CreateFriendshipDto();
|
||||
// newFriendshipDto.receiverUsername = relation[0].sender.username;
|
||||
// newFriendshipDto.status = FriendshipStatus.BLOCKED;
|
||||
// we delete that relation
|
||||
await this.removeFriendship(relationshipId, user);
|
||||
// we set it to blocked like we do below...
|
||||
return await this.create(newFriendshipDto, user);
|
||||
} else {
|
||||
relation.status = FriendshipStatus.BLOCKED;
|
||||
const savedFriendship = await this.friendshipRepository.save(relation);
|
||||
// const partialFriendship : Partial<Friendship> = {
|
||||
// id : (await savedFriendship).id,
|
||||
// date : (await savedFriendship).date,
|
||||
// receiverUsername: (await savedFriendship).receiverUsername,
|
||||
// receiverId: (await savedFriendship).receiverId,
|
||||
// status : (await savedFriendship).status
|
||||
// }
|
||||
// return partialFriendship
|
||||
return new SendableFriendship(savedFriendship);
|
||||
}
|
||||
}
|
||||
@@ -405,25 +327,21 @@ export class FriendshipService {
|
||||
.leftJoinAndSelect('friendship.receiver', 'receiver')
|
||||
.where('friendship.id = :friendshipId', { friendshipId: relationshipId })
|
||||
.getOne();
|
||||
console.log('deleting a friendship .service')
|
||||
console.log({...friendship})
|
||||
console.log('who is the user')
|
||||
console.log({...user})
|
||||
if (!friendship)
|
||||
throw new HttpException(`Your friend could not be deleted.`, HttpStatus.NOT_FOUND);
|
||||
if (friendship.sender.id !== user.id && friendship.receiver.id !== user.id) {
|
||||
throw new HttpException(`You can't do that.`, HttpStatus.FORBIDDEN);
|
||||
}
|
||||
console.log('.service deleted a friendship')
|
||||
}
|
||||
|
||||
// console.log('.service deleted a friendship')
|
||||
|
||||
return this.friendshipRepository.remove(friendship);
|
||||
// what is the return here? am i getting something right?
|
||||
}
|
||||
|
||||
// ok for some reason this isn't working...
|
||||
async findIfUserIsBlockedOrHasBlocked(userConnectedId: number, userToFindId: number) {
|
||||
console.log("finding if user is blocked")
|
||||
console.log('user connected: ' + userConnectedId)
|
||||
console.log('user to find: ' + userToFindId)
|
||||
// console.log("finding if user is blocked")
|
||||
// console.log('user connected: ' + userConnectedId)
|
||||
// console.log('user to find: ' + userToFindId)
|
||||
|
||||
const friendship = await this.friendshipRepository
|
||||
.createQueryBuilder('friendship')
|
||||
@@ -449,13 +367,16 @@ export class FriendshipService {
|
||||
.getOne()
|
||||
|
||||
|
||||
console.log('printing friendship queried')
|
||||
console.log({...friendship})
|
||||
// console.log('printing friendship queried')
|
||||
// console.log({...friendship})
|
||||
|
||||
if (friendship) {
|
||||
console.log('we are blocked in friendship.service')
|
||||
return true;
|
||||
}
|
||||
console.log('we are not blocked in friendship service')
|
||||
|
||||
// console.log('we are not blocked in friendship service')
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,24 +37,7 @@ export class UsersController {
|
||||
* car un utilisateur est crée à la première connexion avec l'Oauth de 42.
|
||||
*/
|
||||
|
||||
// actually fucking useless now...
|
||||
// similar to @Get('myfriends/:friendUsername') but doesn't return a friendship just returns the user profile
|
||||
// GET http://transcendance:8080/user?username=NomDuUser
|
||||
// @UseGuards(AuthenticateGuard)
|
||||
// @UseGuards(TwoFactorGuard)
|
||||
// @Get()
|
||||
// findOne(@Query('id') toFindId: number, @Req() req) {
|
||||
// if (toFindId === undefined) {
|
||||
// console.log("Backend Getting current user");
|
||||
// return this.usersService.findOne(req.user.id);
|
||||
// } else {
|
||||
// const user : User = req.user;
|
||||
// console.log('we have a query: ' + toFindId)
|
||||
// return this.usersService.findOneById(user.id, toFindId);
|
||||
// }
|
||||
// }
|
||||
|
||||
// GET http://transcendance:8080/user
|
||||
@UseGuards(AuthenticateGuard)
|
||||
@UseGuards(TwoFactorGuard)
|
||||
@Get()
|
||||
@@ -69,16 +52,6 @@ export class UsersController {
|
||||
return this.usersService.findOne(usernameToFind);
|
||||
}
|
||||
|
||||
// also seems useless...
|
||||
// GET http://transcendance:8080/user/stats
|
||||
// @UseGuards(AuthenticateGuard)
|
||||
// @UseGuards(TwoFactorGuard)
|
||||
// @Get('stats')
|
||||
// getStats(@Req() request) {
|
||||
// return this.usersService.getStats(request.user.id);
|
||||
// }
|
||||
|
||||
|
||||
// PATCH http://transcendance:8080/user
|
||||
@UseGuards(AuthenticateGuard)
|
||||
@UseGuards(TwoFactorGuard)
|
||||
|
||||
@@ -22,23 +22,25 @@ export class UsersService {
|
||||
const user = await this.userRepository.findOneBy({fortyTwoId: fortytwo_id});
|
||||
if (!user)
|
||||
{
|
||||
console.log(`The requested user not found.`);
|
||||
// console.log(`The requested user not found.`);
|
||||
return null;
|
||||
}
|
||||
console.log(`The requested user found.`);
|
||||
// console.log(`The requested user found.`);
|
||||
return user;
|
||||
}
|
||||
|
||||
async findOne(username: string) {
|
||||
console.log(`FIND ONE USER SERVICE Find user ${username}`);
|
||||
// console.log(`FIND ONE USER SERVICE Find user ${username}`);
|
||||
|
||||
const user = await this.userRepository.createQueryBuilder('user')
|
||||
.leftJoinAndSelect('user.stats', 'stats')
|
||||
.where('user.username = :username', { username: username })
|
||||
.getOne();
|
||||
if (!user)
|
||||
throw new NotFoundException(`The requested user not found.`);
|
||||
console.log(`FIND ONE USER SERVICE The requested user found. ` + user.username + " "
|
||||
+ user.stats.id + user.stats.winGame + user.stats.loseGame + user.stats.drawGame + user.stats.totalGame);
|
||||
|
||||
// console.log(`FIND ONE USER SERVICE The requested user found. ` + user.username + " " + user.stats.id + user.stats.winGame + user.stats.loseGame + user.stats.drawGame + user.stats.totalGame);
|
||||
|
||||
const partialUser : Partial<User> = {
|
||||
username: user.username,
|
||||
image_url: user.image_url,
|
||||
@@ -46,21 +48,25 @@ export class UsersService {
|
||||
status: user.status,
|
||||
stats: user.stats,
|
||||
};
|
||||
console.log(`Returned Partial User.` + partialUser.username + user.username);
|
||||
|
||||
// console.log(`Returned Partial User.` + partialUser.username + user.username);
|
||||
|
||||
return partialUser;
|
||||
}
|
||||
|
||||
async isUsernameExists(usernameToSearch: string): Promise<boolean> {
|
||||
console.log('searching for username: ' + usernameToSearch)
|
||||
// console.log('searching for username: ' + usernameToSearch)
|
||||
|
||||
const user = await this.userRepository.findOneBy({username : usernameToSearch});
|
||||
console.log({...user})
|
||||
|
||||
// console.log({...user})
|
||||
|
||||
if (!user)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
async findAll(currentUser: User) {
|
||||
// const otherUsers = await this.userRepository.find({where: {id: Not(+currentUser.id)}, order: {username: "ASC"}, skip: offset, take: limit,});
|
||||
const otherUsers = await this.userRepository.find({where: {id: Not(+currentUser.id)}, order: {username: "ASC"}});
|
||||
|
||||
let partialUsers : Partial<User>[] = [];
|
||||
@@ -76,8 +82,10 @@ export class UsersService {
|
||||
partialUsers.push({username: otherUser.username, image_url: otherUser.image_url, status: otherUser.status, stats: otherUser.stats});
|
||||
}
|
||||
}
|
||||
console.log('user.services findAll, partialUsers:')
|
||||
console.log({...partialUsers})
|
||||
|
||||
// console.log('user.services findAll, partialUsers:')
|
||||
// console.log({...partialUsers})
|
||||
|
||||
return partialUsers;
|
||||
}
|
||||
|
||||
@@ -97,7 +105,7 @@ export class UsersService {
|
||||
// console.log(`Update user ${id} with ${updateUserDto.isEnabledTwoFactorAuth}`);
|
||||
// console.log({...updateUserDto})
|
||||
if (await this.isUsernameExists(updateUserDto.username) === true) {
|
||||
console.log('updating username ' + updateUserDto.username + ' but it already is in use')
|
||||
// console.log('updating username ' + updateUserDto.username + ' but it already is in use')
|
||||
throw new HttpException(`The username is already in use.`,HttpStatus.CONFLICT);
|
||||
}
|
||||
const user = await this.userRepository.preload(
|
||||
@@ -140,7 +148,6 @@ export class UsersService {
|
||||
}
|
||||
|
||||
// doing search with username not id because userService.findOne doesn't return an Id anymore, just username... fuck this architecture is big trash...
|
||||
// async getAvatarUrl(id: number) {
|
||||
async getAvatarUrl(username: string) {
|
||||
const user = await this.userRepository.findOneBy({username: username});
|
||||
if (!user)
|
||||
|
||||
@@ -1,38 +1,30 @@
|
||||
<script lang="ts">
|
||||
|
||||
import { onMount, afterUpdate } from 'svelte';
|
||||
/* ProfileDisplayOneUser is the same as DisplayAUser except sources the username from params from router rather than
|
||||
from a regular var. But yea it's functionally identical, seemed easier to just have a duplicate rather than figuring
|
||||
out how to get a more complicated things to do 2 jobs.*/
|
||||
|
||||
|
||||
import { onMount } from 'svelte';
|
||||
import GenerateUserDisplay from '../../pieces/GenerateUserDisplay.svelte';
|
||||
|
||||
// export let aUsername;
|
||||
export let params;
|
||||
let user;
|
||||
|
||||
onMount( async() => {
|
||||
|
||||
console.log('Display One User username: '+ params.username)
|
||||
//`http://${process.env.WEBSITE_HOST}:${process.env.WEBSITE_PORT}/api/v2/user?username=NomDuUserATrouve`
|
||||
// user = await fetch(`http://${process.env.WEBSITE_HOST}:${process.env.WEBSITE_PORT}/api/v2/user?username=${aUsername}`)
|
||||
// console.log('Display One User username: '+ params.username)
|
||||
|
||||
user = await fetch(`http://${process.env.WEBSITE_HOST}:${process.env.WEBSITE_PORT}/api/v2/user?username=${params.username}`)
|
||||
.then( (x) => x.json() );
|
||||
console.log('in display ONE user')
|
||||
console.log({...user})
|
||||
})
|
||||
|
||||
// export const updateUser = async() => {
|
||||
// // console.log('Display Update aUser username: '+ aUsername)
|
||||
// // http://transcendance:8080/api/v2/user?username=NomDuUserATrouver
|
||||
// // user = await fetch(`http://transcendance:8080/api/v2/user?username=${aUsername}`)
|
||||
// user = await fetch(`http://${process.env.WEBSITE_HOST}:${process.env.WEBSITE_PORT}/api/v2/user?username=${params.username}`)
|
||||
// .then( (x) => x.json() );
|
||||
// };
|
||||
|
||||
// $: aUsername, updateUser();
|
||||
// $: params.username, updateUser();
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<div class="background-pages">
|
||||
{#if user !== undefined}
|
||||
<GenerateUserDisplay user={user}/>
|
||||
{:else}
|
||||
@@ -40,7 +32,7 @@
|
||||
<div>Failed to load user {params.username}</div>
|
||||
{/if}
|
||||
|
||||
<!-- This is where i might toss in an Invite to Game button ? -->
|
||||
|
||||
<style>
|
||||
</div>
|
||||
|
||||
</style>
|
||||
|
||||
@@ -1,21 +1,17 @@
|
||||
<script lang="ts">
|
||||
|
||||
import { onMount } from "svelte";
|
||||
import { binding_callbacks, empty } from "svelte/internal"; // WTF is this?
|
||||
import Button from "../../pieces/Button.svelte";
|
||||
import DisplayAUser from "../../pieces/DisplayAUser.svelte";
|
||||
import Tabs from "../../pieces/Tabs.svelte";
|
||||
|
||||
let errors = {friendRequest: '',};
|
||||
let set = {friendUsername: ''}
|
||||
|
||||
let user;
|
||||
let allUsers;
|
||||
let myFriendships;
|
||||
let requestsMade, requestsRecieved;
|
||||
let blockedUsers;
|
||||
let usernameBeingViewed;
|
||||
let friendshipStatusFull; // id, date, senderUsername, reveiverUsername, status
|
||||
let friendshipStatusFull; // date, reveiverUsername, status
|
||||
|
||||
/**** Layout variables ****/
|
||||
let tabItems: string[] = ['All Users', 'My Friends', 'Friend Requests', 'Blocked Users']
|
||||
@@ -23,7 +19,6 @@
|
||||
|
||||
|
||||
onMount( async() => {
|
||||
|
||||
user = await fetch(`http://${process.env.WEBSITE_HOST}:${process.env.WEBSITE_PORT}/api/v2/user`)
|
||||
.then( (x) => x.json() );
|
||||
|
||||
@@ -45,6 +40,16 @@
|
||||
.then( x => x.json() );
|
||||
console.log('got all users ')
|
||||
console.log({...allUsers})
|
||||
if (usernameBeingViewed !== undefined) {
|
||||
let found = allUsers.find(e => e.username === usernameBeingViewed);
|
||||
// console.log("SEARCHING ALL USERS: ")
|
||||
// console.log({...found})
|
||||
if (found === undefined) {
|
||||
// console.log('none found')
|
||||
usernameBeingViewed = undefined;
|
||||
friendshipStatusFull = undefined;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// it's more like fetch friendships
|
||||
@@ -52,6 +57,7 @@
|
||||
const fetchMyFriendships = async() => {
|
||||
myFriendships = await fetch(`http://${process.env.WEBSITE_HOST}:${process.env.WEBSITE_PORT}/api/v2/network/myfriends`)
|
||||
.then( x => x.json() );
|
||||
|
||||
console.log('got my friends ')
|
||||
console.log({...myFriendships})
|
||||
};
|
||||
@@ -59,6 +65,7 @@
|
||||
const fetchRequestsMade = async() => {
|
||||
requestsMade = await fetch(`http://${process.env.WEBSITE_HOST}:${process.env.WEBSITE_PORT}/api/v2/network/pending`)
|
||||
.then( x => x.json() );
|
||||
|
||||
console.log('got requests made ')
|
||||
console.log({...requestsMade})
|
||||
};
|
||||
@@ -66,6 +73,7 @@
|
||||
const fetchRequestsReceived = async() => {
|
||||
requestsRecieved = await fetch(`http://${process.env.WEBSITE_HOST}:${process.env.WEBSITE_PORT}/api/v2/network/received`)
|
||||
.then( x => x.json() );
|
||||
|
||||
console.log('got requests received ')
|
||||
console.log({...requestsRecieved})
|
||||
};
|
||||
@@ -73,6 +81,7 @@
|
||||
const fetchBlockedUsers = async() => {
|
||||
blockedUsers = await fetch(`http://${process.env.WEBSITE_HOST}:${process.env.WEBSITE_PORT}/api/v2/network/blocked`)
|
||||
.then( x => x.json() );
|
||||
|
||||
console.log('got blocked users, is it empty?')
|
||||
console.log({...blockedUsers})
|
||||
console.log(Object.keys(blockedUsers))
|
||||
@@ -83,8 +92,10 @@
|
||||
const fetchFriendshipFull = async(aUsername) => {
|
||||
console.log('fetch friendship from a username')
|
||||
console.log(aUsername)
|
||||
|
||||
friendshipStatusFull = await fetch(`http://${process.env.WEBSITE_HOST}:${process.env.WEBSITE_PORT}/api/v2/network/myfriends?username=${aUsername}`)
|
||||
.then( x => x.json());
|
||||
|
||||
console.log({...friendshipStatusFull})
|
||||
};
|
||||
|
||||
@@ -92,6 +103,7 @@
|
||||
const sendFriendRequest = async(aUsername) => {
|
||||
console.log('sending a friend request')
|
||||
console.log(aUsername)
|
||||
|
||||
const resp = await fetch(`http://${process.env.WEBSITE_HOST}:${process.env.WEBSITE_PORT}/api/v2/network/relations`, {
|
||||
method : "POST",
|
||||
headers: { 'Content-Type': 'application/json'},
|
||||
@@ -102,17 +114,14 @@
|
||||
})
|
||||
.then( x => x.json())
|
||||
// .catch( x => console.log({...x}))
|
||||
// "status": "A"
|
||||
console.log({...resp})
|
||||
fetchFriendshipFull(aUsername);
|
||||
await fetchFriendshipFull(aUsername);
|
||||
await fetchAll();
|
||||
};
|
||||
|
||||
const viewAUser = async(aUsername) => {
|
||||
console.log('Profile Friend updating userBeingViewed')
|
||||
usernameBeingViewed = aUsername;
|
||||
|
||||
// friendshipStatusFull = undefined;
|
||||
// id, date, senderUsername, reveiverUsername, status
|
||||
usernameBeingViewed = aUsername;
|
||||
await fetchFriendshipFull(aUsername);
|
||||
|
||||
console.log('Friendship Status Full')
|
||||
@@ -125,39 +134,34 @@
|
||||
const resp = await fetch(`http://${process.env.WEBSITE_HOST}:${process.env.WEBSITE_PORT}/api/v2/network/relations/${relationshipId}/accept`, {
|
||||
method: "PATCH"})
|
||||
.then( x => x.json());
|
||||
// maybe not the most robust things, not super reusable cuz it depends on outside vars but works for now...
|
||||
console.log('accepted friend request, now response')
|
||||
console.log({...resp})
|
||||
await fetchFriendshipFull(usernameBeingViewed);
|
||||
|
||||
// will this make it reload? C'est un peu bourain... do i even need it?
|
||||
await fetchAll();
|
||||
activeTabItem = activeTabItem;
|
||||
};
|
||||
|
||||
const declineFriendRequest = async(relationshipId) => {
|
||||
console.log('decline friend request')
|
||||
|
||||
const resp = await fetch(`http://${process.env.WEBSITE_HOST}:${process.env.WEBSITE_PORT}/api/v2/network/relations/${relationshipId}/decline`, {
|
||||
method: "PATCH"})
|
||||
.then( x => x.json());
|
||||
// maybe not the most robust things, not super reusable cuz it depends on outside vars but works for now...
|
||||
console.log('declined friend request, now response')
|
||||
console.log({...resp})
|
||||
await fetchFriendshipFull(usernameBeingViewed);
|
||||
await fetchAll();
|
||||
activeTabItem = activeTabItem;
|
||||
};
|
||||
|
||||
const unfriend = async(relationshipId) => {
|
||||
console.log('Unfriend')
|
||||
|
||||
const resp = await fetch(`http://${process.env.WEBSITE_HOST}:${process.env.WEBSITE_PORT}/api/v2/network/relations/${relationshipId}`, {
|
||||
method: "DELETE"})
|
||||
.then( x => x.json());
|
||||
|
||||
// friendshipStatusFull = undefined;
|
||||
// OR
|
||||
await fetchFriendshipFull(usernameBeingViewed);
|
||||
if (Object.keys(friendshipStatusFull).length === 0)
|
||||
friendshipStatusFull = undefined;
|
||||
|
||||
// will this make it reload? C'est un peu bourain... do i even need it?
|
||||
await fetchAll();
|
||||
activeTabItem = activeTabItem;
|
||||
};
|
||||
|
||||
@@ -174,34 +178,37 @@
|
||||
})
|
||||
})
|
||||
.then( x => x.json())
|
||||
await fetchBlockedUsers();
|
||||
await fetchAllUsers();
|
||||
// await fetchBlockedUsers();
|
||||
// await fetchAllUsers();
|
||||
await fetchAll();
|
||||
usernameBeingViewed = undefined;
|
||||
friendshipStatusFull = undefined;
|
||||
|
||||
// will this make it reload?
|
||||
activeTabItem = activeTabItem;
|
||||
};
|
||||
|
||||
const blockAFriend = async(relationshipId) => {
|
||||
console.log('blocking a friend, the relationshipID')
|
||||
console.log(relationshipId)
|
||||
|
||||
const resp = await fetch(`http://${process.env.WEBSITE_HOST}:${process.env.WEBSITE_PORT}/api/v2/network/relations/${relationshipId}/block`, {method: "PATCH"})
|
||||
.then( x => x.json() );
|
||||
console.log('blocked a user response')
|
||||
console.log({...resp})
|
||||
await fetchBlockedUsers();
|
||||
await fetchAllUsers();
|
||||
// await fetchBlockedUsers();
|
||||
// await fetchAllUsers();
|
||||
await fetchAll();
|
||||
usernameBeingViewed = undefined;
|
||||
friendshipStatusFull = undefined;
|
||||
|
||||
// will this make it reload?
|
||||
// reloads active tab so you get blocked users for example
|
||||
activeTabItem = activeTabItem;
|
||||
};
|
||||
|
||||
const unblockAUser = async(relationshipId) => {
|
||||
// it's basically the same as unfriending someone cuz unfriending them means the relationship is deleted
|
||||
await unfriend(relationshipId);
|
||||
activeTabItem = activeTabItem;
|
||||
};
|
||||
|
||||
const switchTab = async(e) => {
|
||||
@@ -214,31 +221,26 @@
|
||||
await fetchRequestsReceived();
|
||||
} else if (activeTabItem === 'Blocked Users') {
|
||||
await fetchBlockedUsers();
|
||||
console.log('blocked users: ')
|
||||
console.log({...blockedUsers})
|
||||
console.log('fetching blocked users')
|
||||
}
|
||||
if (usernameBeingViewed !== undefined)
|
||||
fetchFriendshipFull(usernameBeingViewed);
|
||||
};
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<div class="background-pages">
|
||||
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
||||
<div class="background-pages">
|
||||
<div class="top-grid">
|
||||
|
||||
<!-- let tabItems: string[] = ['All Users', 'My Friends', 'Friend Requests']
|
||||
let activeTabItem: string = 'All Users'; -->
|
||||
|
||||
<!-- maybe add numbers at the botton? like for how many of each there are? -->
|
||||
|
||||
<div class="sidebar-list">
|
||||
<Tabs items={tabItems} activeItem={activeTabItem} size="small" on:tabChange={switchTab}/>
|
||||
{#if activeTabItem === 'All Users' && allUsers !== undefined}
|
||||
<h3>{activeTabItem}</h3>
|
||||
<!-- problem, i can't use user.id since Cherif doesn't want to expost that to the front...
|
||||
is there something else i could use? -->
|
||||
<!-- add a thing so it doesn't display the current user just all the other users -->
|
||||
|
||||
{#if Object.keys(allUsers).length === 0}
|
||||
<div class="tip">You are alone on this platform...</div>
|
||||
{/if}
|
||||
@@ -258,7 +260,6 @@
|
||||
{#if Object.keys(myFriendships).length === 0}
|
||||
<div class="tip">You don't have any Friends... Yet!</div>
|
||||
{/if}
|
||||
<!-- {#each myFriends as aUser (aUser.id)} -->
|
||||
{#each myFriendships as aFriendship}
|
||||
{#if aFriendship.senderUsername !== user.username}
|
||||
<div class="sidebar-item" on:click={() => viewAUser(aFriendship.senderUsername)}>{aFriendship.senderUsername}</div>
|
||||
@@ -272,7 +273,6 @@
|
||||
{#if Object.keys(requestsRecieved).length === 0}
|
||||
<div class="tip">You don't have any Friend Requests</div>
|
||||
{/if}
|
||||
<!-- {#each requestsRecieved as aUser (aUser.id)} -->
|
||||
{#each requestsRecieved as aUser}
|
||||
<div class="sidebar-item" on:click={() => viewAUser(aUser.senderUsername)}>{aUser.senderUsername}</div>
|
||||
<div class="status sidebar-item">{aUser.status}</div>
|
||||
@@ -284,7 +284,6 @@
|
||||
{#if Object.keys(blockedUsers).length === 0}
|
||||
<div class="tip">You have not Blocked any Users</div>
|
||||
{/if}
|
||||
<!-- {#each blockedUsers as aUser (aUser.id)} -->
|
||||
{#each blockedUsers as aUser}
|
||||
<div class="sidebar-item" on:click={() => viewAUser(aUser.receiverUsername)}>{aUser.receiverUsername}</div>
|
||||
<div class="status sidebar-item">{aUser.status}</div>
|
||||
@@ -296,7 +295,6 @@
|
||||
|
||||
<div class="main-display">
|
||||
{#if usernameBeingViewed !== undefined}
|
||||
<!-- <DisplayAUser aUsername={usernameBeingViewed}/> -->
|
||||
<DisplayAUser aUsername={usernameBeingViewed}/>
|
||||
|
||||
<div class="buttons-area">
|
||||
@@ -305,7 +303,6 @@
|
||||
{#if friendshipStatusFull.senderUsername === user.username}
|
||||
<div class="tile">Friend Request Sent</div>
|
||||
{:else}
|
||||
<!-- <Button type="secondary" on:click={() => acceptFriendRequest(usernameBeingViewed)}>Unfriend</Button> -->
|
||||
<Button type="secondary" on:click={() => acceptFriendRequest(friendshipStatusFull.id)}>Accept Friend Request</Button>
|
||||
<Button on:click={() => declineFriendRequest(friendshipStatusFull.id)}>Decline Friend Request</Button>
|
||||
{/if}
|
||||
@@ -331,7 +328,6 @@
|
||||
<Button type="secondary" on:click={() => sendFriendRequest(usernameBeingViewed)}>Add Friend</Button>
|
||||
<Button on:click={() => blockANonFriendUser(usernameBeingViewed)}>Block User</Button>
|
||||
{/if}
|
||||
<!-- <Button type="secondary" on:click={() => sendFriendRequest(usernameBeingViewed)}>Add Friend</Button> -->
|
||||
</div>
|
||||
{:else}
|
||||
<div class="placeholder">
|
||||
@@ -343,6 +339,8 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<style>
|
||||
|
||||
/* ok so i want a 12 column grid with a sidebar */
|
||||
|
||||
@@ -1,46 +1,32 @@
|
||||
<script lang="ts">
|
||||
|
||||
import { onMount, afterUpdate } from 'svelte';
|
||||
import { onMount } from 'svelte';
|
||||
import GenerateUserDisplay from './GenerateUserDisplay.svelte';
|
||||
|
||||
// export let aUsername;
|
||||
export let aUsername;
|
||||
let user;
|
||||
|
||||
onMount( async() => {
|
||||
// console.log('Display aUser username: '+ aUsername)
|
||||
|
||||
console.log('Display aUser username: '+ aUsername)
|
||||
//`http://${process.env.WEBSITE_HOST}:${process.env.WEBSITE_PORT}/api/v2/user?username=NomDuUserATrouve`
|
||||
// user = await fetch(`http://${process.env.WEBSITE_HOST}:${process.env.WEBSITE_PORT}/api/v2/user?username=${aUsername}`)
|
||||
user = await fetch(`http://${process.env.WEBSITE_HOST}:${process.env.WEBSITE_PORT}/api/v2/user?username=${aUsername}`)
|
||||
.then( (x) => x.json() );
|
||||
// console.log('in display a user')
|
||||
// console.log({...user})
|
||||
})
|
||||
|
||||
export const updateUser = async() => {
|
||||
// console.log('Display Update aUser username: '+ aUsername)
|
||||
// http://transcendance:8080/api/v2/user?username=NomDuUserATrouver
|
||||
// user = await fetch(`http://transcendance:8080/api/v2/user?username=${aUsername}`)
|
||||
user = await fetch(`http://${process.env.WEBSITE_HOST}:${process.env.WEBSITE_PORT}/api/v2/user?username=${aUsername}`)
|
||||
.then( (x) => x.json() );
|
||||
};
|
||||
|
||||
// $: aUsername, updateUser();
|
||||
$: aUsername, updateUser();
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<div class="background-pages">
|
||||
{#if user !== undefined}
|
||||
<GenerateUserDisplay user={user}/>
|
||||
{:else}
|
||||
<h2>Sorry</h2>
|
||||
<div>Failed to load user {aUsername}</div>
|
||||
{/if}
|
||||
|
||||
|
||||
<style>
|
||||
|
||||
</style>
|
||||
</div>
|
||||
|
||||
@@ -3,9 +3,9 @@ import NotFound from "../pages/NotFound.svelte";
|
||||
import ProfileDisplay from '../pages/profile/ProfileDisplay.svelte';
|
||||
import ProfileSettings from '../pages/profile/ProfileSettings.svelte';
|
||||
import ProfileUsers from '../pages/profile/ProfileUsers.svelte';
|
||||
import DisplayAUser from '../pieces/DisplayAUser.svelte';
|
||||
import ProfileDisplayOneUser from "../pages/profile/ProfileDisplayOneUser.svelte";
|
||||
import { wrap } from 'svelte-spa-router/wrap'
|
||||
|
||||
import DisplayAUser from '../pieces/DisplayAUser.svelte';
|
||||
|
||||
// establishing the prefix here very clearly so we can have a coherent repeatable structure
|
||||
export const prefix = '/profile';
|
||||
@@ -13,42 +13,8 @@ export const prefix = '/profile';
|
||||
export const profileRoutes = {
|
||||
'/': ProfileDisplay,
|
||||
'/settings': ProfileSettings,
|
||||
// '/friends': ProfileFriends,
|
||||
'/users': ProfileUsers,
|
||||
'/users/:username': ProfileDisplayOneUser,
|
||||
// '/friends/:username': AProfile,
|
||||
// '/users/:username': DisplayAUser,
|
||||
'*': NotFound
|
||||
};
|
||||
|
||||
// I think the conditions of access like are you authenticated work best when they are on the parent routes not the nested routes cuz i don't want my header showing up
|
||||
|
||||
// export const profileRoutes = {
|
||||
// '/': wrap({
|
||||
// component: ProfileDisplay,
|
||||
// conditions: [
|
||||
// (detail) => {
|
||||
// const { fortyTwo, tfa } = get(loginStatus);
|
||||
// console.log(fortyTwo);
|
||||
// console.log(tfa);
|
||||
// console.log('in Profile Display');
|
||||
// // return true;
|
||||
// return (fortyTwo && tfa);
|
||||
// }
|
||||
// ]
|
||||
// }),
|
||||
// '/settings': wrap({
|
||||
// component: ProfileSettings,
|
||||
// conditions: [
|
||||
// (detail) => {
|
||||
// const { fortyTwo, tfa } = get(loginStatus);
|
||||
// // console.log(fortyTwo);
|
||||
// // console.log(tfa);
|
||||
// // return true;
|
||||
// return (fortyTwo && tfa);
|
||||
// }
|
||||
// ]
|
||||
// }),
|
||||
// '*': NotFound
|
||||
// };
|
||||
|
||||
// what if i did /#/profile/:id for like not the user? and then based on that did a fetch?
|
||||
Reference in New Issue
Block a user