mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-21 06:59:09 +00:00
refract + cleanup: render only on data change
- add library for deep comparison - cleanup console.logs
This commit is contained in:
@@ -16,6 +16,7 @@
|
|||||||
"react": "^17.0.1",
|
"react": "^17.0.1",
|
||||||
"react-beautiful-dnd": "^13.1.0",
|
"react-beautiful-dnd": "^13.1.0",
|
||||||
"react-dom": "^17.0.1",
|
"react-dom": "^17.0.1",
|
||||||
|
"react-fast-compare": "^3.2.0",
|
||||||
"react-icons": "^4.2.0",
|
"react-icons": "^4.2.0",
|
||||||
"react-qr-code": "^1.1.1",
|
"react-qr-code": "^1.1.1",
|
||||||
"react-query": "^3.13.5",
|
"react-query": "^3.13.5",
|
||||||
|
|||||||
@@ -12,8 +12,6 @@ export default function LowerLines(props) {
|
|||||||
};
|
};
|
||||||
const [showLower, setShowLower] = useState(true);
|
const [showLower, setShowLower] = useState(true);
|
||||||
|
|
||||||
console.log('DEBUG TITLE SHOW:', title.showNow);
|
|
||||||
|
|
||||||
// Unmount if fadeOut
|
// Unmount if fadeOut
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!options.fadeOut) return;
|
if (!options.fadeOut) return;
|
||||||
|
|||||||
@@ -1,10 +1,27 @@
|
|||||||
import { useEffect, useState } from 'react';
|
import { memo, useEffect, useState } from 'react';
|
||||||
import LowerClean from './LowerClean';
|
import LowerClean from './LowerClean';
|
||||||
import LowerLines from './LowerLines';
|
import LowerLines from './LowerLines';
|
||||||
|
const isEqual = require('react-fast-compare');
|
||||||
|
|
||||||
export default function Lower(props) {
|
const areEqual = (prevProps, nextProps) => {
|
||||||
const { title, ...rest } = props;
|
return (
|
||||||
const [titles, setTitles] = useState(null);
|
isEqual(prevProps.title, nextProps.title) &&
|
||||||
|
isEqual(prevProps.lower && nextProps.lower)
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
const Lower = (props) => {
|
||||||
|
const { title } = props;
|
||||||
|
const [titles, setTitles] = useState({
|
||||||
|
titleNow: '',
|
||||||
|
titleNext: '',
|
||||||
|
subtitleNow: '',
|
||||||
|
subtitleNext: '',
|
||||||
|
presenterNow: '',
|
||||||
|
presenterNext: '',
|
||||||
|
showNow: false,
|
||||||
|
showNext: false,
|
||||||
|
});
|
||||||
const [preset, setPreset] = useState(1);
|
const [preset, setPreset] = useState(1);
|
||||||
const [lowerOptions, setLowerOptions] = useState({});
|
const [lowerOptions, setLowerOptions] = useState({});
|
||||||
|
|
||||||
@@ -23,21 +40,17 @@ export default function Lower(props) {
|
|||||||
title?.subtitleNow !== titles?.subtitleNow ||
|
title?.subtitleNow !== titles?.subtitleNow ||
|
||||||
title?.presenterNow !== titles?.presenterNow
|
title?.presenterNow !== titles?.presenterNow
|
||||||
) {
|
) {
|
||||||
console.log('DEBUG TITLES: SETTING TITLES TO NULL');
|
|
||||||
setTitles((t) => ({ ...t, showNow: false }));
|
setTitles((t) => ({ ...t, showNow: false }));
|
||||||
|
|
||||||
const transitionTime = 2000;
|
const transitionTime = 2000;
|
||||||
|
|
||||||
timeout = setTimeout(() => {
|
timeout = setTimeout(() => {
|
||||||
console.log('DEBUG TITLES: RESUMING');
|
|
||||||
setTitles(title);
|
setTitles(title);
|
||||||
}, transitionTime);
|
}, transitionTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
if (timeout != null) {
|
if (timeout != null) {
|
||||||
console.log('DEBUG TITLES: CLEARING');
|
|
||||||
|
|
||||||
clearTimeout(timeout);
|
clearTimeout(timeout);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -109,10 +122,18 @@ export default function Lower(props) {
|
|||||||
|
|
||||||
switch (preset) {
|
switch (preset) {
|
||||||
case 0:
|
case 0:
|
||||||
return <LowerClean {...rest} title={title} options={lowerOptions} />;
|
return (
|
||||||
|
<LowerClean lower={props.lower} title={titles} options={lowerOptions} />
|
||||||
|
);
|
||||||
case 1:
|
case 1:
|
||||||
return <LowerLines {...rest} title={titles} options={lowerOptions} />;
|
return (
|
||||||
|
<LowerLines lower={props.lower} title={titles} options={lowerOptions} />
|
||||||
|
);
|
||||||
default:
|
default:
|
||||||
return <LowerLines {...rest} title={title} options={lowerOptions} />;
|
return (
|
||||||
|
<LowerLines lower={props.lower} title={titles} options={lowerOptions} />
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
|
export default memo(Lower, areEqual);
|
||||||
|
|||||||
+1
-1
@@ -10078,7 +10078,7 @@ react-error-overlay@^6.0.9:
|
|||||||
resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a"
|
resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a"
|
||||||
integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==
|
integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==
|
||||||
|
|
||||||
react-fast-compare@3.2.0:
|
react-fast-compare@3.2.0, react-fast-compare@^3.2.0:
|
||||||
version "3.2.0"
|
version "3.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb"
|
resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb"
|
||||||
integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==
|
integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==
|
||||||
|
|||||||
Reference in New Issue
Block a user