From bea0db148cf41416983f0ad83435b8f2c9037c4a Mon Sep 17 00:00:00 2001 From: TBS093A Date: Wed, 17 Feb 2021 09:15:23 +0100 Subject: [PATCH] Redux -> add all Slices / AsyncThunks / storage elements + create code in abstractServica & modelCrudAT --- src/redux/asyncThunks/abstractService.js | 103 ++++++++++++++++++ src/redux/asyncThunks/modelCrudAsyncThunk.js | 61 +++++++++++ src/redux/asyncThunks/renderCrudAsyncThunk.js | 0 .../asyncThunks/renderWebsocketAsyncThunk.js | 0 src/redux/asyncThunks/userAuthAsyncThunk.js | 0 src/redux/asyncThunks/userCrudAsyncThunk.js | 0 src/redux/slices/modelCrudSlice.js | 0 src/redux/slices/renderCrudSlice.js | 0 src/redux/slices/renderWebsocketSlice.js | 0 src/redux/slices/userAuthSlice.js | 0 src/redux/slices/userCrudSlice.js | 0 src/redux/stateLoader.js | 0 src/redux/store.js | 0 13 files changed, 164 insertions(+) create mode 100644 src/redux/asyncThunks/abstractService.js create mode 100644 src/redux/asyncThunks/modelCrudAsyncThunk.js create mode 100644 src/redux/asyncThunks/renderCrudAsyncThunk.js create mode 100644 src/redux/asyncThunks/renderWebsocketAsyncThunk.js create mode 100644 src/redux/asyncThunks/userAuthAsyncThunk.js create mode 100644 src/redux/asyncThunks/userCrudAsyncThunk.js create mode 100644 src/redux/slices/modelCrudSlice.js create mode 100644 src/redux/slices/renderCrudSlice.js create mode 100644 src/redux/slices/renderWebsocketSlice.js create mode 100644 src/redux/slices/userAuthSlice.js create mode 100644 src/redux/slices/userCrudSlice.js create mode 100644 src/redux/stateLoader.js create mode 100644 src/redux/store.js diff --git a/src/redux/asyncThunks/abstractService.js b/src/redux/asyncThunks/abstractService.js new file mode 100644 index 0000000..0f873c6 --- /dev/null +++ b/src/redux/asyncThunks/abstractService.js @@ -0,0 +1,103 @@ +import axios from 'axios' + + +const APIAddress = 'http://localhost:9090' + +let defaultBody = '' + +const _getList = async (endpoint, token) => { + return await responseAbstract( + endpoint, + 'GET', + token, + defaultBody + ) +} + +const _getOne = async (endpoint, objectId, token) => { + return await responseAbstract( + endpoint + '/' + objectId, + 'GET', + token, + defaultBody + ) +} + +const _post = async (endpoint, body, token) => { + return await responseAbstract( + endpoint, + 'POST', + token, + body + ) +} + +const _patch = async (endpoint, objectId, body, token) => { + return await responseAbstract( + endpoint + '/' + objectId, + 'PATCH', + token, + body + ) +} + +const _put = async (endpoint, objectId, body, token) => { + return await responseAbstract( + endpoint + '/' + objectId, + 'PUT', + token, + body + ) +} + +const _delete = async (endpoint, objectId, token) => { + return await responseAbstract( + endpoint + '/' + objectId, + 'DELETE', + token, + defaultBody + ) +} + + +const responseAbstract = async (endpoint, method, token, body) => { + let response = await axios( + headerBuilder( + APIAddress + endpoint, + method, + token, + body, + ) + ) + return response +} + +const headerBuilder = (url, method, token, body) => { + let headers = { + url: url, + method: method, + headers: { + 'Authorization': token, + 'accept': 'application/json', + 'Content-Type': 'application/json', + } + } + if (method === 'PUT' || method === 'POST' || method === 'PATCH') { + headers = Object.assign({}, headers, { + data: JSON.stringify(body), + withCredentials: true, + }) + } + return headers +} + + +export default { + APIAddress, + _getList, + _getOne, + _post, + _put, + _patch, + _delete +} \ No newline at end of file diff --git a/src/redux/asyncThunks/modelCrudAsyncThunk.js b/src/redux/asyncThunks/modelCrudAsyncThunk.js new file mode 100644 index 0000000..3de5608 --- /dev/null +++ b/src/redux/asyncThunks/modelCrudAsyncThunk.js @@ -0,0 +1,61 @@ +import { createAsyncThunk } from '@reduxjs/toolkit' +import abstractService from './abstractService' + +let endpoint = '/model' + + +const fetchGetAllModels = createAsyncThunk( + 'model/fetchGetAllModels', + async ( + token, + thunkAPI + ) => { + return await abstractService._getList(endpoint, token) + } +) + +/** + * @param body: + * param token: base64 token, + * param id: model id + */ +const fetchGetOneModelAndDownload = createAsyncThunk( + 'model/fetchGetAllModels', + async ( + body, + thunkAPI + ) => { + return await abstractService._getOne( + trueEndpoint, + body.id, + body.token + ) + } +) + +/** + * @param body: + * param token: base64 token, + * param file: document.querySelector('#file').files[0] + * param user_id: user id + */ +const fetchUploadModel = createAsyncThunk( + 'model/fetchGetAllModels', + async ( + body, + thunkAPI + ) => { + let formData = FormData() + formData.append("blend", body.file) + return await abstractService._post( + trueEndpoint, + body, + body.token + ) + } +) + +export default { + fetchGetAllModels, + fetchGetOneModelAndDownload, +} \ No newline at end of file diff --git a/src/redux/asyncThunks/renderCrudAsyncThunk.js b/src/redux/asyncThunks/renderCrudAsyncThunk.js new file mode 100644 index 0000000..e69de29 diff --git a/src/redux/asyncThunks/renderWebsocketAsyncThunk.js b/src/redux/asyncThunks/renderWebsocketAsyncThunk.js new file mode 100644 index 0000000..e69de29 diff --git a/src/redux/asyncThunks/userAuthAsyncThunk.js b/src/redux/asyncThunks/userAuthAsyncThunk.js new file mode 100644 index 0000000..e69de29 diff --git a/src/redux/asyncThunks/userCrudAsyncThunk.js b/src/redux/asyncThunks/userCrudAsyncThunk.js new file mode 100644 index 0000000..e69de29 diff --git a/src/redux/slices/modelCrudSlice.js b/src/redux/slices/modelCrudSlice.js new file mode 100644 index 0000000..e69de29 diff --git a/src/redux/slices/renderCrudSlice.js b/src/redux/slices/renderCrudSlice.js new file mode 100644 index 0000000..e69de29 diff --git a/src/redux/slices/renderWebsocketSlice.js b/src/redux/slices/renderWebsocketSlice.js new file mode 100644 index 0000000..e69de29 diff --git a/src/redux/slices/userAuthSlice.js b/src/redux/slices/userAuthSlice.js new file mode 100644 index 0000000..e69de29 diff --git a/src/redux/slices/userCrudSlice.js b/src/redux/slices/userCrudSlice.js new file mode 100644 index 0000000..e69de29 diff --git a/src/redux/stateLoader.js b/src/redux/stateLoader.js new file mode 100644 index 0000000..e69de29 diff --git a/src/redux/store.js b/src/redux/store.js new file mode 100644 index 0000000..e69de29