chat.sad.ovh
Add a friend Add a friend using their username or manage pending requests.
{ return async ({ result }) => { if (result.type == 'success') { toast.success('Friend request sent successfully'); } if (result.type == 'error' || result.type == 'failure') { toast.error( 'Could not send friend request: ' + (result.error || result.data?.error) ); } await invalidateAll(); await fill_overview_data(psd); }; }} > Cancel
Outgoing Incoming Manage Friends {#if user!.friendRequests.filter((r) => r.fromUser === user!.id).length === 0}

No outgoing requests

{:else} {#each user!.friendRequests.filter((r) => r.fromUser === user!.id) as request (request.id)} {request.toUsername} Request sent
{ return async ({ result }) => { if (result.type == 'success') { toast.success('Cancelled friend request successfully'); } if (result.type == 'error' || result.type == 'failure') { toast.error( 'Could not cancel friend request: ' + (result.error || result.data?.error) ); } await invalidateAll(); await fill_overview_data(psd); }; }} >
{/each} {/if}
{#if user!.friendRequests.filter((r) => r.toUser === user!.id).length === 0}

No incoming requests

{:else} {#each user!.friendRequests.filter((r) => r.toUser === user!.id) as request (request.id)} {request.fromUsername} Sent you a friend request
{ return async ({ result }) => { if (result.type == 'success') { toast.success('Accepted friend request successfully'); } if (result.type == 'error' || result.type == 'failure') { toast.error( 'Could not accept friend request: ' + (result.error || result.data?.error) ); } await invalidateAll(); await fill_overview_data(psd); }; }} >
{ return async ({ result }) => { if (result.type == 'success') { toast.success('Cancelled friend request successfully'); } if (result.type == 'error' || result.type == 'failure') { toast.error( 'Could not cancel friend request: ' + (result.error || result.data?.error) ); } await invalidateAll(); await fill_overview_data(psd); }; }} >
{/each} {/if}
{#if data.friends.length === 0}

You have no friends added.

{:else} {#each data.friends as friend (friend.id)} {friend.username} Currently your friend
{ return async ({ result }) => { if (result.type == 'success') { toast.success('Removed friend successfully'); } if (result.type == 'error' || result.type == 'failure') { toast.error( 'Could not remove friend: ' + (result.error || result.data?.error) ); } await invalidateAll(); await fill_overview_data(psd); }; }} >
{/each} {/if}
{ return async ({ result }) => { if (result.type == 'success') { toast.success('Created group successfully'); } if (result.type == 'error' || result.type == 'failure') { toast.error( 'Could not create group: ' + (result.error || result.data?.error) ); } await invalidateAll(); await fill_overview_data(psd); }; }} > Create a group Add friends into your group! {#each data.friends as friend (friend.id)} {/each} Cancel
{ return async ({ result }) => { console.log(result); if (result.type == 'success') { toast.success('Joined server successfully'); } if (result.type == 'error' || result.type == 'failure') { toast.error('Could not join server: ' + (result.error || result.data?.error)); } await invalidateAll(); await fill_overview_data(psd); }; }} > Join a server Enter an invite link. Cancel
{ return async ({ result }) => { if (result.type == 'success') { toast.success('Created server successfully'); } if (result.type == 'error' || result.type == 'failure') { toast.error( 'Could not create server: ' + (result.error || result.data?.error) ); } await invalidateAll(); await fill_overview_data(psd); }; }} > Create a server Name your new server. Cancel
Friends {#each data.friends as friend (friend.id)} { e.preventDefault(); currentPage = friend.id; subPage = null; }} user={friend} crown={false} > {/each} Groups {#each data.groups as group (group.id)} { e.preventDefault(); currentPage = group.id; subPage = null; }} href="##" > {group.name} ({group.members} members) {/each} Servers {#each data.servers as server (server.id)} { e.preventDefault(); currentPage = server.id; subPage = null; }} > {server.name} {server.name} {#each server.channels as channel (channel.id)} { e.preventDefault(); currentPage = server.id; subPage = channel.id; }} href="##" class="flex items-center gap-2" > {channel.name} {/each} {/each}
{ return async ({ result }) => { if (result.type == 'success') { toast.success('Edited profile successfully'); } if (result.type == 'error' || result.type == 'failure') { toast.error('Could not edit profile: ' + (result.error || result.data?.error)); } await invalidateAll(); await fill_overview_data(psd); }; }} > Edit profile Update how others see you.
Cancel