Stuggling a bit to get components to rerender when a prop updates in the Friendship page, will sort out tomorrow

This commit is contained in:
Me
2022-12-11 08:12:22 +01:00
parent 6eeb2b5474
commit db1e269e2e
5 changed files with 108 additions and 63 deletions

View File

@@ -12,12 +12,14 @@ export class FriendshipController {
@Get('myfriends')
@UseGuards(AuthenticateGuard)
@UseGuards(TwoFactorGuard)
findEmpty(@Req() req) {
findEmpty(@Query('username') username: string, @Req() req) {
const user = req.user;
if (username === undefined) {
console.log("WHAT IS UP MY GUYS IT IS YOUR BOI THAT IDIOT YOU HATE 11111");
return this.friendshipService.findAllFriends(user.id);
} else {
console.log("WHAT IS UP MY GUYS IT IS YOUR BOI THAT IDIOT YOU HATE 11111");
return this.friendshipService.findAllFriends(user.id);
}
}
// GET http://transcendance:8080/api/v2/network/myfriends/relationshipId

View File

@@ -23,6 +23,13 @@ export class FriendshipService {
return friendship;
}
// async findOneFriendByUsername(friendUsername: string, username: string) {
// const friendship = await this.friendshipRepository.find({ where: { friendUsername: +friendshipId, requesterUsername: username, status: FriendshipStatus.ACCEPTED } });
// if (!friendship)
// throw new HttpException(`The requested friend not found.`, HttpStatus.NOT_FOUND);
// return friendship;
// }
async findOneBlocked(friendshipId: string) {
const friendship = await this.friendshipRepository.find({ where: { id: +friendshipId, status: FriendshipStatus.BLOCKED } });
if (!friendship)

View File

@@ -1,6 +1,7 @@
<script lang="ts">
import { onMount } from "svelte";
import { binding_callbacks } from "svelte/internal";
import Button from "../../pieces/Button.svelte";
import DisplayAUser from "../../pieces/DisplayAUser.svelte";
@@ -27,10 +28,11 @@ could be a list of friends and if they're active but i can't see that yet
let set = {friendUsername: '', friendId: Number}
let user;
let allUsers;
let myFriends;
let requestsMade, requestsRecieved;
let allUsers;
let userToDisplay;
let userBeingViewed;
onMount( async() => {
@@ -39,6 +41,7 @@ could be a list of friends and if they're active but i can't see that yet
user = await fetch('http://transcendance:8080/api/v2/user')
.then( (x) => x.json() );
// userBeingViewed = user;
// console.log('user is ')
// console.log(user)
// console.log(user.username)
@@ -69,6 +72,7 @@ could be a list of friends and if they're active but i can't see that yet
})
const displayAllUsers = async() => {
allUsers = await fetch('http://transcendance:8080/api/v2/user/all')
.then( x => x.json() );
@@ -88,46 +92,20 @@ could be a list of friends and if they're active but i can't see that yet
// console.log('got requests made ' + requestsMade)
};
// const sendFriendRequest =
let sentFriendRequest;
// const friendUserByUsername = async(potenticalFriendUsername) => {
const friendUserByUsername = async() => {
const sendFriendRequest = async(potentialFriendUsername) => {
set.friendUsername = '';
errors.friendRequest = '';
let valid = false;
if (!user || !user.username) {
valid = false;
}
// if (potenticalFriendUsername === '' || potenticalFriendUsername.trim() === '') {
if (set.friendUsername === '' || set.friendUsername.trim() === '') {
errors.friendRequest = "You have to put a friend's name in.";
valid = false;
} else if (set.friendUsername === user.username) {
if (potentialFriendUsername === user.username) {
errors.friendRequest = "You can't friend yourself."
valid = false;
} else {
set.friendUsername = potentialFriendUsername;
valid = true;
}
// should i be checking if a Friend request has already been made ?
if (valid) {
console.log('user is ')
console.log(user)
console.log(user.username)
console.log('friend is ')
console.log(set.friendUsername)
// set.friendId = allUsers.find(f => f.username === set.friendUsername).id
// console.log('friend found: ' + set.friendId)
// ok this version works
// ok not really, requesterId and all that is good but...
// seems like i actually have to send IDs
sentFriendRequest = await fetch("http://transcendance:8080/api/v2/network/myfriends", {
method : "POST",
headers: { 'Content-Type': 'application/json'},
@@ -138,15 +116,25 @@ could be a list of friends and if they're active but i can't see that yet
})
})
.then( x => x.json())
// .then (x => console.log({...x}));
// should i then update requtestsMade with another fetch?
// maybe also check if the request went through?
}
};
// let sendUsername;
const viewAUser = async(aUser) => {
userBeingViewed = aUser;
// sendUsername = userBeingViewed.username;
// prolly like fetch if you're friends or not?
// GET http://transcendance:8080/api/v2/networks/myfriends?username=aUser but i need to make that as long as Cherif
// doesn't have a better option
// like i want this thing to return the Friendship ID ideally
};
const blockAUser = async(friendshipId) => {
};
</script>
@@ -166,7 +154,7 @@ could be a list of friends and if they're active but i can't see that yet
<!-- {#each allUsers as aUser (aUser.username)} -->
{#each allUsers as aUser }
<!-- <div class="a-user" on:click={() => displayAUser(aUser.username)}>{aUser.username}</div> -->
<div class="a-user" on:click={() => userToDisplay = aUser.username}>{aUser.username}</div>
<div class="a-user" on:click={() => viewAUser(aUser)}>{aUser.username}</div>
<!-- i could make an indicator component? like green for connected or something?
i could use words but color them?
i could make it so if they're in a game -->
@@ -178,22 +166,49 @@ could be a list of friends and if they're active but i can't see that yet
</div>
<!-- <h1>Friendship page</h1> -->
<div class="main-display">
<h1>Main Display</h1>
<!-- use an #await here too? -->
<!-- you can do better, like an on load sort of thing -->
{#if userToDisplay !== undefined}
<DisplayAUser aUsername={userToDisplay}/>
<!-- {#if userBeingViewed !== undefined && userBeingViewed === tmpUserBeingViewed} -->
<!-- {#if userBeingViewed !== undefined} -->
{#if userBeingViewed}
<div>{userBeingViewed.username}</div>
<DisplayAUser aUsername={userBeingViewed.username}/>
<!-- <DisplayAUser aUsername={sendUsername}/> -->
<Button type="secondary" on:click={() => sendFriendRequest(userBeingViewed.username)}>Add Friend</Button>
<!-- {#if user not blocked}
<Button on:click={() => blockAUser(userBeingViewed.username)}>Add Friend</Button>
does it have to be friendship IDs? can't i just use username?
i mean i guess friendship ID is more secure, and also easier in the back
but if i'm using friendshi ID i need a good way of getting them
{/if} -->
<!-- {:else if userBeingViewed !== undefined} -->
{/if}
<!-- {#if user && user.username}
<div>You are {user.username}</div>
{/if} -->
<!-- {#await userBeingViewed}
<p>... waiting</p>
{:then}
<div>{userBeingViewed.username}</div>
<DisplayAUser aUsername={userBeingViewed.username}/>
<Button type="secondary" on:click={() => sendFriendRequest(userBeingViewed.username)}>Add Friend</Button>
{:catch}
<p>No user to view yet</p>
{/await} -->
<!-- {#if user not blocked}
<Button on:click={() => blockAUser(userBeingViewed.username)}>Add Friend</Button>
does it have to be friendship IDs? can't i just use username?
i mean i guess friendship ID is more secure, and also easier in the back
but if i'm using friendshi ID i need a good way of getting them
{/if} -->
<!-- {:else if userBeingViewed !== undefined} -->
<!-- <Button on:click={displayAllUsers}>Get All Users</Button>
{#if allUsers !== undefined}
@@ -212,16 +227,7 @@ could be a list of friends and if they're active but i can't see that yet
{/each}
{/if} -->
<br>
<div>Make a Friend!</div>
<!-- <form on:submit|preventDefault={() => friendUserByUsername(set.friendUsername)}> -->
<form on:submit|preventDefault={friendUserByUsername}>
<input type="text" placeholder="friend's username" bind:value={set.friendUsername}>
<div class="error">{errors.friendRequest}</div>
<Button type="secondary">Send Friend Request</Button>
</form>
<!-- <br> <br> -->
<!-- here i want to list all the requests you and have an accept and a decline button -->

View File

@@ -2,6 +2,7 @@
import { onMount } from 'svelte';
import GenerateUserDisplay from './GenerateUserDisplay.svelte';
// import {updateGeneratedUser} from './GenerateUserDisplay.svelte';
export let aUsername;
let user;
@@ -17,12 +18,36 @@
})
// $: {
// updateUser(aUsername);
// }
const updateUser = async(updatedUser) => {
console.log('Display Update aUser username: '+ updateUser)
// http://transcendance:8080/api/v2/user?username=NomDuUserATrouver
user = await fetch(`http://transcendance:8080/api/v2/user?username=${updateUser}`)
.then( (x) => x.json() );
};
// export const updateUser = async(updatedUser) => {
// console.log('Display Update aUser username: '+ updateUser)
// // http://transcendance:8080/api/v2/user?username=NomDuUserATrouver
// user = await fetch(`http://transcendance:8080/api/v2/user?username=${updateUser}`)
// .then( (x) => x.json() );
// updateGeneratedUser(updateUser);
// };
</script>
<!-- OHHHH i could use #await instead of if and have an nice loading page! -->
{#if user !== undefined}
<GenerateUserDisplay {user} primary={true}/>
<GenerateUserDisplay bind:user={user} primary={true}/>
<!-- <GenerateUserDisplay user={user} primary={true}/> -->
{:else}
<h2>Sorry</h2>
<div>Failed to load user {aUsername}</div>

View File

@@ -24,6 +24,11 @@
})
// export function updateGeneratedUser(updatedUser) {
// user = updatedUser;
// };
if (user.loseGame > user.winGame) {
rank = 'Bitch Ass Loser!'
} else if (user.loseGame === user.winGame) {