Skip to content

Commit aa8f480

Browse files
committed
fix performance hit that the date header had
because of the state updates it triggered videos did flash/flicker/reload while scrolling
1 parent e497146 commit aa8f480

File tree

1 file changed

+9
-13
lines changed

1 file changed

+9
-13
lines changed

src/renderer/components/Gallery.tsx

+9-13
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { ChangeEvent, Component } from 'react'
1+
import React, { ChangeEvent, Component, createRef } from 'react'
22
import { ScreenContext } from '../contexts'
33
import {
44
AudioAttachment,
@@ -14,7 +14,7 @@ import { selectedAccountId } from '../ScreenController'
1414
import AutoSizer from 'react-virtualized-auto-sizer'
1515
import { FixedSizeGrid } from 'react-window'
1616
import SettingsStoreInstance, { SettingsStoreState } from '../stores/settings'
17-
import moment, { Moment } from 'moment'
17+
import moment from 'moment'
1818

1919
const log = getLogger('renderer/Gallery')
2020

@@ -63,9 +63,9 @@ export default class Gallery extends Component<
6363
loading: boolean
6464
queryText: string
6565
GalleryImageKeepAspectRatio?: boolean
66-
dateMoment?: Moment
6766
}
6867
> {
68+
dateHeader = createRef<HTMLDivElement>()
6969
constructor(props: mediaProps) {
7070
super(props)
7171
this.state = {
@@ -77,7 +77,6 @@ export default class Gallery extends Component<
7777
loading: true,
7878
queryText: '',
7979
GalleryImageKeepAspectRatio: false,
80-
dateMoment: undefined,
8180
}
8281

8382
this.settingsStoreListener = this.settingsStoreListener.bind(this)
@@ -92,7 +91,6 @@ export default class Gallery extends Component<
9291
mediaLoadResult: {},
9392
loading: true,
9493
queryText: '',
95-
dateMoment: undefined,
9694
})
9795
}
9896

@@ -152,7 +150,6 @@ export default class Gallery extends Component<
152150
mediaMessageIds: media_ids,
153151
mediaLoadResult,
154152
loading: false,
155-
dateMoment: undefined,
156153
})
157154
this.forceUpdate()
158155
})
@@ -182,9 +179,10 @@ export default class Gallery extends Component<
182179

183180
updateFirstVisibleMessage(message: Type.MessageLoadResult) {
184181
if (message.variant === 'message') {
185-
this.setState({
186-
dateMoment: moment(message.timestamp * 1000),
187-
})
182+
if (this.dateHeader.current)
183+
this.dateHeader.current.innerText = moment(
184+
message.timestamp * 1000
185+
).format('LL')
188186
}
189187
}
190188

@@ -233,10 +231,8 @@ export default class Gallery extends Component<
233231
</li>
234232
)
235233
})}
236-
{showDateHeader && this.state.dateMoment && (
237-
<div className='big-date'>
238-
{this.state.dateMoment.format('LL')}
239-
</div>
234+
{showDateHeader && (
235+
<div className='big-date' ref={this.dateHeader}></div>
240236
)}
241237
</ul>
242238
<div role='tabpanel'>

0 commit comments

Comments
 (0)