From fa04dd26cce37ec7240d1918d0e1aad992d2593e Mon Sep 17 00:00:00 2001 From: Kacper Donat <kadet1090@gmail.com> Date: Thu, 17 Sep 2020 21:02:27 +0200 Subject: [PATCH] Add integration with api for static pages --- src/api/dto/page.ts | 40 ++++++++++++++++++++++++++++++++++++++++ src/api/page.tsx | 28 +++++++--------------------- src/data/page.ts | 1 + webpack.config.js | 5 ++--- 4 files changed, 50 insertions(+), 24 deletions(-) create mode 100644 src/api/dto/page.ts diff --git a/src/api/dto/page.ts b/src/api/dto/page.ts new file mode 100644 index 0000000..390fa03 --- /dev/null +++ b/src/api/dto/page.ts @@ -0,0 +1,40 @@ +import { Identifiable } from "@/data"; +import { Page } from "@/data/page"; +import { Transformer } from "@/serialization"; + +export interface PageDTO extends Identifiable { + accessName: string; + title: string; + titleEng: string; + content: string; + contentEng: string; +} + +export const pageDtoTransformer: Transformer<PageDTO, Page> = { + reverseTransform(subject: Page, context: undefined): PageDTO { + return { + id: subject.id, + accessName: subject.slug, + content: subject.content.pl, + contentEng: subject.content.en, + title: subject.title.pl, + titleEng: subject.title.en, + } + }, + transform(subject: PageDTO, context: undefined): Page { + return { + slug: subject.accessName, + id: subject.id, + content: { + pl: subject.content, + en: subject.contentEng + }, + title: { + pl: subject.title, + en: subject.titleEng + }, + }; + } +} + +export default pageDtoTransformer; diff --git a/src/api/page.tsx b/src/api/page.tsx index f1c69ee..1a5cd02 100644 --- a/src/api/page.tsx +++ b/src/api/page.tsx @@ -1,27 +1,13 @@ -// MOCK import { Page } from "@/data/page"; +import { PageDTO, pageDtoTransformer } from "./dto/page" +import { axios } from "@/api/index"; +import { prepare } from "@/routing"; -const tos = `<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Bestiarum vero nullum iudicium puto. Quare ad ea primum, si videtur; <b>Duo Reges: constructio interrete.</b> <i>Eam tum adesse, cum dolor omnis absit;</i> Sed ad bona praeterita redeamus. <mark>Facillimum id quidem est, inquam.</mark> Apud ceteros autem philosophos, qui quaesivit aliquid, tacet; </p> - -<p><a href="http://loripsum.net/" target="_blank">Quorum altera prosunt, nocent altera.</a> Eam stabilem appellas. <i>Sed nimis multa.</i> Quo plebiscito decreta a senatu est consuli quaestio Cn. Sin laboramus, quis est, qui alienae modum statuat industriae? <mark>Quod quidem nobis non saepe contingit.</mark> Si autem id non concedatur, non continuo vita beata tollitur. <a href="http://loripsum.net/" target="_blank">Illum mallem levares, quo optimum atque humanissimum virum, Cn.</a> <i>Id est enim, de quo quaerimus.</i> </p> - -<p>Ille vero, si insipiens-quo certe, quoniam tyrannus -, numquam beatus; Sin dicit obscurari quaedam nec apparere, quia valde parva sint, nos quoque concedimus; Et quod est munus, quod opus sapientiae? Ab hoc autem quaedam non melius quam veteres, quaedam omnino relicta. </p> -` +const STATIC_PAGE_ENDPOINT = "/staticPage/:slug" export async function get(slug: string): Promise<Page> { - if (slug === "/regulamin" || slug === "/rules") { - return { - id: "tak", - content: { - pl: tos, - en: tos, - }, - title: { - pl: "Regulamin Praktyk", - en: "Terms of Internship", - }, - } - } + const response = await axios.get<PageDTO>(prepare(STATIC_PAGE_ENDPOINT, { slug })) + const page = response.data; - throw new Error(); + return pageDtoTransformer.transform(page); } diff --git a/src/data/page.ts b/src/data/page.ts index a474e82..ca7e3c9 100644 --- a/src/data/page.ts +++ b/src/data/page.ts @@ -3,4 +3,5 @@ import { Identifiable, Multilingual } from "@/data/common"; export interface Page extends Identifiable { title: Multilingual<string>; content: Multilingual<string>; + slug: string; } diff --git a/webpack.config.js b/webpack.config.js index 94454fc..c98251d 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -51,12 +51,11 @@ const config = { ], devServer: { contentBase: path.resolve("./public/"), - port: 443, - host: 'system-praktyk.stg.kadet.net', + host: process.env.APP_HOST || 'system-praktyk-front.localhost', disableHostCheck: true, historyApiFallback: true, overlay: true, - https: true, + https: !!process.env.APP_HTTPS || false, proxy: { "/api": { target: "http://system-praktyk-front.localhost:8080/",