From a4c836c6d49ba15d1e0f0cc9d04b9f8a986ddce9 Mon Sep 17 00:00:00 2001 From: Oliver Eyton-Williams Date: Mon, 27 Jul 2020 15:29:08 +0200 Subject: [PATCH] feat: open target editor on mount --- .../templates/Challenges/classic/MultifileEditor.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/client/src/templates/Challenges/classic/MultifileEditor.js b/client/src/templates/Challenges/classic/MultifileEditor.js index 7f3f2b9a68..6c231ccf9c 100644 --- a/client/src/templates/Challenges/classic/MultifileEditor.js +++ b/client/src/templates/Challenges/classic/MultifileEditor.js @@ -3,6 +3,7 @@ import React, { Component, Suspense } from 'react'; import { connect } from 'react-redux'; import { ReflexContainer, ReflexElement, ReflexSplitter } from 'react-reflex'; import { createSelector } from 'reselect'; +import { isEmpty } from 'lodash'; import { isDonationModalOpenSelector, userSelector } from '../../../redux'; import { canFocusEditorSelector, @@ -69,6 +70,15 @@ const mapDispatchToProps = { updateFile }; +function getTargetEditor(challengeFiles) { + let targetEditor = Object.values(challengeFiles).find( + ({ editableRegionBoundaries }) => !isEmpty(editableRegionBoundaries) + )?.key; + + // fallback for when there is no editable region. + return targetEditor || toSortedArray(challengeFiles)[0].key; +} + class MultifileEditor extends Component { constructor(...props) { super(...props); @@ -129,7 +139,7 @@ class MultifileEditor extends Component { const { challengeFiles } = this.props; - const targetEditor = toSortedArray(challengeFiles)[0].key; + const targetEditor = getTargetEditor(challengeFiles); this.state = { visibleEditors: { [targetEditor]: true }