Projekt

Obecné

Profil

Stáhnout (2.98 KB) Statistiky
| Větev: | Tag: | Revize:
1
import { createAsyncThunk } from "@reduxjs/toolkit"
2
import { getItemRequest } from "../../api/itemservice"
3
import { getItemNotesRequest } from "../../api/notesservice"
4
import { ItemState } from "../reducers/itemSlice"
5

    
6
export const getItem = createAsyncThunk(
7
    "item/getItem",
8
    async (itemId: string) => {
9
        try {
10
            const response = await getItemRequest(itemId)
11
            console.log(response)
12
            if (response.status === 200) {
13
                return {
14
                    authorName: response.data.object[0].getty_data.display_name,
15
                    caption: response.data.object[0].caption,
16
                    concordances: response.data.concordances
17
                }
18
            } else {
19
                return Promise.reject(response.data ? response.data : "Error")
20
            }
21
        } catch (err: any) {
22
            return Promise.reject(err.response.data)
23
        }
24
    }
25
)
26

    
27
export const getNextConcordance = createAsyncThunk(
28
    "item/getNextConcordance",
29
    async (_, { getState, dispatch }) => {
30
        const state = getState() as ItemState;
31

    
32
        const nextIndex = (state.selectedConcordance + 1) % state.concordances.length;
33

    
34
        // Dispatch the getItem action with the next concordance id
35
        await dispatch(getItem(state.concordances[nextIndex].id));
36

    
37
        // Return the next concordance index for updating the state in the reducer
38
        return nextIndex;
39
    }
40
);
41

    
42
export const getPreviousConcordance = createAsyncThunk(
43
    "item/getPreviousConcordance",
44
    async (_, { getState, dispatch }) => {
45
        const state = getState() as ItemState;
46
        const previousIndex = (state.selectedConcordance - 1 + state.concordances.length) % state.concordances.length;
47
        await dispatch(getItem(state.concordances[previousIndex].id));
48
        return previousIndex;
49
    }
50
);
51

    
52
// export const getItemConcordances = createAsyncThunk(
53
//     "item/getItemConcordances",
54
//     async (itemId : string) => {
55
//         try {
56
//             const response = await getItemConcordancesRequest(itemId)
57
//             console.log(response)
58
//             if (response.status === 200) {
59
//                 return {
60
//                     // TODO set item concordances
61
//                 }
62
//             } else {
63
//                 return Promise.reject(response.data ? response.data : "Error")
64
//             }
65
//         } catch (err: any) {
66
//             return Promise.reject(err.response.data)
67
//         }
68
//     }
69
// )
70

    
71
export const getItemNotes = createAsyncThunk(
72
    "item/getItemNotes",
73
    async (itemId: string) => {
74
        try {
75
            const response = await getItemNotesRequest(itemId)
76
            console.log(response)
77
            if (response.status === 200) {
78
                return {
79
                    // TODO set item notes
80
                }
81
            } else {
82
                return Promise.reject(response.data ? response.data : "Error")
83
            }
84
        } catch (err: any) {
85
            return Promise.reject(err.response.data)
86
        }
87
    }
88
)
(1-1/2)