pfp cropping #12

Merged
justtemmie merged 11 commits from pfp-cropping into main 2025-07-05 17:34:28 +00:00
5 changed files with 50 additions and 18 deletions
Showing only changes of commit def96c4df3 - Show all commits

View file

@ -158,10 +158,12 @@ if (accessToken && apiBase) {
function sendMessage(e: Event) { function sendMessage(e: Event) {
e.preventDefault(); e.preventDefault();
const text = messageInput.value; const message = {
console.log("text:", text); message: messageInput.value
if (text) { }
ws.send(text); console.log("message:", message);
if (message.message) {
ws.send(JSON.stringify(message));
messageInput.value = ""; messageInput.value = "";
console.log("MESSAGE SENT!!!"); console.log("MESSAGE SENT!!!");
} }

View file

@ -37,13 +37,19 @@ export const useAuth = () => {
//await fetchUser(); //await fetchUser();
} }
async function logout(password: string) { async function logout() {
console.log("password:", password);
console.log("access:", accessToken.value); console.log("access:", accessToken.value);
const hashedPass = await hashPassword(password);
console.log("hashed");
const res = await fetchWithApi("/auth/revoke", { await fetchWithApi("/auth/logout", { method: "GET", credentials: "include" });
clearAuth();
return await navigateTo("/login");
}
async function revoke(password: string) {
const hashedPass = await hashPassword(password);
await fetchWithApi("/auth/revoke", {
method: "POST", method: "POST",
body: body:
{ {
@ -54,10 +60,6 @@ export const useAuth = () => {
clearAuth(); clearAuth();
} }
async function revoke() {
clearAuth();
}
async function refresh() { async function refresh() {
console.log("refreshing"); console.log("refreshing");
const res = await fetchWithApi("/auth/refresh", { const res = await fetchWithApi("/auth/refresh", {

View file

@ -27,7 +27,9 @@ export default defineNuxtConfig({
runtimeConfig: { runtimeConfig: {
public: { public: {
apiVersion: 1, apiVersion: 1,
messageGroupingMaxDifference: 300000 messageGroupingMaxDifference: 300000,
buildTimeString: new Date().toISOString(),
gitHash: process.env.GIT_SHORT_REV || "N/A",
} }
}, },
/* nitro: { /* nitro: {

View file

@ -100,6 +100,7 @@ function handleMemberClick(member: GuildMemberResponse) {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
overflow-y: scroll; overflow-y: scroll;
max-height: 92dvh;
padding-left: 1dvw; padding-left: 1dvw;
padding-right: 1dvw; padding-right: 1dvw;
margin-top: 1dvh; margin-top: 1dvh;

View file

@ -2,8 +2,8 @@
<div id="settings-page-container"> <div id="settings-page-container">
<div id="settings-page"> <div id="settings-page">
<div id="sidebar"> <div id="sidebar">
<h4>(Search bar here)</h4>
<ul> <ul>
<!-- categories and dynamic settings pages -->
<div v-for="category in categories" :key="category.displayName"> <div v-for="category in categories" :key="category.displayName">
<h2>{{ category.displayName }}</h2> <h2>{{ category.displayName }}</h2>
<li v-for="page in category.pages" :key="page.displayName" @click="selectCategory(page)" <li v-for="page in category.pages" :key="page.displayName" @click="selectCategory(page)"
@ -12,8 +12,23 @@
</li> </li>
<span class="spacer"></span> <span class="spacer"></span>
</div> </div>
<p>
<Button text="Log Out" :callback=logout variant="scary"></Button>
</p>
<span class="spacer"></span>
<p id="links-and-socials">
<NuxtLink href="https://git.gorb.app/gorb/frontend" title="Source"><Icon name="lucide:git-branch-plus" /></NuxtLink>
<NuxtLink href="https://docs.gorb.app" title="Backend Documentation"><Icon name="lucide:book-open-text" /></NuxtLink>
</p>
<p style="font-size: .8em; color: var(--secondary-text-color)">
Version Hash: {{ appConfig.public.gitHash }}
<br>
Build Time: {{ appConfig.public.buildTimeString }}
</p>
<Button text="Log Out" :callback=logout variant="scary"></Button>
</ul> </ul>
</div> </div>
<div id="sub-page"> <div id="sub-page">
@ -29,6 +44,8 @@ import Button from '~/components/Button.vue';
const { logout } = useAuth() const { logout } = useAuth()
const appConfig = useRuntimeConfig()
interface Page { interface Page {
displayName: string; displayName: string;
pageData: any; // is actually Component but TS is yelling at me :( pageData: any; // is actually Component but TS is yelling at me :(
@ -103,7 +120,7 @@ function selectCategory(page: Page) {
background-color: var(--sidebar-background-color); background-color: var(--sidebar-background-color);
color: var(--text-color); color: var(--text-color);
padding: 1dvh 1dvw; padding: 1dvh 1dvw;
margin-left: auto; margin-left: 0;
overflow-y: auto; overflow-y: auto;
height: 100vh; height: 100vh;
@ -128,6 +145,10 @@ function selectCategory(page: Page) {
transition: background-color 0.3s; transition: background-color 0.3s;
} }
#sidebar p {
margin: 2dvh 0.8dvw;
}
.sidebar-focus { .sidebar-focus {
background-color: var(--sidebar-highlighted-background-color); background-color: var(--sidebar-highlighted-background-color);
} }
@ -147,11 +168,15 @@ function selectCategory(page: Page) {
height: 100vh; height: 100vh;
} }
#links-and-socials * {
margin-right: 0.2em;
}
.spacer { .spacer {
height: 0.2dvh; height: 0.2dvh;
display: block; display: block;
margin: 0.8dvh 1dvw; margin: 0.8dvh 1dvw;
background-color: var(--spacing-color); background-color: var(--padding-color);
} }
/* applies to child pages too */ /* applies to child pages too */