diff options
author | 2019-04-11 12:00:07 +0200 | |
---|---|---|
committer | 2019-04-11 12:00:07 +0200 | |
commit | e43d6bd80b3d76aae627fa8174eea98c14016549 (patch) | |
tree | de1d0a3ba10100ce68d0cb1ed618095e362fe573 /src/features/workspaces/api.js | |
parent | implements basic release announcement feature (diff) | |
parent | handle deleted services that are attached to workspaces (diff) | |
download | ferdium-app-e43d6bd80b3d76aae627fa8174eea98c14016549.tar.gz ferdium-app-e43d6bd80b3d76aae627fa8174eea98c14016549.tar.zst ferdium-app-e43d6bd80b3d76aae627fa8174eea98c14016549.zip |
merge-in workspace feature
Diffstat (limited to 'src/features/workspaces/api.js')
-rw-r--r-- | src/features/workspaces/api.js | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/src/features/workspaces/api.js b/src/features/workspaces/api.js new file mode 100644 index 000000000..0ec20c9ea --- /dev/null +++ b/src/features/workspaces/api.js | |||
@@ -0,0 +1,66 @@ | |||
1 | import { pick } from 'lodash'; | ||
2 | import { sendAuthRequest } from '../../api/utils/auth'; | ||
3 | import { API, API_VERSION } from '../../environment'; | ||
4 | import Request from '../../stores/lib/Request'; | ||
5 | import Workspace from './models/Workspace'; | ||
6 | |||
7 | const debug = require('debug')('Franz:feature:workspaces:api'); | ||
8 | |||
9 | export const workspaceApi = { | ||
10 | getUserWorkspaces: async () => { | ||
11 | const url = `${API}/${API_VERSION}/workspace`; | ||
12 | debug('getUserWorkspaces GET', url); | ||
13 | const result = await sendAuthRequest(url, { method: 'GET' }); | ||
14 | debug('getUserWorkspaces RESULT', result); | ||
15 | if (!result.ok) throw result; | ||
16 | const workspaces = await result.json(); | ||
17 | return workspaces.map(data => new Workspace(data)); | ||
18 | }, | ||
19 | |||
20 | createWorkspace: async (name) => { | ||
21 | const url = `${API}/${API_VERSION}/workspace`; | ||
22 | const options = { | ||
23 | method: 'POST', | ||
24 | body: JSON.stringify({ name }), | ||
25 | }; | ||
26 | debug('createWorkspace POST', url, options); | ||
27 | const result = await sendAuthRequest(url, options); | ||
28 | debug('createWorkspace RESULT', result); | ||
29 | if (!result.ok) throw result; | ||
30 | return new Workspace(await result.json()); | ||
31 | }, | ||
32 | |||
33 | deleteWorkspace: async (workspace) => { | ||
34 | const url = `${API}/${API_VERSION}/workspace/${workspace.id}`; | ||
35 | debug('deleteWorkspace DELETE', url); | ||
36 | const result = await sendAuthRequest(url, { method: 'DELETE' }); | ||
37 | debug('deleteWorkspace RESULT', result); | ||
38 | if (!result.ok) throw result; | ||
39 | return true; | ||
40 | }, | ||
41 | |||
42 | updateWorkspace: async (workspace) => { | ||
43 | const url = `${API}/${API_VERSION}/workspace/${workspace.id}`; | ||
44 | const options = { | ||
45 | method: 'PUT', | ||
46 | body: JSON.stringify(pick(workspace, ['name', 'services'])), | ||
47 | }; | ||
48 | debug('updateWorkspace UPDATE', url, options); | ||
49 | const result = await sendAuthRequest(url, options); | ||
50 | debug('updateWorkspace RESULT', result); | ||
51 | if (!result.ok) throw result; | ||
52 | return new Workspace(await result.json()); | ||
53 | }, | ||
54 | }; | ||
55 | |||
56 | export const getUserWorkspacesRequest = new Request(workspaceApi, 'getUserWorkspaces'); | ||
57 | export const createWorkspaceRequest = new Request(workspaceApi, 'createWorkspace'); | ||
58 | export const deleteWorkspaceRequest = new Request(workspaceApi, 'deleteWorkspace'); | ||
59 | export const updateWorkspaceRequest = new Request(workspaceApi, 'updateWorkspace'); | ||
60 | |||
61 | export const resetApiRequests = () => { | ||
62 | getUserWorkspacesRequest.reset(); | ||
63 | createWorkspaceRequest.reset(); | ||
64 | deleteWorkspaceRequest.reset(); | ||
65 | updateWorkspaceRequest.reset(); | ||
66 | }; | ||