File tree Expand file tree Collapse file tree 7 files changed +27
-22
lines changed Expand file tree Collapse file tree 7 files changed +27
-22
lines changed Original file line number Diff line number Diff line change @@ -12,6 +12,7 @@ import {
1212 setAllAccessibleOutput ,
1313 setLanguage
1414} from '../modules/IDE/actions/preferences' ;
15+ import { selectRootFile } from '../modules/IDE/selectors/files' ;
1516import { logoutUser } from '../modules/User/actions' ;
1617
1718import getConfig from '../utils/getConfig' ;
@@ -403,7 +404,7 @@ function mapStateToProps(state) {
403404 project : state . project ,
404405 user : state . user ,
405406 unsavedChanges : state . ide . unsavedChanges ,
406- rootFile : state . files . filter ( ( file ) => file . name === 'root' ) [ 0 ] ,
407+ rootFile : selectRootFile ( state ) ,
407408 language : state . preferences . language ,
408409 isUserOwner : getIsUserOwner ( state ) ,
409410 editorLink : selectSketchPath ( state )
Original file line number Diff line number Diff line change @@ -44,6 +44,7 @@ import '../../../utils/htmlmixed';
4444import '../../../utils/p5-javascript' ;
4545import Timer from '../components/Timer' ;
4646import EditorAccessibility from '../components/EditorAccessibility' ;
47+ import { selectActiveFile } from '../selectors/files' ;
4748import AssetPreview from './AssetPreview' ;
4849import { metaKey } from '../../../utils/metaKey' ;
4950import './show-hint' ;
@@ -601,10 +602,7 @@ Editor.propTypes = {
601602function mapStateToProps ( state ) {
602603 return {
603604 files : state . files ,
604- file :
605- state . files . find ( ( file ) => file . isSelectedFile ) ||
606- state . files . find ( ( file ) => file . name === 'sketch.js' ) ||
607- state . files . find ( ( file ) => file . name !== 'root' ) ,
605+ file : selectActiveFile ( state ) ,
608606 htmlFile : getHTMLFile ( state . files ) ,
609607 ide : state . ide ,
610608 preferences : state . preferences ,
Original file line number Diff line number Diff line change 99 openProjectOptions ,
1010 openUploadFileModal
1111} from '../actions/ide' ;
12+ import { selectRootFile } from '../selectors/files' ;
1213import { getAuthenticated , selectCanEditSketch } from '../selectors/users' ;
1314
1415import ConnectedFileNode from './FileNode' ;
@@ -23,9 +24,7 @@ export default function SideBar() {
2324
2425 const [ isFocused , setIsFocused ] = useState ( false ) ;
2526
26- const files = useSelector ( ( state ) => state . files ) ;
27- // TODO: use `selectRootFile` defined in another PR
28- const rootFile = files . filter ( ( file ) => file . name === 'root' ) [ 0 ] ;
27+ const rootFile = useSelector ( selectRootFile ) ;
2928 const projectOptionsVisible = useSelector (
3029 ( state ) => state . ide . projectOptionsVisible
3130 ) ;
Original file line number Diff line number Diff line change @@ -33,6 +33,7 @@ import About from '../components/About';
3333import AddToCollectionList from '../components/AddToCollectionList' ;
3434import Feedback from '../components/Feedback' ;
3535import { CollectionSearchbar } from '../components/Searchbar' ;
36+ import { selectActiveFile } from '../selectors/files' ;
3637import { getIsUserOwner } from '../selectors/users' ;
3738import RootPage from '../../../components/RootPage' ;
3839
@@ -549,10 +550,7 @@ IDEView.propTypes = {
549550
550551function mapStateToProps ( state ) {
551552 return {
552- selectedFile :
553- state . files . find ( ( file ) => file . isSelectedFile ) ||
554- state . files . find ( ( file ) => file . name === 'sketch.js' ) ||
555- state . files . find ( ( file ) => file . name !== 'root' ) ,
553+ selectedFile : selectActiveFile ( state ) ,
556554 htmlFile : getHTMLFile ( state . files ) ,
557555 ide : state . ide ,
558556 preferences : state . preferences ,
Original file line number Diff line number Diff line change @@ -41,6 +41,7 @@ import { remSize } from '../../../theme';
4141import ActionStrip from '../../../components/mobile/ActionStrip' ;
4242import useAsModal from '../../../components/useAsModal' ;
4343import Dropdown from '../../../components/Dropdown' ;
44+ import { selectActiveFile } from '../selectors/files' ;
4445import { getIsUserOwner } from '../selectors/users' ;
4546
4647import {
@@ -475,10 +476,7 @@ MobileIDEView.propTypes = {
475476
476477function mapStateToProps ( state ) {
477478 return {
478- selectedFile :
479- state . files . find ( ( file ) => file . isSelectedFile ) ||
480- state . files . find ( ( file ) => file . name === 'sketch.js' ) ||
481- state . files . find ( ( file ) => file . name !== 'root' ) ,
479+ selectedFile : selectActiveFile ( state ) ,
482480 ide : state . ide ,
483481 files : state . files ,
484482 unsavedChanges : state . ide . unsavedChanges ,
Original file line number Diff line number Diff line change 1+ import { createSelector } from 'reselect' ;
2+
3+ const selectFiles = ( state ) => state . files ;
4+
5+ export const selectRootFile = createSelector ( selectFiles , ( files ) =>
6+ files . find ( ( file ) => file . name === 'root' )
7+ ) ;
8+
9+ export const selectActiveFile = createSelector (
10+ selectFiles ,
11+ ( files ) =>
12+ files . find ( ( file ) => file . isSelectedFile ) ||
13+ files . find ( ( file ) => file . name === 'sketch.js' ) ||
14+ files . find ( ( file ) => file . name !== 'root' )
15+ ) ;
Original file line number Diff line number Diff line change @@ -16,19 +16,15 @@ import { getHTMLFile } from '../IDE/reducers/files';
1616
1717import { ExitIcon } from '../../common/icons' ;
1818import Footer from '../../components/mobile/Footer' ;
19+ import { selectActiveFile } from '../IDE/selectors/files' ;
1920import Content from './MobileViewContent' ;
2021
2122const MobileSketchView = ( ) => {
2223 const { files, ide, preferences } = useSelector ( ( state ) => state ) ;
2324
2425 const htmlFile = useSelector ( ( state ) => getHTMLFile ( state . files ) ) ;
2526 const projectName = useSelector ( ( state ) => state . project . name ) ;
26- const selectedFile = useSelector (
27- ( state ) =>
28- state . files . find ( ( file ) => file . isSelectedFile ) ||
29- state . files . find ( ( file ) => file . name === 'sketch.js' ) ||
30- state . files . find ( ( file ) => file . name !== 'root' )
31- ) ;
27+ const selectedFile = useSelector ( selectActiveFile ) ;
3228
3329 const {
3430 setTextOutput,
You can’t perform that action at this time.
0 commit comments