Projekt

Obecné

Profil

Stáhnout (5.09 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

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

    
11
            const response = await deleteNoteRequest(noteId);
12

    
13
            console.log(response);
14

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

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

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

    
69

    
70

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

    
77
            const response = await getAllNotesRequest(myComments, generalComments, sortOptions);
78

    
79
            console.log(response);
80

    
81
            if (response.status === 200) {
82
                if (response.data.length > 0) {
83

    
84
                    let notes = [];
85
                    for (let i = 0; i < response.data.length; i++) {
86
                        let note = response.data[i];
87
                        let replies : any = undefined
88

    
89
                        // convert replies
90
                        if(note.replies){
91
                            replies = [];
92
                            for(let i = 0; i < note.replies.length; i++){
93
                                const reply = note.replies[i];
94
                                replies.push({
95
                                    uuid: (reply as any).uuid,
96
                                    username: (reply as any).created_by,
97
                                    userId: (reply as any).created_by_id,
98
                                    note: (reply as any).note,
99
                                    avatarUrl: (reply as any).avatar,
100
                                    items: (reply as any).items,
101
                                    createdTime: (reply as any).created,
102
                                    updatedTime: (reply as any).updated,
103
                                    noteColor: (reply as any).note_color,
104
                                    reply_to: note.uuid
105
                                })
106
                            }
107
                        }
108

    
109
                        notes.push({
110
                            uuid: (note as any).uuid,
111
                            username: (note as any).created_by,
112
                            userId: (note as any).created_by_id,
113
                            note: (note as any).note,
114
                            avatarUrl: (note as any).avatar,
115
                            items: (note as any).items,
116
                            replies: replies,
117
                            createdTime: (note as any).created,
118
                            updatedTime: (note as any).updated,
119
                            noteColor: (note as any).note_color,
120
                            reply_to: (note as any).reply_to
121
                        })
122
                    }
123

    
124
                    return {
125
                        notes,
126
                    }
127
                }
128
                else {
129
                    // no notes
130
                    return {
131
                        notes: [],
132
                    }
133
                }
134
            }
135
            else {
136
                console.log("Error");
137
                return Promise.reject(response.data ? response.data : "Error")
138
            }
139
        } catch (err: any) {
140
            console.log(err);
141
            return Promise.reject(err.response.data)
142
        }
143
    }
144
)
(4-4/6)