From a131d298d517a95986598e211a0d191563999bdf Mon Sep 17 00:00:00 2001
From: pikqi
Date: Fri, 24 Mar 2023 16:37:05 +0100
Subject: [PATCH 1/5] adds a new page with speakers
---
package.json | 2 +
pnpm-lock.yaml | 78 +++++++++++++++++++++++++++-
src/app/App.css | 12 +++++
src/app/App.tsx | 69 ++++++++++++++++++-------
src/app/SpeakersPage.tsx | 23 +++++++++
src/app/routes.tsx | 14 +++++
src/lib/services/speakerService.ts | 82 +++++++++++++++---------------
7 files changed, 219 insertions(+), 61 deletions(-)
create mode 100644 src/app/SpeakersPage.tsx
create mode 100644 src/app/routes.tsx
diff --git a/package.json b/package.json
index edd6041..0dbfbe0 100644
--- a/package.json
+++ b/package.json
@@ -15,6 +15,8 @@
"cheerio": "1.0.0-rc.12",
"react": "experimental",
"react-dom": "experimental",
+ "react-loader-spinner": "^5.3.4",
+ "react-router-dom": "^6.9.0",
"rect-use": "^1.0.0"
},
"devDependencies": {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index fec9eb2..195927a 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -10,6 +10,8 @@ specifiers:
cheerio: 1.0.0-rc.12
react: experimental
react-dom: experimental
+ react-loader-spinner: ^5.3.4
+ react-router-dom: ^6.9.0
rect-use: ^1.0.0
typescript: ^4.9.3
vite: ^3.2.5
@@ -20,6 +22,8 @@ dependencies:
cheerio: 1.0.0-rc.12
react: 0.0.0-experimental-9c54b29b4-20230322
react-dom: 0.0.0-experimental-9c54b29b4-20230322_ed6xpwya6oca3tppk6uilvo2my
+ react-loader-spinner: 5.3.4_tah32hmxhmi2g7goovfvj5m5ou
+ react-router-dom: 6.9.0_tah32hmxhmi2g7goovfvj5m5ou
rect-use: 1.0.0_tah32hmxhmi2g7goovfvj5m5ou
devDependencies:
@@ -464,6 +468,11 @@ packages:
tslib: 1.14.1
dev: false
+ /@remix-run/router/1.4.0:
+ resolution: {integrity: sha512-BJ9SxXux8zAg991UmT8slpwpsd31K1dHHbD3Ba4VzD+liLQ4WAMSxQp2d2ZPRPfN0jN2NPRowcSSoM7lCaF08Q==}
+ engines: {node: '>=14'}
+ dev: false
+
/@tanstack/query-core/4.27.0:
resolution: {integrity: sha512-sm+QncWaPmM73IPwFlmWSKPqjdTXZeFf/7aEmWh00z7yl2FjqophPt0dE1EHW9P1giMC5rMviv7OUbSDmWzXXA==}
dev: false
@@ -587,7 +596,7 @@ packages:
babel-plugin-syntax-jsx: 6.18.0
lodash: 4.17.21
picomatch: 2.3.1
- styled-components: 5.3.9_tah32hmxhmi2g7goovfvj5m5ou
+ styled-components: 5.3.9_yq6yrxxdqxx5g35vt2chfkqpai
dev: false
/babel-plugin-syntax-jsx/6.18.0:
@@ -1291,11 +1300,51 @@ packages:
resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
dev: false
+ /react-is/18.2.0:
+ resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==}
+ dev: false
+
+ /react-loader-spinner/5.3.4_tah32hmxhmi2g7goovfvj5m5ou:
+ resolution: {integrity: sha512-G2vw4ssX+RDZ/vfaeva06yfNqyFViv/u+tVZ3kFLy5TKNlNx2DbuwreBSpRtPespQA+VxinxUJsigwLwG9erOg==}
+ peerDependencies:
+ react: ^16.0.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0
+ dependencies:
+ react: 0.0.0-experimental-9c54b29b4-20230322
+ react-dom: 0.0.0-experimental-9c54b29b4-20230322_ed6xpwya6oca3tppk6uilvo2my
+ react-is: 18.2.0
+ styled-components: 5.3.9_yq6yrxxdqxx5g35vt2chfkqpai
+ styled-tools: 1.7.2
+ dev: false
+
/react-refresh/0.14.0:
resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==}
engines: {node: '>=0.10.0'}
dev: true
+ /react-router-dom/6.9.0_tah32hmxhmi2g7goovfvj5m5ou:
+ resolution: {integrity: sha512-/seUAPY01VAuwkGyVBPCn1OXfVbaWGGu4QN9uj0kCPcTyNYgL1ldZpxZUpRU7BLheKQI4Twtl/OW2nHRF1u26Q==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ react: '>=16.8'
+ react-dom: '>=16.8'
+ dependencies:
+ '@remix-run/router': 1.4.0
+ react: 0.0.0-experimental-9c54b29b4-20230322
+ react-dom: 0.0.0-experimental-9c54b29b4-20230322_ed6xpwya6oca3tppk6uilvo2my
+ react-router: 6.9.0_ed6xpwya6oca3tppk6uilvo2my
+ dev: false
+
+ /react-router/6.9.0_ed6xpwya6oca3tppk6uilvo2my:
+ resolution: {integrity: sha512-51lKevGNUHrt6kLuX3e/ihrXoXCa9ixY/nVWRLlob4r/l0f45x3SzBvYJe3ctleLUQQ5fVa4RGgJOTH7D9Umhw==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ react: '>=16.8'
+ dependencies:
+ '@remix-run/router': 1.4.0
+ react: 0.0.0-experimental-9c54b29b4-20230322
+ dev: false
+
/react/0.0.0-experimental-9c54b29b4-20230322:
resolution: {integrity: sha512-aFi5dUOoDIxM1zVPbrwcltNii/ZEBJGj1ODqmq+RIPScX/Q7fpHnBHHoomJIfBxx9bhK13ygr1bDWmj0Q13V0Q==}
engines: {node: '>=0.10.0'}
@@ -1399,6 +1448,33 @@ packages:
supports-color: 5.5.0
dev: false
+ /styled-components/5.3.9_yq6yrxxdqxx5g35vt2chfkqpai:
+ resolution: {integrity: sha512-Aj3kb13B75DQBo2oRwRa/APdB5rSmwUfN5exyarpX+x/tlM/rwZA2vVk2vQgVSP6WKaZJHWwiFrzgHt+CLtB4A==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ react: '>= 16.8.0'
+ react-dom: '>= 16.8.0'
+ react-is: '>= 16.8.0'
+ dependencies:
+ '@babel/helper-module-imports': 7.18.6
+ '@babel/traverse': 7.21.3_supports-color@5.5.0
+ '@emotion/is-prop-valid': 1.2.0
+ '@emotion/stylis': 0.8.5
+ '@emotion/unitless': 0.7.5
+ babel-plugin-styled-components: 2.0.7_styled-components@5.3.9
+ css-to-react-native: 3.2.0
+ hoist-non-react-statics: 3.3.2
+ react: 0.0.0-experimental-9c54b29b4-20230322
+ react-dom: 0.0.0-experimental-9c54b29b4-20230322_ed6xpwya6oca3tppk6uilvo2my
+ react-is: 18.2.0
+ shallowequal: 1.1.0
+ supports-color: 5.5.0
+ dev: false
+
+ /styled-tools/1.7.2:
+ resolution: {integrity: sha512-IjLxzM20RMwAsx8M1QoRlCG/Kmq8lKzCGyospjtSXt/BTIIcvgTonaxQAsKnBrsZNwhpHzO9ADx5te0h76ILVg==}
+ dev: false
+
/stylefire/7.0.3:
resolution: {integrity: sha512-Q0l7NSeFz/OkX+o6/7Zg3VZxSAZeQzQpYomWmIpOehFM/rJNMSLVX5fgg6Q48ut2ETNKwdhm97mPNU643EBCoQ==}
dependencies:
diff --git a/src/app/App.css b/src/app/App.css
index 2c5e2ef..c985096 100644
--- a/src/app/App.css
+++ b/src/app/App.css
@@ -39,3 +39,15 @@
.read-the-docs {
color: #888;
}
+
+.nav{
+
+ padding:20px;
+}
+.navItem{
+
+ margin:10px;
+ background-color: #444444;
+ border-radius: 10px;
+ padding:12px;
+}
diff --git a/src/app/App.tsx b/src/app/App.tsx
index 089f557..88f5bd9 100644
--- a/src/app/App.tsx
+++ b/src/app/App.tsx
@@ -1,25 +1,56 @@
-import { Suspense } from 'react'
+import { Suspense } from "react";
-import reactLogo from '../assets/react.svg'
+import { createBrowserRouter, RouterProvider, Link } from "react-router-dom";
-import UsersPage from './users/UsersPage'
-import './App.css'
+import "./App.css";
+import UsersPage from "./users/UsersPage";
+import { Audio, Blocks } from "react-loader-spinner";
+import { SpeakersPage } from "./SpeakersPage";
+import Root from "./routes";
+import logo from "../assets/react.svg"
-function App() {
+const router = createBrowserRouter([
+ {
+ path: "/",
+ element: ,
+ children: [
+ {
+ path: "/",
+ element: (
+ loading...
}>
+
+
+ ),
+ },
+ {
+ path: "/constantine/speakers",
+ element: (
+ }>
+
+
+ ),
+ },
+ ],
+ },
+]);
- return (
-
-
-

-
-
Loading…}>
-
-
-
- React 18 use() hook showcase
-
-
- )
+function App() {
+ return (
+
+
+

+
+
+
React 18 use() hook showcase
+
+ );
}
-export default App
+export default App;
diff --git a/src/app/SpeakersPage.tsx b/src/app/SpeakersPage.tsx
new file mode 100644
index 0000000..90e43aa
--- /dev/null
+++ b/src/app/SpeakersPage.tsx
@@ -0,0 +1,23 @@
+import { use } from "react";
+
+import Title from "@/components/Title";
+import { speakerService, Speaker } from "@/lib/services/speakerService";
+
+
+export function SpeakersPage() {
+ const speakers = use(speakerService.fetchSpeakers());
+
+ console.log(speakers)
+ return (
+ <>
+ Speakers
+
+ {speakers.map((speaker) => (
+ {speaker.name} ({speaker.lecture})
+ ))}
+
+ >
+ );
+}
+
+
diff --git a/src/app/routes.tsx b/src/app/routes.tsx
new file mode 100644
index 0000000..c7e4a2a
--- /dev/null
+++ b/src/app/routes.tsx
@@ -0,0 +1,14 @@
+import reactLogo from "../../assets/react.svg";
+import { Link, Outlet } from "react-router-dom";
+
+export default function Root() {
+ return (
+
+
+
+
+ );
+}
diff --git a/src/lib/services/speakerService.ts b/src/lib/services/speakerService.ts
index fca35c6..a0cec4a 100644
--- a/src/lib/services/speakerService.ts
+++ b/src/lib/services/speakerService.ts
@@ -4,52 +4,52 @@ import { load } from 'cheerio'
import { CODESTANTINE_URL } from '@/config/constants'
export type Speaker = {
- id: string
- name: string
- lecture: string
+ id: string
+ name: string
+ lecture: string
}
class SpeakerService {
- async fetchSpeakers(): Promise<{}[]> {
- try {
- // Go to the dev.to tags page
- const response = await axios.get(CODESTANTINE_URL)
-
- // Get the HTML code of the webpage
- const html = await response.data
- const $ = load(html)
-
- // const speakers: Speaker[] = []
-
- // Find all elements with crayons-tag class, find their innerText and add them to the tags array
- const speakersTopicsArr = $('h3.elementor-heading-title')
- .map(function () {
- return $(this).text()
- })
- .get()
-
- const speakers: any[] = []
- for (let index = 0; index < speakersTopicsArr.length; index++) {
- const elem = speakersTopicsArr[index]
-
- let speaker: any = {}
- const isName = index % 2 === 0
-
- if (isName || index === 0) {
- speaker.id = index
- speaker.name = elem
- speakers[index] = speaker
- } else {
- speaker = speakers[index - 1]
- speaker.lecture = elem
- }
- }
-
- return speakers
- } catch (error) {
- throw error
+ async fetchSpeakers(): Promise<{}[]> {
+ try {
+ // Go to the dev.to tags page
+ const response = await axios.get(CODESTANTINE_URL)
+
+ // Get the HTML code of the webpage
+ const html = await response.data
+ const $ = load(html)
+
+ // const speakers: Speaker[] = []
+
+ // Find all elements with crayons-tag class, find their innerText and add them to the tags array
+ const speakersTopicsArr = $('h3.elementor-heading-title')
+ .map(function() {
+ return $(this).text()
+ })
+ .get()
+
+ const speakers: any[] = []
+ for (let index = 0; index < speakersTopicsArr.length; index++) {
+ const elem = speakersTopicsArr[index]
+
+ let speaker: any = {}
+ const isName = index % 2 === 0
+
+ if (isName || index === 0) {
+ speaker.id = index
+ speaker.name = elem
+ speakers[index] = speaker
+ } else {
+ speaker = speakers[index - 1]
+ speaker.lecture = elem
}
+ }
+
+ return speakers.filter(spk => !!spk);
+ } catch (error) {
+ throw error
}
+ }
}
export const speakerService = new SpeakerService()
From c37b57c309f9e71b11713fc5da8d85ed5a073e8e Mon Sep 17 00:00:00 2001
From: pikqi
Date: Fri, 24 Mar 2023 23:45:11 +0100
Subject: [PATCH 2/5] Moves router to a seperate file
---
src/app/App.tsx | 46 ++++---------------------------------------
src/app/AppRoutes.tsx | 46 +++++++++++++++++++++++++++++++++++++++++++
2 files changed, 50 insertions(+), 42 deletions(-)
create mode 100644 src/app/AppRoutes.tsx
diff --git a/src/app/App.tsx b/src/app/App.tsx
index 88f5bd9..0986a1b 100644
--- a/src/app/App.tsx
+++ b/src/app/App.tsx
@@ -1,45 +1,7 @@
-import { Suspense } from "react";
-
-import { createBrowserRouter, RouterProvider, Link } from "react-router-dom";
-
+import React from "react";
import "./App.css";
-import UsersPage from "./users/UsersPage";
-import { Audio, Blocks } from "react-loader-spinner";
-import { SpeakersPage } from "./SpeakersPage";
-import Root from "./routes";
-import logo from "../assets/react.svg"
-
-const router = createBrowserRouter([
- {
- path: "/",
- element: ,
- children: [
- {
- path: "/",
- element: (
- loading...}>
-
-
- ),
- },
- {
- path: "/constantine/speakers",
- element: (
- }>
-
-
- ),
- },
- ],
- },
-]);
+import logo from "../assets/react.svg";
+import { AppRoutes } from "./AppRoutes";
function App() {
return (
@@ -47,7 +9,7 @@ function App() {
-
+
React 18 use() hook showcase
);
diff --git a/src/app/AppRoutes.tsx b/src/app/AppRoutes.tsx
new file mode 100644
index 0000000..98f01ac
--- /dev/null
+++ b/src/app/AppRoutes.tsx
@@ -0,0 +1,46 @@
+import React, { Suspense } from "react";
+import { Blocks } from "react-loader-spinner";
+import { createBrowserRouter, RouterProvider } from "react-router-dom";
+import Root from "./routes";
+import { SpeakersPage } from "./SpeakersPage";
+import UsersPage from "./users/UsersPage";
+
+const router = createBrowserRouter([
+ {
+ path: "/",
+ element: ,
+ children: [
+ {
+ path: "/",
+ element: (
+ loading...}>
+
+
+ ),
+ },
+ {
+ path: "/constantine/speakers",
+ element: (
+
+ }
+ >
+
+
+ ),
+ },
+ ],
+ },
+]);
+
+export const AppRoutes = () => {
+ return ;
+};
From bb0611958539891573b46a940c95aa84c2b9cfb3 Mon Sep 17 00:00:00 2001
From: pikqi
Date: Fri, 24 Mar 2023 23:51:00 +0100
Subject: [PATCH 3/5] Adds prettierrc and formats all files
---
.prettierignore | 27 ++++++++++
.prettierrc.json | 6 +++
src/app/App.tsx | 28 +++++-----
src/app/AppRoutes.tsx | 84 +++++++++++++++---------------
src/app/SpeakersPage.tsx | 35 ++++++-------
src/app/routes.tsx | 26 +++++----
src/lib/services/speakerService.ts | 82 ++++++++++++++---------------
src/lib/services/userService.ts | 3 +-
8 files changed, 164 insertions(+), 127 deletions(-)
create mode 100644 .prettierignore
create mode 100644 .prettierrc.json
diff --git a/.prettierignore b/.prettierignore
new file mode 100644
index 0000000..a26af3c
--- /dev/null
+++ b/.prettierignore
@@ -0,0 +1,27 @@
+*.css
+*.html
+
+pnpm-lock.yaml
+
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+dist
+dist-ssr
+*.local
+
+.vscode/*
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/.prettierrc.json b/.prettierrc.json
new file mode 100644
index 0000000..e74ed9f
--- /dev/null
+++ b/.prettierrc.json
@@ -0,0 +1,6 @@
+{
+ "trailingComma": "es5",
+ "tabWidth": 4,
+ "semi": false,
+ "singleQuote": true
+}
diff --git a/src/app/App.tsx b/src/app/App.tsx
index 0986a1b..4457a80 100644
--- a/src/app/App.tsx
+++ b/src/app/App.tsx
@@ -1,18 +1,18 @@
-import React from "react";
-import "./App.css";
-import logo from "../assets/react.svg";
-import { AppRoutes } from "./AppRoutes";
+import React from 'react'
+import './App.css'
+import logo from '../assets/react.svg'
+import { AppRoutes } from './AppRoutes'
function App() {
- return (
-
-
-

-
-
-
React 18 use() hook showcase
-
- );
+ return (
+
+
+

+
+
+
React 18 use() hook showcase
+
+ )
}
-export default App;
+export default App
diff --git a/src/app/AppRoutes.tsx b/src/app/AppRoutes.tsx
index 98f01ac..d7c8f16 100644
--- a/src/app/AppRoutes.tsx
+++ b/src/app/AppRoutes.tsx
@@ -1,46 +1,46 @@
-import React, { Suspense } from "react";
-import { Blocks } from "react-loader-spinner";
-import { createBrowserRouter, RouterProvider } from "react-router-dom";
-import Root from "./routes";
-import { SpeakersPage } from "./SpeakersPage";
-import UsersPage from "./users/UsersPage";
+import React, { Suspense } from 'react'
+import { Blocks } from 'react-loader-spinner'
+import { createBrowserRouter, RouterProvider } from 'react-router-dom'
+import Root from './routes'
+import { SpeakersPage } from './SpeakersPage'
+import UsersPage from './users/UsersPage'
const router = createBrowserRouter([
- {
- path: "/",
- element: ,
- children: [
- {
- path: "/",
- element: (
- loading...}>
-
-
- ),
- },
- {
- path: "/constantine/speakers",
- element: (
-
- }
- >
-
-
- ),
- },
- ],
- },
-]);
+ {
+ path: '/',
+ element: ,
+ children: [
+ {
+ path: '/',
+ element: (
+ loading...}>
+
+
+ ),
+ },
+ {
+ path: '/constantine/speakers',
+ element: (
+
+ }
+ >
+
+
+ ),
+ },
+ ],
+ },
+])
export const AppRoutes = () => {
- return ;
-};
+ return
+}
diff --git a/src/app/SpeakersPage.tsx b/src/app/SpeakersPage.tsx
index 90e43aa..c7c07e4 100644
--- a/src/app/SpeakersPage.tsx
+++ b/src/app/SpeakersPage.tsx
@@ -1,23 +1,22 @@
-import { use } from "react";
-
-import Title from "@/components/Title";
-import { speakerService, Speaker } from "@/lib/services/speakerService";
+import { use } from 'react'
+import Title from '@/components/Title'
+import { speakerService, Speaker } from '@/lib/services/speakerService'
export function SpeakersPage() {
- const speakers = use(speakerService.fetchSpeakers());
+ const speakers = use(speakerService.fetchSpeakers())
- console.log(speakers)
- return (
- <>
- Speakers
-
- {speakers.map((speaker) => (
- {speaker.name} ({speaker.lecture})
- ))}
-
- >
- );
+ console.log(speakers)
+ return (
+ <>
+ Speakers
+
+ {speakers.map((speaker) => (
+
+ {speaker.name} ({speaker.lecture})
+
+ ))}
+
+ >
+ )
}
-
-
diff --git a/src/app/routes.tsx b/src/app/routes.tsx
index c7e4a2a..2080148 100644
--- a/src/app/routes.tsx
+++ b/src/app/routes.tsx
@@ -1,14 +1,18 @@
-import reactLogo from "../../assets/react.svg";
-import { Link, Outlet } from "react-router-dom";
+import reactLogo from '../../assets/react.svg'
+import { Link, Outlet } from 'react-router-dom'
export default function Root() {
- return (
-
-
-
-
- );
+ return (
+
+
+
+
+ )
}
diff --git a/src/lib/services/speakerService.ts b/src/lib/services/speakerService.ts
index a0cec4a..312efdb 100644
--- a/src/lib/services/speakerService.ts
+++ b/src/lib/services/speakerService.ts
@@ -4,52 +4,52 @@ import { load } from 'cheerio'
import { CODESTANTINE_URL } from '@/config/constants'
export type Speaker = {
- id: string
- name: string
- lecture: string
+ id: string
+ name: string
+ lecture: string
}
class SpeakerService {
- async fetchSpeakers(): Promise<{}[]> {
- try {
- // Go to the dev.to tags page
- const response = await axios.get(CODESTANTINE_URL)
-
- // Get the HTML code of the webpage
- const html = await response.data
- const $ = load(html)
-
- // const speakers: Speaker[] = []
-
- // Find all elements with crayons-tag class, find their innerText and add them to the tags array
- const speakersTopicsArr = $('h3.elementor-heading-title')
- .map(function() {
- return $(this).text()
- })
- .get()
-
- const speakers: any[] = []
- for (let index = 0; index < speakersTopicsArr.length; index++) {
- const elem = speakersTopicsArr[index]
-
- let speaker: any = {}
- const isName = index % 2 === 0
-
- if (isName || index === 0) {
- speaker.id = index
- speaker.name = elem
- speakers[index] = speaker
- } else {
- speaker = speakers[index - 1]
- speaker.lecture = elem
+ async fetchSpeakers(): Promise<{}[]> {
+ try {
+ // Go to the dev.to tags page
+ const response = await axios.get(CODESTANTINE_URL)
+
+ // Get the HTML code of the webpage
+ const html = await response.data
+ const $ = load(html)
+
+ // const speakers: Speaker[] = []
+
+ // Find all elements with crayons-tag class, find their innerText and add them to the tags array
+ const speakersTopicsArr = $('h3.elementor-heading-title')
+ .map(function () {
+ return $(this).text()
+ })
+ .get()
+
+ const speakers: any[] = []
+ for (let index = 0; index < speakersTopicsArr.length; index++) {
+ const elem = speakersTopicsArr[index]
+
+ let speaker: any = {}
+ const isName = index % 2 === 0
+
+ if (isName || index === 0) {
+ speaker.id = index
+ speaker.name = elem
+ speakers[index] = speaker
+ } else {
+ speaker = speakers[index - 1]
+ speaker.lecture = elem
+ }
+ }
+
+ return speakers.filter((spk) => !!spk)
+ } catch (error) {
+ throw error
}
- }
-
- return speakers.filter(spk => !!spk);
- } catch (error) {
- throw error
}
- }
}
export const speakerService = new SpeakerService()
diff --git a/src/lib/services/userService.ts b/src/lib/services/userService.ts
index ea43d05..2a7b777 100644
--- a/src/lib/services/userService.ts
+++ b/src/lib/services/userService.ts
@@ -7,7 +7,8 @@ class UserService {
singleUser: (id: number) => `/users/${id}`,
}
- private mapUsers = (usersArr: any[]) => usersArr.map((user: any) => new User(user))
+ private mapUsers = (usersArr: any[]) =>
+ usersArr.map((user: any) => new User(user))
private mapUser = (userData: any) => new User(userData)
async fetchUsers() {
From d8f4b5fc86d4d525f250d88299c219fd2c88c808 Mon Sep 17 00:00:00 2001
From: pikqi
Date: Fri, 24 Mar 2023 23:55:23 +0100
Subject: [PATCH 4/5] Removes a console log
---
src/app/SpeakersPage.tsx | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/app/SpeakersPage.tsx b/src/app/SpeakersPage.tsx
index c7c07e4..be41e8b 100644
--- a/src/app/SpeakersPage.tsx
+++ b/src/app/SpeakersPage.tsx
@@ -6,7 +6,6 @@ import { speakerService, Speaker } from '@/lib/services/speakerService'
export function SpeakersPage() {
const speakers = use(speakerService.fetchSpeakers())
- console.log(speakers)
return (
<>
Speakers
From 1e685fcf218f78e15e43211ca6564df032d951a0 Mon Sep 17 00:00:00 2001
From: pikqi
Date: Sat, 25 Mar 2023 00:06:36 +0100
Subject: [PATCH 5/5] Prettiefies NavBar compoenent
---
src/app/AppRoutes.tsx | 3 ++-
src/app/{routes.tsx => NavBar.tsx} | 0
2 files changed, 2 insertions(+), 1 deletion(-)
rename src/app/{routes.tsx => NavBar.tsx} (100%)
diff --git a/src/app/AppRoutes.tsx b/src/app/AppRoutes.tsx
index d7c8f16..299d8a9 100644
--- a/src/app/AppRoutes.tsx
+++ b/src/app/AppRoutes.tsx
@@ -1,6 +1,7 @@
import React, { Suspense } from 'react'
import { Blocks } from 'react-loader-spinner'
import { createBrowserRouter, RouterProvider } from 'react-router-dom'
+import NavBar from './NavBar'
import Root from './routes'
import { SpeakersPage } from './SpeakersPage'
import UsersPage from './users/UsersPage'
@@ -8,7 +9,7 @@ import UsersPage from './users/UsersPage'
const router = createBrowserRouter([
{
path: '/',
- element: ,
+ element: ,
children: [
{
path: '/',
diff --git a/src/app/routes.tsx b/src/app/NavBar.tsx
similarity index 100%
rename from src/app/routes.tsx
rename to src/app/NavBar.tsx