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