diff --git a/srcs/requirements/nestjs/api_back/src/friendship/friendship.controller.ts b/srcs/requirements/nestjs/api_back/src/friendship/friendship.controller.ts index 5500c0f6..641ec46a 100644 --- a/srcs/requirements/nestjs/api_back/src/friendship/friendship.controller.ts +++ b/srcs/requirements/nestjs/api_back/src/friendship/friendship.controller.ts @@ -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); - // } } diff --git a/srcs/requirements/nestjs/api_back/src/friendship/friendship.service.ts b/srcs/requirements/nestjs/api_back/src/friendship/friendship.service.ts index 7fc046a3..1219c2ba 100644 --- a/srcs/requirements/nestjs/api_back/src/friendship/friendship.service.ts +++ b/srcs/requirements/nestjs/api_back/src/friendship/friendship.service.ts @@ -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, ) { } - - // 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[] = []; // 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 > { 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 = { - // 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 = { - // 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 = { - // 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; } } diff --git a/srcs/requirements/nestjs/api_back/src/users/users.controller.ts b/srcs/requirements/nestjs/api_back/src/users/users.controller.ts index bdb9f20e..1a07db8e 100644 --- a/srcs/requirements/nestjs/api_back/src/users/users.controller.ts +++ b/srcs/requirements/nestjs/api_back/src/users/users.controller.ts @@ -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) diff --git a/srcs/requirements/nestjs/api_back/src/users/users.service.ts b/srcs/requirements/nestjs/api_back/src/users/users.service.ts index ff44e676..c698bed8 100644 --- a/srcs/requirements/nestjs/api_back/src/users/users.service.ts +++ b/srcs/requirements/nestjs/api_back/src/users/users.service.ts @@ -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 = { 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 { - 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[] = []; @@ -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) diff --git a/srcs/requirements/svelte/api_front/.env b/srcs/requirements/svelte/api_front/.env index cd15d3c1..1b450684 100644 --- a/srcs/requirements/svelte/api_front/.env +++ b/srcs/requirements/svelte/api_front/.env @@ -1,2 +1,2 @@ -WEBSITE_HOST=localhost +WEBSITE_HOST=transcendance WEBSITE_PORT=8080 diff --git a/srcs/requirements/svelte/api_front/src/pages/profile/ProfileDisplayOneUser.svelte b/srcs/requirements/svelte/api_front/src/pages/profile/ProfileDisplayOneUser.svelte new file mode 100644 index 00000000..537c8646 --- /dev/null +++ b/srcs/requirements/svelte/api_front/src/pages/profile/ProfileDisplayOneUser.svelte @@ -0,0 +1,38 @@ + + +
+{#if user !== undefined} + +{:else} +

Sorry

+
Failed to load user {params.username}
+{/if} + + + +
+ diff --git a/srcs/requirements/svelte/api_front/src/pages/profile/ProfileFriends.svelte b/srcs/requirements/svelte/api_front/src/pages/profile/ProfileUsers.svelte similarity index 86% rename from srcs/requirements/svelte/api_front/src/pages/profile/ProfileFriends.svelte rename to srcs/requirements/svelte/api_front/src/pages/profile/ProfileUsers.svelte index 8dc48d37..7b945dc7 100644 --- a/srcs/requirements/svelte/api_front/src/pages/profile/ProfileFriends.svelte +++ b/srcs/requirements/svelte/api_front/src/pages/profile/ProfileUsers.svelte @@ -1,21 +1,17 @@ -
+
- - + + +
diff --git a/srcs/requirements/svelte/api_front/src/pieces/GenerateUserDisplay.svelte b/srcs/requirements/svelte/api_front/src/pieces/GenerateUserDisplay.svelte index dbb58624..95fcc5ee 100644 --- a/srcs/requirements/svelte/api_front/src/pieces/GenerateUserDisplay.svelte +++ b/srcs/requirements/svelte/api_front/src/pieces/GenerateUserDisplay.svelte @@ -9,11 +9,12 @@ let avatar; // avatar needs to be updated!!! console.log('Generate User Display, BEFORE on mount ' + avatar) - // add errors + console.log('user:') + console.log({...user}) + // console.log(user) let errors = {avatar: ''}; onMount( async() => { - // console.log('Generate User Display, on mount ' + user.username) avatar = await fetchAvatar(user.username); }) @@ -90,10 +91,10 @@

Match Statistics

-

Total: {user.stats.totalGame}

Victories: {user.stats.winGame}

Losses: {user.stats.loseGame}

Draws: {user.stats.drawGame}

+

Total: {user.stats.totalGame}

{/if} @@ -142,6 +143,7 @@ font-size: 1.5em; font-weight: bold; padding-bottom: 5px; + /* color: white; */ } div.rank { @@ -156,6 +158,30 @@ color: red; } + .highlight { + font-weight: bold; + } + + p.highlight{ + grid-column: 1 / span 3; + } + + @media screen and (max-width: 500px) { + section.main-stats{ + grid-template-columns: 1fr; + } + section.main-stats h4{ + grid-column: 1; + } + section.main-stats p{ + grid-column: 1; + } + + } + + + + /* Glittery Star Stuff */ diff --git a/srcs/requirements/svelte/api_front/src/pieces/Header.svelte b/srcs/requirements/svelte/api_front/src/pieces/Header.svelte index 35aa8e7d..3c8431b0 100644 --- a/srcs/requirements/svelte/api_front/src/pieces/Header.svelte +++ b/srcs/requirements/svelte/api_front/src/pieces/Header.svelte @@ -28,7 +28,7 @@ - +
diff --git a/srcs/requirements/svelte/api_front/src/routes/profileRoutes.js b/srcs/requirements/svelte/api_front/src/routes/profileRoutes.js index 28511620..dd0dfb19 100644 --- a/srcs/requirements/svelte/api_front/src/routes/profileRoutes.js +++ b/srcs/requirements/svelte/api_front/src/routes/profileRoutes.js @@ -2,8 +2,10 @@ import NotFound from "../pages/NotFound.svelte"; import ProfileDisplay from '../pages/profile/ProfileDisplay.svelte'; import ProfileSettings from '../pages/profile/ProfileSettings.svelte'; -import ProfileFriends from '../pages/profile/ProfileFriends.svelte'; -import { wrap } from 'svelte-spa-router/wrap' +import ProfileUsers from '../pages/profile/ProfileUsers.svelte'; +import ProfileDisplayOneUser from "../pages/profile/ProfileDisplayOneUser.svelte"; + +import DisplayAUser from '../pieces/DisplayAUser.svelte'; // establishing the prefix here very clearly so we can have a coherent repeatable structure export const prefix = '/profile'; @@ -11,39 +13,8 @@ export const prefix = '/profile'; export const profileRoutes = { '/': ProfileDisplay, '/settings': ProfileSettings, - '/friends': ProfileFriends, + '/users': ProfileUsers, + '/users/:username': ProfileDisplayOneUser, + // '/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? \ No newline at end of file