mirror of
https://github.com/ershisan99/flashcards-example-project.git
synced 2025-12-18 05:09:23 +00:00
wip
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
...require('@it-incubator/prettier-config'),
|
...require('@it-incubator/prettier-config'),
|
||||||
|
tabWidth: 4,
|
||||||
//override settings here
|
//override settings here
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
import { useForm } from 'react-hook-form'
|
import { useForm } from 'react-hook-form'
|
||||||
import { Link } from 'react-router-dom'
|
import { Link } from 'react-router-dom'
|
||||||
|
|
||||||
import { Button, Card, ControlledTextField, Typography } from '../../ui'
|
import { Button, Card, ControlledTextField, Typography } from '@/components'
|
||||||
import { DevTool } from '@hookform/devtools'
|
import { DevTool } from '@hookform/devtools'
|
||||||
import { zodResolver } from '@hookform/resolvers/zod'
|
import { zodResolver } from '@hookform/resolvers/zod'
|
||||||
import { z } from 'zod'
|
import { z } from 'zod'
|
||||||
|
|||||||
@@ -117,7 +117,12 @@ export const DecksPage = () => {
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className={s.filters}>
|
<div className={s.filters}>
|
||||||
<TextField onValueChange={setSearch} placeholder={'Search'} search value={search} />
|
<TextField
|
||||||
|
onValueChange={setSearch}
|
||||||
|
placeholder={'Search'}
|
||||||
|
search
|
||||||
|
value={search}
|
||||||
|
/>
|
||||||
<Tabs onValueChange={value => setCurrentTab(value as Tab)} value={currentTab}>
|
<Tabs onValueChange={value => setCurrentTab(value as Tab)} value={currentTab}>
|
||||||
<TabsList>
|
<TabsList>
|
||||||
<TabsTrigger value={'my'}>My decks</TabsTrigger>
|
<TabsTrigger value={'my'}>My decks</TabsTrigger>
|
||||||
|
|||||||
@@ -6,19 +6,31 @@ import {
|
|||||||
GetDecksArgs,
|
GetDecksArgs,
|
||||||
UpdateDeckArgs,
|
UpdateDeckArgs,
|
||||||
} from './decks.types'
|
} from './decks.types'
|
||||||
|
|
||||||
import { baseApi } from '@/services'
|
import { baseApi } from '@/services'
|
||||||
|
|
||||||
const decksService = baseApi.injectEndpoints({
|
const decksService = baseApi.injectEndpoints({
|
||||||
endpoints: builder => ({
|
endpoints: builder => ({
|
||||||
getDecks: builder.query<DecksResponse, GetDecksArgs | void>({
|
createDeck: builder.mutation<DeckResponse, CreateDeckArgs>({
|
||||||
query: args => {
|
invalidatesTags: ['Decks'],
|
||||||
return {
|
onQueryStarted: async (_, { dispatch, getCacheEntry, getState, queryFulfilled }) => {
|
||||||
url: `v1/decks`,
|
const data = getCacheEntry()
|
||||||
params: args ?? undefined,
|
const state = getState()
|
||||||
}
|
|
||||||
|
decksService.util.re
|
||||||
|
await queryFulfilled
|
||||||
},
|
},
|
||||||
providesTags: ['Decks'],
|
query: body => ({
|
||||||
|
body,
|
||||||
|
method: 'POST',
|
||||||
|
url: `v1/decks`,
|
||||||
|
}),
|
||||||
|
}),
|
||||||
|
deleteDeck: builder.mutation<void, { id: string }>({
|
||||||
|
invalidatesTags: ['Decks'],
|
||||||
|
query: ({ id }) => ({
|
||||||
|
method: 'DELETE',
|
||||||
|
url: `v1/decks/${id}`,
|
||||||
|
}),
|
||||||
}),
|
}),
|
||||||
getDeckById: builder.query<DeckResponse, { id: string }>({
|
getDeckById: builder.query<DeckResponse, { id: string }>({
|
||||||
query: ({ id }) => `v1/decks/${id}`,
|
query: ({ id }) => `v1/decks/${id}`,
|
||||||
@@ -26,37 +38,31 @@ const decksService = baseApi.injectEndpoints({
|
|||||||
getDeckCards: builder.query<CardsResponse, { id: string }>({
|
getDeckCards: builder.query<CardsResponse, { id: string }>({
|
||||||
query: ({ id }) => `v1/decks/${id}/cards`,
|
query: ({ id }) => `v1/decks/${id}/cards`,
|
||||||
}),
|
}),
|
||||||
createDeck: builder.mutation<DeckResponse, CreateDeckArgs>({
|
getDecks: builder.query<DecksResponse, GetDecksArgs | void>({
|
||||||
query: body => ({
|
providesTags: ['Decks'],
|
||||||
|
query: args => {
|
||||||
|
return {
|
||||||
|
params: args ?? undefined,
|
||||||
url: `v1/decks`,
|
url: `v1/decks`,
|
||||||
method: 'POST',
|
}
|
||||||
body,
|
},
|
||||||
}),
|
|
||||||
invalidatesTags: ['Decks'],
|
|
||||||
}),
|
|
||||||
deleteDeck: builder.mutation<void, { id: string }>({
|
|
||||||
query: ({ id }) => ({
|
|
||||||
url: `v1/decks/${id}`,
|
|
||||||
method: 'DELETE',
|
|
||||||
}),
|
|
||||||
invalidatesTags: ['Decks'],
|
|
||||||
}),
|
}),
|
||||||
updateDeck: builder.mutation<DeckResponse, UpdateDeckArgs>({
|
updateDeck: builder.mutation<DeckResponse, UpdateDeckArgs>({
|
||||||
query: ({ id, ...body }) => ({
|
|
||||||
url: `v1/decks/${id}`,
|
|
||||||
method: 'PATCH',
|
|
||||||
body,
|
|
||||||
}),
|
|
||||||
invalidatesTags: ['Decks'],
|
invalidatesTags: ['Decks'],
|
||||||
|
query: ({ id, ...body }) => ({
|
||||||
|
body,
|
||||||
|
method: 'PATCH',
|
||||||
|
url: `v1/decks/${id}`,
|
||||||
|
}),
|
||||||
}),
|
}),
|
||||||
}),
|
}),
|
||||||
})
|
})
|
||||||
|
|
||||||
export const {
|
export const {
|
||||||
useGetDecksQuery,
|
|
||||||
useGetDeckByIdQuery,
|
|
||||||
useGetDeckCardsQuery,
|
|
||||||
useCreateDeckMutation,
|
useCreateDeckMutation,
|
||||||
useDeleteDeckMutation,
|
useDeleteDeckMutation,
|
||||||
|
useGetDeckByIdQuery,
|
||||||
|
useGetDeckCardsQuery,
|
||||||
|
useGetDecksQuery,
|
||||||
useUpdateDeckMutation,
|
useUpdateDeckMutation,
|
||||||
} = decksService
|
} = decksService
|
||||||
|
|||||||
Reference in New Issue
Block a user