Skip unnecessary view re-positions

This commit is contained in:
Max Goodhart
2020-11-11 23:39:52 -08:00
parent 7f2868e0ae
commit c1b9d46fa7

View File

@@ -86,15 +86,19 @@ const viewStateMachine = Machine(
type: 'parallel', type: 'parallel',
entry: 'positionView', entry: 'positionView',
on: { on: {
DISPLAY: { DISPLAY: [
actions: [ // Noop if nothing changed.
assign({ { cond: 'contentPosUnchanged' },
pos: (context, event) => event.pos, {
}), actions: [
'positionView', assign({
], pos: (context, event) => event.pos,
cond: 'contentUnchanged', }),
}, 'positionView',
],
cond: 'contentUnchanged',
},
],
}, },
states: { states: {
audio: { audio: {
@@ -167,6 +171,12 @@ const viewStateMachine = Machine(
contentUnchanged: (context, event) => { contentUnchanged: (context, event) => {
return isEqual(context.content, event.content) return isEqual(context.content, event.content)
}, },
contentPosUnchanged: (context, event) => {
return (
isEqual(context.content, event.content) &&
isEqual(context.pos, event.pos)
)
},
optionsChanged: (context, event) => { optionsChanged: (context, event) => {
return !isEqual(context.options, event.options) return !isEqual(context.options, event.options)
}, },