Make the sublists aware of their own list changes
This cuts the render time in half (from ~448ms to ~200ms on my account) per received event, as we're no longer re-mounting the entire room list and instead just the section(s) we care about.
This commit is contained in:
parent
60a6b13f4b
commit
7b97c3032b
3 changed files with 58 additions and 22 deletions
|
@ -14,11 +14,29 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Determines if the two arrays are different either in length, contents,
|
||||
* or order of those contents.
|
||||
* @param a The first array. Must be defined.
|
||||
* @param b The second array. Must be defined.
|
||||
* @returns True if they are different, false otherwise.
|
||||
*/
|
||||
export function arrayHasOrderChange(a: any[], b: any[]): boolean {
|
||||
if (a.length === b.length) {
|
||||
for (let i = 0; i < a.length; i++) {
|
||||
if (a[i] !== b[i]) return true;
|
||||
}
|
||||
return false;
|
||||
} else {
|
||||
return true; // like arrayHasDiff, a difference in length is a natural change
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines if two arrays are different through a shallow comparison.
|
||||
* @param a The first array. Must be defined.
|
||||
* @param b The second array. Must be defined.
|
||||
* @returns True if they are the same, false otherwise.
|
||||
* @returns True if they are different, false otherwise.
|
||||
*/
|
||||
export function arrayHasDiff(a: any[], b: any[]): boolean {
|
||||
if (a.length === b.length) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue