summaryrefslogtreecommitdiff
path: root/opendc-web/opendc-web-ui/src/redux/sagas/prefabs.js
blob: f717d87801bb493ddf393b814db68c81ddafbed0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import { call, put, select, getContext } from 'redux-saga/effects'
import { addToStore } from '../actions/objects'
import { addPrefab } from '../../api/prefabs'
import { Rack } from '../../util/topology-schema'
import { denormalize } from 'normalizr'

export function* onAddPrefab({ name, tileId }) {
    try {
        const objects = yield select((state) => state.objects)
        const rack = objects.rack[objects.tile[tileId].rack]
        const prefabRack = denormalize(rack, Rack, objects)
        const auth = yield getContext('auth')
        const prefab = yield call(() => addPrefab(auth, { name, rack: prefabRack }))
        yield put(addToStore('prefab', prefab))
    } catch (error) {
        console.error(error)
    }
}