Skip to content

Commit

Permalink
Merge pull request #2 from iQbe-Quiz/quiz_store
Browse files Browse the repository at this point in the history
Quiz store
  • Loading branch information
woodnx committed May 15, 2023
2 parents 790f8ba + 7cb96ef commit c2952e0
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 24 deletions.
2 changes: 1 addition & 1 deletion src/axios.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ axios.interceptors.request.use((request) => {

if (!idToken) return;

request.headers.common['Authorization'] = idToken
request.headers.Authorization = idToken
})
return request
},(error) => {
Expand Down
37 changes: 14 additions & 23 deletions src/components/QuizCardList.tsx
Original file line number Diff line number Diff line change
@@ -1,37 +1,28 @@
import QuizCard from "./QuizCard"
import axios from "../axios"
import { useEffect, useState } from "react"
import { useEffect } from "react"
import useQuizzesStore from "../store/quiz"
import { Center, Loader } from "@mantine/core"
// import { useFetch } from "../hooks"

interface Quizzes {
id: number,
question: string,
answer: string,
workbook: string,
level: string,
date: Date,
total: number,
right: number,
isFavorite: boolean,
registerdMylist: number[],
}

export default function QuizCardList() {
const userId = 8
const [ quizList, setList ] = useState<Quizzes[]>()
// const { data: quizList } = useFetch<Quizzes[]>(`/quizzes/${userId}`)
const quizzes = useQuizzesStore(state => state.quizzes)
const getQuizzes = useQuizzesStore(state => state.getQuiz)

useEffect(() => {
axios.get<Quizzes[]>(`/quizzes/${userId}`)
.then(res => res.data)
.then(setList)
getQuizzes()
}, [])

if (!quizList) return <div>loading</div>
if (!quizzes) {
return (
<Center>
<Loader/>
</Center>
)
}

return (
<>
{quizList?.map(({question, answer}, idx) => (
{quizzes?.map(({question, answer}, idx) => (
<QuizCard
key={idx}
index={idx+1}
Expand Down
44 changes: 44 additions & 0 deletions src/store/quiz.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import { create } from 'zustand'
import axios from '../axios'
import { AxiosRequestConfig } from 'axios'

export type Quiz = {
id: number,
question: string,
answer: string,
workbook: string,
level: string,
date: Date,
total: number,
right: number,
isFavorite: boolean,
registerdMylist: number[],
}

export type QuizRequestParams = {
page: number,
maxView: number,
seed: number,
workbooks: number[],
levels: number[],
queWord: string,
ansWord: string,
start?: string,
end?: string,
judgement?: string,
}

export type QuizState = {
quizzes: Quiz[] | null,
getQuiz: (params?: AxiosRequestConfig<QuizRequestParams>) => void
}

const useQuizzesStore = create<QuizState>((set) => ({
quizzes: null,
getQuiz: async (params) => {
const quizzes = await axios.get<Quiz[]>('/quizzes/8', params).then(res => res.data)
set({ quizzes })
}
}))

export default useQuizzesStore

0 comments on commit c2952e0

Please sign in to comment.