diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 176d893..657be26 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,23 +1,23 @@ -name: Cypress Tests +# name: Cypress Tests -on: [push] +# on: [push] -jobs: - cypress-run: - runs-on: ubuntu-latest - environment: Test - steps: - - name: Checkout - uses: actions/checkout@v3 +# jobs: +# cypress-run: +# runs-on: ubuntu-latest +# environment: Test +# steps: +# - name: Checkout +# uses: actions/checkout@v3 - - name: Setup Node.js - uses: actions/setup-node@v3 - with: - node-version: '22.13.1' - cache: 'npm' +# - name: Setup Node.js +# uses: actions/setup-node@v3 +# with: +# node-version: '22.13.1' +# cache: 'npm' - - name: Install dependencies - run: npm ci +# - name: Install dependencies +# run: npm ci - - name: Build - run: npm run build \ No newline at end of file +# - name: Build +# run: npm run build \ No newline at end of file diff --git a/src/app/character/page.tsx b/src/app/character/page.tsx index 4521247..eada692 100644 --- a/src/app/character/page.tsx +++ b/src/app/character/page.tsx @@ -1,4 +1,3 @@ - export default function Character() { return (
diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 3468415..4f36e2f 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -2,6 +2,7 @@ import type { Metadata } from "next"; import { beau_rivage, geistSans, geistMono } from './fonts'; import "./globals.css"; import Header from "../components/layout/Header/header"; +import { DataProvider } from './providers/DataProvider'; export const metadata: Metadata = { title: "SilverGuild", @@ -18,12 +19,16 @@ export default function RootLayout({ -
-
-
-
- {children} -
+ +
+
+
+
+
+ {children} +
+
+
); diff --git a/src/app/page.tsx b/src/app/page.tsx index 7aa9555..6ff14df 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,14 +1,6 @@ -'use client' -import { useState } from 'react'; -export default function Home() { - const [userInfo, setUserInfo] = useState({ - name: "Elysa", - username: "bleu7", - email: "bleu@gmail.com", - characterCount: 7 - }) +export default function Home() { return (

SilverGuild

diff --git a/src/app/providers/DataProvider.tsx b/src/app/providers/DataProvider.tsx new file mode 100644 index 0000000..d85ba5a --- /dev/null +++ b/src/app/providers/DataProvider.tsx @@ -0,0 +1,40 @@ +'use client'; + +import { createContext, useContext, useState, ReactNode } from 'react'; +import { User } from '@/types/user'; +import { Character } from '@/types/character'; +import { SG_API_BASE_URL, SG_API_ENDPOINTS } from '@/lib/config'; +import { mockUser } from '@/lib/mock/userData'; +import { mockCharacters} from '@/lib/mock/characterData'; + +interface DataContextType { + user: User | null; + setUser: (user: User | null) => void; + characters: Character[]; + setCharacters: (characters: Character[]) => void; +} + +const DataContext = createContext(null); + +const USE_MOCK_DATA = true; + +export function DataProvider({ children }: {children : ReactNode}) { + const [ user, setUser ] = useState(USE_MOCK_DATA ? mockUser : null); + const [ characters, setCharacters ] = useState(USE_MOCK_DATA ? mockCharacters : []); + + return ( + + {children} + + ); +} + +export const useData = () => { + const context = useContext(DataContext); + + if (!context) { + throw new Error('useData must be used within a DataProvider') + } + + return context; +}; diff --git a/src/app/userHome/components/CharacterRoster.tsx b/src/app/userHome/components/CharacterRoster.tsx new file mode 100644 index 0000000..37ce013 --- /dev/null +++ b/src/app/userHome/components/CharacterRoster.tsx @@ -0,0 +1,31 @@ +import { Character } from '@/types/character'; +import CharacterRosterCard from './CharacterRosterCard'; + +interface CharacterRosterProps { + characters: Character[]; + userId: number; +} + +export default function CharacterRoster({ characters }: CharacterRosterProps) { + if (!characters) { + return
No user data available!
// Receive error from back end display + } + + console.log(characters); + + + let roster = characters.map((character) => { + return ( + + ) + } ) + + return ( +
+ { roster } +
+ ) +}; \ No newline at end of file diff --git a/src/app/userHome/components/CharacterRosterCard.tsx b/src/app/userHome/components/CharacterRosterCard.tsx new file mode 100644 index 0000000..9584dd8 --- /dev/null +++ b/src/app/userHome/components/CharacterRosterCard.tsx @@ -0,0 +1,34 @@ +import { Character } from '@/types/character'; + +interface CharacterRosterCardProps { + character: Character; +} + +export default function CharacterRosterCard({character}: CharacterRosterCardProps) { + return ( +
+
+ {character.name}/ +
+
+

{character.name}

+
+
+
Level:
+
{character.level}
+
+ +
+
Class:
+
{character.character_class_id}
+
+ +
+
Race:
+
{character.race_id}
+
+
+
+
+ ); +}; \ No newline at end of file diff --git a/src/app/userHome/components/ProfileDetails.tsx b/src/app/userHome/components/ProfileDetails.tsx index 006b8bb..d62dd75 100644 --- a/src/app/userHome/components/ProfileDetails.tsx +++ b/src/app/userHome/components/ProfileDetails.tsx @@ -1,13 +1,22 @@ -export default function ProfileDetails() { +import { User } from '@/types/user'; + +interface ProfileDetailsProps { + user: User; +} + +export default function ProfileDetails({ user }: ProfileDetailsProps) { return ( -
-
- {/* {""} */} -
-

-
- +
+
+ {
+
+
Username:
+
{ user.username }
+ +
Email:
+
{ user.email }
+
); } \ No newline at end of file diff --git a/src/app/userHome/page.tsx b/src/app/userHome/page.tsx index b128e2a..d10f2b8 100644 --- a/src/app/userHome/page.tsx +++ b/src/app/userHome/page.tsx @@ -1,9 +1,20 @@ +'use client'; + +import { useData } from '@/app/providers/DataProvider'; import ProfileDetails from './components/ProfileDetails'; +import CharacterRoster from './components/CharacterRoster'; export default function UserHome() { + const { user, characters } = useData(); + + if (!user) { + return
Loading user...
; // Receive error from back end display + } + return ( -
- +
+ +
); } diff --git a/src/components/layout/Header/header.tsx b/src/components/layout/Header/header.tsx index b480816..2d33f35 100644 --- a/src/components/layout/Header/header.tsx +++ b/src/components/layout/Header/header.tsx @@ -2,10 +2,10 @@ import Link from 'next/link' export default function Header() { return ( -
-
+
+
- +