sanifae/src/routes/users/[user]/+page.svelte

119 lines
3.1 KiB
Svelte
Raw Normal View History

2023-02-05 09:47:26 -05:00
<script>
2023-02-12 01:53:13 -05:00
import Button from '$lib/components/Button.svelte'
2023-02-05 09:47:26 -05:00
import Area from '$lib/components/Area.svelte';
2023-02-12 01:53:13 -05:00
import PostList from '$lib/components/PostList.svelte';
2023-03-06 16:15:27 -05:00
import FileUpload from '$lib/components/FileUpload.svelte';
2023-02-05 09:47:26 -05:00
/** @type {import('./$types').PageData} */
export let data;
2023-03-06 16:15:27 -05:00
let uploadForm = {};
2023-02-05 09:47:26 -05:00
let userData = data.postJsonUser.data;
let userBio = data.postJsonUserBio.data;
2023-03-06 02:26:57 -05:00
let following = data.postJsonUser.following;
let followers = data.postJsonUser.followers;
function follow() {
let fData = (new FormData());
fData.append('target',userData.username);
fetch('/api/follow', {
method: 'POST',
body: fData
}).then(async x => {
let xJson = (await x.json()).data;
following = xJson.following;
followers = xJson.followers;
})
}
2023-02-05 09:47:26 -05:00
</script>
2023-03-06 02:34:40 -05:00
<style>
.follower {
margin-right: 1.5rem;
}
2023-03-06 16:15:27 -05:00
.pfp {
width: 50px;
height: 50px;
margin-right: 10px;
}
#header {
display: flex;
2023-03-06 16:55:16 -05:00
align-items: center;
2023-03-06 16:15:27 -05:00
}
2023-03-06 02:34:40 -05:00
</style>
{#if userData && userBio}
2023-02-11 19:42:10 -05:00
<Area>
2023-03-06 16:15:27 -05:00
<span slot="header" id='header'>
<img class='pfp' src='/pfp/{userData.username}.png'/>
2023-02-11 19:42:10 -05:00
<a href='/users/{userData.username}'>
{userData.username}
</a>
</span>
<span slot="main">
2023-03-06 16:15:27 -05:00
<div class='left'></div>
2023-02-11 19:42:10 -05:00
<p>
<b>Reputation:</b> {userData.reputation}
</p>
<p>
<b>Upvotes:</b> {userData.upvotes}
</p>
<p>
<b>Downvotes:</b> {userData.downvotes}
</p>
<h2>Roles</h2>
<p>
{#each userBio.rolesArr as role}
<i class='follower'>{role}</i>
{/each}
</p>
2023-03-06 02:26:57 -05:00
<h2>Following</h2>
{#each following as user}
2023-03-06 16:57:17 -05:00
<a class='follower' href='/users/{user.following}'>
2023-03-06 16:15:27 -05:00
<img class='pfp' src='/pfp/{user.following}.png'/>
</a>
2023-03-06 02:26:57 -05:00
{/each}
<h2>Followers</h2>
{#each followers as user}
2023-03-06 16:57:17 -05:00
<a class='follower' href='/users/{user.username}'>
2023-03-06 16:15:27 -05:00
<img class='pfp' src='/pfp/{user.username}.png'/>
</a>
2023-03-06 02:26:57 -05:00
{/each}
2023-03-06 16:15:27 -05:00
{#if data.resAcc.data == userData.username}
<h2>Set PFP</h2>
<FileUpload bind:form={uploadForm} type='small' apiUrl={'/api/pfp'}/>
{/if}
2023-02-11 19:42:10 -05:00
</span>
<span slot="footer">
2023-03-06 02:26:57 -05:00
<Button clickFunc={follow}>
Follow
</Button>
2023-02-11 19:42:10 -05:00
</span>
</Area>
{:else}
<Area>
<span slot="header">
2023-02-12 01:53:13 -05:00
<a href='/users/{data.user}'>
{data.user}
</a>
2023-02-11 19:42:10 -05:00
</span>
<span slot="main">
</span>
<span slot="footer">
2023-02-12 01:53:13 -05:00
This user does not have any statistics available.
2023-02-11 19:42:10 -05:00
</span>
</Area>
{/if}
2023-02-05 09:47:26 -05:00
<h2>Posts</h2>
2023-02-12 01:53:13 -05:00
<PostList data={data} />