summaryrefslogtreecommitdiff
path: root/opendc-web/opendc-web-ui/src/redux/sagas/topology.js
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2021-07-20 14:55:39 +0200
committerFabian Mastenbroek <mail.fabianm@gmail.com>2021-07-22 14:08:52 +0200
commitebab0cc12e293a57cbc58d2dd51b3c9d7cd4ee92 (patch)
treecec5e1e9e4a4a235b9726aafe61a2e6b0761f034 /opendc-web/opendc-web-ui/src/redux/sagas/topology.js
parent6e3ad713111f35fc58bd2b7f1be5aeeb57eb94a8 (diff)
fix(ui): Load correct topology view
This change fixes an issue where the only the default topology view would be shown to the user.
Diffstat (limited to 'opendc-web/opendc-web-ui/src/redux/sagas/topology.js')
-rw-r--r--opendc-web/opendc-web-ui/src/redux/sagas/topology.js34
1 files changed, 12 insertions, 22 deletions
diff --git a/opendc-web/opendc-web-ui/src/redux/sagas/topology.js b/opendc-web/opendc-web-ui/src/redux/sagas/topology.js
index 2d61643b..fb6f7f0d 100644
--- a/opendc-web/opendc-web-ui/src/redux/sagas/topology.js
+++ b/opendc-web/opendc-web-ui/src/redux/sagas/topology.js
@@ -23,28 +23,9 @@ import { uuid } from 'uuidv4'
import { fetchQuery, mutate } from './query'
/**
- * Fetches all topologies of the project with the specified identifier.
- */
-export function* fetchAndStoreAllTopologiesOfProject(projectId, setTopology = false) {
- try {
- const project = yield fetchQuery(['projects', projectId])
-
- for (const id of project.topologyIds) {
- yield fetchAndStoreTopology(id)
- }
-
- if (setTopology) {
- yield put(setCurrentTopology(project.topologyIds[0]))
- }
- } catch (error) {
- console.error(error)
- }
-}
-
-/**
* Fetches and normalizes the topology with the specified identifier.
*/
-export function* fetchAndStoreTopology(id) {
+function* fetchAndStoreTopology(id) {
let topology = yield select((state) => state.objects.topology[id])
if (!topology) {
const newTopology = yield fetchQuery(['topologies', id])
@@ -58,7 +39,7 @@ export function* fetchAndStoreTopology(id) {
/**
* Synchronize the topology with the specified identifier with the server.
*/
-export function* updateTopologyOnServer(id) {
+function* updateTopologyOnServer(id) {
const topology = yield denormalizeTopology(id)
yield mutate('updateTopology', topology)
}
@@ -66,12 +47,21 @@ export function* updateTopologyOnServer(id) {
/**
* Denormalizes the topology representation in order to be stored on the server.
*/
-export function* denormalizeTopology(id) {
+function* denormalizeTopology(id) {
const objects = yield select((state) => state.objects)
const topology = objects.topology[id]
return denormalize(topology, Topology, objects)
}
+export function* onOpenTopology({ id }) {
+ try {
+ yield fetchAndStoreTopology(id)
+ yield put(setCurrentTopology(id))
+ } catch (error) {
+ console.error(error)
+ }
+}
+
export function* onAddTopology({ projectId, duplicateId, name }) {
try {
let topologyToBeCreated