Skip to content

Commit d138408

Browse files
committed
fix selectedViewId when views change
1 parent a76ac59 commit d138408

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

src/cloud/components/Views/index.tsx

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { isEqual } from 'lodash'
12
import React, { useEffect, useMemo, useRef, useState } from 'react'
23
import Flexbox from '../../../design/components/atoms/Flexbox'
34
import styled from '../../../design/lib/styled'
@@ -39,6 +40,13 @@ const ViewsList = ({
3940
)
4041
const { createViewApi } = useCloudApi()
4142

43+
const selectedViewIdRef = useRef(selectedViewId)
44+
const viewsIdsRef = useRef(views.map((v) => v.id))
45+
46+
useEffect(() => {
47+
selectedViewIdRef.current = selectedViewId
48+
}, [selectedViewId])
49+
4250
useEffect(() => {
4351
if (parent.target.id === targetIdRef.current) {
4452
return
@@ -48,6 +56,19 @@ const ViewsList = ({
4856
setSelectedViewId(views.length > 0 ? views[0].id : undefined)
4957
}, [parent.target, views])
5058

59+
useEffect(() => {
60+
const newViewsIds = views.map((v) => v.id)
61+
if (!isEqual(newViewsIds, viewsIdsRef.current)) {
62+
if (
63+
selectedViewIdRef.current != null &&
64+
!newViewsIds.includes(selectedViewIdRef.current)
65+
) {
66+
setSelectedViewId(views.length > 0 ? views[0].id : undefined)
67+
}
68+
viewsIdsRef.current = newViewsIds
69+
}
70+
}, [views])
71+
5172
const currentView = useMemo(() => {
5273
if (selectedViewId == null) {
5374
return undefined

0 commit comments

Comments
 (0)