diff --git a/server.js b/server.js index ab29e7a..2a51a4b 100644 --- a/server.js +++ b/server.js @@ -1,19 +1,43 @@ import http from "http"; -const host = 'localhost'; +const host = '127.0.0.1'; const port = 8000; const user = JSON.stringify({ name: "Joe User", }); +const stickers = { + "88ae126f-b19a-4287-abe0-a8f5ac763cb7": { + backgroundColor: "#000088", + layout: "layout1", + message1: "I am an activist!", + }, +} + const requestListener = function (req, res) { res.setHeader("Content-Type", "application/json"); - switch (req.url) { - case "/login": + const urlParts = req.url.split("/"); + console.log(urlParts); + switch (urlParts[1]) { + case "login": res.writeHead(200); res.end(user); - break + break; + case "sticker": + if (!(urlParts[2] in stickers)) { + res.writeHead(404); + res.end('not found') + break; + } + res.writeHead(200); + const sticker = stickers[urlParts[2]]; + const response = JSON.stringify(sticker); + res.end(response); + break; + default: + res.writeHead(200); + res.end(JSON.stringify({nothing: 'here'})); } }; diff --git a/src/router/index.ts b/src/router/index.ts index 013b446..3eabcbf 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -4,6 +4,7 @@ import HomeView from '../views/HomeView.vue' import LoginView from '../views/LoginView.vue' import ProfileView from '../views/ProfileView.vue' import StickerBuilderView from '../views/StickerBuilderView.vue' +import StickerView from '../views/StickerView.vue' const router = createRouter({ history: createWebHistory(import.meta.env.BASE_URL), @@ -22,7 +23,7 @@ const router = createRouter({ title: 'Profile', }, name: 'profile', - path: '/:uuid([0-9A-F]{8}-[0-9A-F]{4}-[4][0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12})', + path: '/profile', }, { component: AboutView, @@ -40,6 +41,14 @@ const router = createRouter({ name: 'stickerbuilder', path: '/stickerbuilder', }, + { + component: StickerView, + meta: { + title: 'Sticker', + }, + name: 'sticker', + path: '/:uuid([0-9A-F]{8}-[0-9A-F]{4}-[4][0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12})', + }, { component: LoginView, meta: { diff --git a/src/stores/stickerStore.ts b/src/stores/stickerStore.ts new file mode 100644 index 0000000..d96447f --- /dev/null +++ b/src/stores/stickerStore.ts @@ -0,0 +1,24 @@ +import { defineStore } from 'pinia' + +export const useStickerStore = defineStore('sticker', { + actions: { + async fetch(uuid: string) { + console.log('fetch'); + // TODO: Check if we have it already and if it's stale. + const response = await fetch( + `/sticker/${uuid}`, + ); + const json = await response.json(); + console.log(json); + // this.stickers.push(json); + this.sticker = json; + console.log('done in fetch'); + }, + }, + state: () => { + return { + // stickers: [], + sticker: null, + }; + }, +}) diff --git a/src/views/StickerView.vue b/src/views/StickerView.vue index 257cb62..02a9c43 100644 --- a/src/views/StickerView.vue +++ b/src/views/StickerView.vue @@ -1,235 +1,71 @@ - - diff --git a/vite.config.ts b/vite.config.ts index 518e7a7..4fa190a 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -18,11 +18,16 @@ export default defineConfig({ server: { proxy: { '/login': { - target: 'http://localhost:8000', + target: 'http://127.0.0.1:8000', changeOrigin: true, secure: false, // rewrite: (path) => path.replace(/^\/api/, '') }, + '^/sticker/.*': { + target: 'http://127.0.0.1:8000', + changeOrigin: true, + secure: false, + }, }, }, })