Projekt

Obecné

Profil

Stáhnout (4.08 KB) Statistiky
| Větev: | Tag: | Revize:
1
import { createAsyncThunk } from "@reduxjs/toolkit"
2
import { createNoteRequest, deleteNoteRequest, getAllNotesRequest, updateNoteRequest } from "../../api/notesservice"
3
import { SortOptions } from "../../types/general";
4
import { Note } from "../../types/note";
5
import { useDispatch } from "react-redux";
6
import { AppDispatch } from "../store";
7

    
8
export const deleteNote = createAsyncThunk(
9
    "notes/deleteNote",
10
    async ({ noteId }: { noteId: string }) => {
11
        try {
12

    
13
            const response = await deleteNoteRequest(noteId);
14

    
15
            console.log(response);
16

    
17
            if (response.status === 200) {
18
                return { deletedNoteId: noteId };
19
            }
20
            else {
21
                console.log("Error");
22
                return Promise.reject(response.data ? response.data : "Error")
23
            }
24
        } catch (err: any) {
25
            console.log(err);
26
            return Promise.reject(err.response.data)
27
        }
28
    }
29
)
30

    
31
export const createNote = createAsyncThunk(
32
    "notes/createNote",
33
    async ({ newNote }: { newNote: Note}) => {
34
        try {
35
            console.log(newNote.note);
36
            const response = await createNoteRequest(newNote);
37
            console.log(response);
38
            if (response.status === 201) {
39
                return { createdNote: newNote };
40
            }
41
            else {
42
                console.log("Error");
43
                return Promise.reject(response.data ? response.data : "Error")
44
            }
45
        } catch (err: any) {
46
            console.log(err);
47
            return Promise.reject(err.response.data)
48
        }
49
    }
50
)
51

    
52
export const updateNote = createAsyncThunk(
53
    "notes/updateNote",
54
    async (note: Note) => {
55
        try {
56
            const response = await updateNoteRequest(note);
57
            if (response.status === 201) {
58
                return { updateNote: note };
59
            }
60
            else {
61
                console.log("Error");
62
                return Promise.reject(response.data ? response.data : "Error")
63
            }
64
        } catch (err: any) {
65
            console.log(err);
66
            return Promise.reject(err.response.data)
67
        }
68
    }
69
)
70

    
71

    
72

    
73
export const getAllNotes = createAsyncThunk(
74
    "notes/getAllNotes",
75
    async ({ myComments, generalComments, sortOptions }: { myComments: boolean, generalComments: boolean, sortOptions: { items: SortOptions, date: SortOptions } }) => {
76
        try {
77
            console.log("GET notes/getNotes/");
78

    
79
            const response = await getAllNotesRequest(myComments, generalComments, sortOptions);
80

    
81
            console.log(response);
82

    
83
            if (response.status === 200) {
84
                if (response.data.length > 0) {
85

    
86
                    let notes = [];
87
                    for (let i = 0; i < response.data.length; i++) {
88
                        let note = response.data[i];
89
                        notes.push({
90
                            uuid: (note as any).uuid,
91
                            username: (note as any).created_by,
92
                            userId: (note as any).created_by_id,
93
                            note: (note as any).note,
94
                            avatarUrl: (note as any).avatar,
95
                            items: (note as any).items,
96
                            replies: (note as any).replies ?? undefined,
97
                            createdTime: (note as any).created,
98
                            updatedTime: (note as any).updated,
99
                            noteColor: (note as any).note_color,
100
                            reply_to: (note as any).reply_to
101
                        })
102
                    }
103

    
104
                    return {
105
                        notes,
106
                    }
107
                }
108
                else {
109
                    // no notes
110
                    return {
111
                        notes: [],
112
                    }
113
                }
114
            }
115
            else {
116
                console.log("Error");
117
                return Promise.reject(response.data ? response.data : "Error")
118
            }
119
        } catch (err: any) {
120
            console.log(err);
121
            return Promise.reject(err.response.data)
122
        }
123
    }
124
)
(4-4/6)