From 1a4cbad65a5e03ed7ad4bf77a6a629b6873d016c Mon Sep 17 00:00:00 2001 From: Philipp Date: Tue, 23 Apr 2024 18:38:06 +0200 Subject: [PATCH] first commit --- .gitignore | 10 +++ .npmrc | 1 + README.md | 38 +++++++++++ bun.lockb | Bin 0 -> 82802 bytes package.json | 25 +++++++ postcss.config.js | 6 ++ src/app.css | 3 + src/app.html | 12 ++++ src/lib/index.js | 1 + src/routes/+layout.svelte | 13 ++++ src/routes/+page.server.js | 26 ++++++++ src/routes/+page.svelte | 61 +++++++++++++++++ src/routes/emotes/+page.svelte | 118 +++++++++++++++++++++++++++++++++ src/routes/hook.server.js | 34 ++++++++++ static/favicon.png | Bin 0 -> 1571 bytes svelte.config.js | 15 +++++ tailwind.config.js | 13 ++++ vite.config.js | 6 ++ 18 files changed, 382 insertions(+) create mode 100644 .gitignore create mode 100644 .npmrc create mode 100644 README.md create mode 100755 bun.lockb create mode 100644 package.json create mode 100644 postcss.config.js create mode 100644 src/app.css create mode 100644 src/app.html create mode 100644 src/lib/index.js create mode 100644 src/routes/+layout.svelte create mode 100644 src/routes/+page.server.js create mode 100644 src/routes/+page.svelte create mode 100644 src/routes/emotes/+page.svelte create mode 100644 src/routes/hook.server.js create mode 100644 static/favicon.png create mode 100644 svelte.config.js create mode 100644 tailwind.config.js create mode 100644 vite.config.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6635cf5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example +vite.config.js.timestamp-* +vite.config.ts.timestamp-* diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..b6f27f1 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/README.md b/README.md new file mode 100644 index 0000000..5ce6766 --- /dev/null +++ b/README.md @@ -0,0 +1,38 @@ +# create-svelte + +Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/main/packages/create-svelte). + +## Creating a project + +If you're seeing this, you've probably already done this step. Congrats! + +```bash +# create a new project in the current directory +npm create svelte@latest + +# create a new project in my-app +npm create svelte@latest my-app +``` + +## Developing + +Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: + +```bash +npm run dev + +# or start the server and open the app in a new browser tab +npm run dev -- --open +``` + +## Building + +To create a production version of your app: + +```bash +npm run build +``` + +You can preview the production build with `npm run preview`. + +> To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment. diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..b33698e5b76946abc1fac974d3f238d04b34bdb4 GIT binary patch literal 82802 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%0A) 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 literal 0 HcmV?d00001 diff --git a/package.json b/package.json new file mode 100644 index 0000000..5dfdf0d --- /dev/null +++ b/package.json @@ -0,0 +1,25 @@ +{ + "name": "polls-svelte", + "version": "0.0.1", + "private": true, + "scripts": { + "dev": "vite dev", + "build": "vite build", + "preview": "vite preview" + }, + "devDependencies": { + "@sveltejs/adapter-auto": "^3.0.0", + "@sveltejs/kit": "^2.0.0", + "@sveltejs/vite-plugin-svelte": "^3.0.0", + "autoprefixer": "^10.4.18", + "postcss": "^8.4.35", + "svelte": "^4.2.7", + "tailwindcss": "^3.4.1", + "vite": "^5.1.6" + }, + "type": "module", + "dependencies": { + "matrix-js-sdk": "^31.4.0", + "svelte-use-form": "latest" + } +} diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..2e7af2b --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/src/app.css b/src/app.css new file mode 100644 index 0000000..b5c61c9 --- /dev/null +++ b/src/app.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; diff --git a/src/app.html b/src/app.html new file mode 100644 index 0000000..77a5ff5 --- /dev/null +++ b/src/app.html @@ -0,0 +1,12 @@ + + + + + + + %sveltekit.head% + + +
%sveltekit.body%
+ + diff --git a/src/lib/index.js b/src/lib/index.js new file mode 100644 index 0000000..856f2b6 --- /dev/null +++ b/src/lib/index.js @@ -0,0 +1 @@ +// place files you want to import through the `$lib` alias in this folder. diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte new file mode 100644 index 0000000..3042566 --- /dev/null +++ b/src/routes/+layout.svelte @@ -0,0 +1,13 @@ + + + diff --git a/src/routes/+page.server.js b/src/routes/+page.server.js new file mode 100644 index 0000000..e406372 --- /dev/null +++ b/src/routes/+page.server.js @@ -0,0 +1,26 @@ +import { fail, redirect } from '@sveltejs/kit'; + + +export const actions = { + default: async ({ request, cookies }) => { + //if (cookies.get('matrixToken')) { + // redirect(302, '/emotes'); + //} + const data = await request.formData(); + const homeserver = data.get('url'); + const username = data.get('username'); + const password = data.get('password'); + let token = ""; + + if(!homeserver || !username || !password ) return fail(400, "Invalid credentials"); + + cookies.set( + 'matrixToken', token, { + path: '/', + maxAge: 60 * 60 * 24 * 365, + httpOnly: false + }, + ); + redirect(302, '/'); + } +} \ No newline at end of file diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte new file mode 100644 index 0000000..ba4c550 --- /dev/null +++ b/src/routes/+page.svelte @@ -0,0 +1,61 @@ + + +
+
+ + logo + Emote Matrix + +
+
+

+ Sign in to your Matrix Account +

+
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+
+
+
+
+ + diff --git a/src/routes/emotes/+page.svelte b/src/routes/emotes/+page.svelte new file mode 100644 index 0000000..087340c --- /dev/null +++ b/src/routes/emotes/+page.svelte @@ -0,0 +1,118 @@ + +{#if isLoading} +

Loading the Emotes...

+{:else} + {#each baskets as basket, basketIndex (basket)} +
+ {basket.name} +
    hoveringOverBasket = basket.name} + on:dragleave={() => hoveringOverBasket = null} + on:drop={event => drop(event, basketIndex)} + ondragover="return false" > + {#each basket.items as item, itemIndex (item)} +
    +
  • dragStart(event, basketIndex, itemIndex)} > + Emote +
  • +
    + {/each} +
+
+ {/each} +{/if} + + \ No newline at end of file diff --git a/src/routes/hook.server.js b/src/routes/hook.server.js new file mode 100644 index 0000000..b53e4ce --- /dev/null +++ b/src/routes/hook.server.js @@ -0,0 +1,34 @@ +import { userRepository } from './lib/Redis/dbRepository'; + +function redirect(location, body) { + return new Response(body, { + status: 303, + headers: { location } + }); +} + +const unProtectedRoutes = [ + '/' +]; + +export const handle= async ({ event, resolve }) => { + const session = event.cookies.get('session'); + if (!session && !unProtectedRoutes.includes(event.url.pathname)) + return redirect('/login', 'No authenticated user.'); + const currentUser = await userRepository.fetch(session); + + if (currentUser) { + event.locals.user = { + isAuthenticated: true, + name: currentUser.name, + email: currentUser.email, + type: currentUser.user_type, + active: currentUser.active, + phone: currentUser.phone + }; + } else { + if (!unProtectedRoutes.includes(event.url.pathname)) return redirect('/', 'Not a valid user'); + } + + return resolve(event); +}; \ No newline at end of file diff --git a/static/favicon.png b/static/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..825b9e65af7c104cfb07089bb28659393b4f2097 GIT binary patch literal 1571 zcmV+;2Hg3HP)Px)-AP12RCwC$UE6KzI1p6{F2N z1VK2vi|pOpn{~#djwYcWXTI_im_u^TJgMZ4JMOsSj!0ma>B?-(Hr@X&W@|R-$}W@Z zgj#$x=!~7LGqHW?IO8+*oE1MyDp!G=L0#^lUx?;!fXv@l^6SvTnf^ac{5OurzC#ZMYc20lI%HhX816AYVs1T3heS1*WaWH z%;x>)-J}YB5#CLzU@GBR6sXYrD>Vw(Fmt#|JP;+}<#6b63Ike{Fuo!?M{yEffez;| zp!PfsuaC)>h>-AdbnwN13g*1LowNjT5?+lFVd#9$!8Z9HA|$*6dQ8EHLu}U|obW6f z2%uGv?vr=KNq7YYa2Roj;|zooo<)lf=&2yxM@e`kM$CmCR#x>gI>I|*Ubr({5Y^rb zghxQU22N}F51}^yfDSt786oMTc!W&V;d?76)9KXX1 z+6Okem(d}YXmmOiZq$!IPk5t8nnS{%?+vDFz3BevmFNgpIod~R{>@#@5x9zJKEHLHv!gHeK~n)Ld!M8DB|Kfe%~123&Hz1Z(86nU7*G5chmyDe ziV7$pB7pJ=96hpxHv9rCR29%bLOXlKU<_13_M8x)6;P8E1Kz6G<&P?$P^%c!M5`2` zfY2zg;VK5~^>TJGQzc+33-n~gKt{{of8GzUkWmU110IgI0DLxRIM>0US|TsM=L|@F z0Bun8U!cRB7-2apz=y-7*UxOxz@Z0)@QM)9wSGki1AZ38ceG7Q72z5`i;i=J`ILzL z@iUO?SBBG-0cQuo+an4TsLy-g-x;8P4UVwk|D8{W@U1Zi z!M)+jqy@nQ$p?5tsHp-6J304Q={v-B>66$P0IDx&YT(`IcZ~bZfmn11#rXd7<5s}y zBi9eim&zQc0Dk|2>$bs0PnLmDfMP5lcXRY&cvJ=zKxI^f0%-d$tD!`LBf9^jMSYUA zI8U?CWdY@}cRq6{5~y+)#h1!*-HcGW@+gZ4B};0OnC~`xQOyH19z*TA!!BJ%9s0V3F?CAJ{hTd#*tf+ur-W9MOURF-@B77_-OshsY}6 zOXRY=5%C^*26z?l)1=$bz30!so5tfABdSYzO+H=CpV~aaUefmjvfZ3Ttu9W&W3Iu6 zROlh0MFA5h;my}8lB0tAV-Rvc2Zs_CCSJnx@d`**$idgy-iMob4dJWWw|21b4NB=LfsYp0Aeh{Ov)yztQi;eL4y5 zMi>8^SzKqk8~k?UiQK^^-5d8c%bV?$F8%X~czyiaKCI2=UH