REFACTOR: Remove `_.isEqual`

This commit is contained in:
Robin Ward 2020-09-02 12:01:30 -04:00
parent c4079780be
commit f365d4639a
3 changed files with 24 additions and 4 deletions

View File

@ -1,7 +1,9 @@
// a fairly simple deep merge based on: https://gist.github.com/ahtcx/0cd94e62691f539160b32ecda18af3d6
export function merge(...objects) {
const isObject = obj => obj && typeof obj === "object";
function isObject(obj) {
return obj && typeof obj === "object";
}
export function merge(...objects) {
function deepMergeInner(target, source) {
Object.keys(source).forEach(key => {
const targetValue = target[key];
@ -35,3 +37,19 @@ export function merge(...objects) {
return target;
}
export function deepEqual(obj1, obj2) {
if (obj1 === obj2) {
return true;
} else if (isObject(obj1) && isObject(obj2)) {
if (Object.keys(obj1).length !== Object.keys(obj2).length) {
return false;
}
for (var prop in obj1) {
if (!deepEqual(obj1[prop], obj2[prop])) {
return false;
}
}
return true;
}
}

View File

@ -5,6 +5,7 @@ import discourseComputed, { on } from "discourse-common/utils/decorators";
import PreloadStore from "discourse/lib/preload-store";
import Category from "discourse/models/category";
import User from "discourse/models/user";
import { deepEqual } from "discourse-common/lib/object";
function isNew(topic) {
return (
@ -115,7 +116,7 @@ const TopicTrackingState = EmberObject.extend({
if (["new_topic", "unread", "read"].includes(data.message_type)) {
tracker.notify(data);
const old = tracker.states["t" + data.topic_id];
if (!_.isEqual(old, data.payload)) {
if (!deepEqual(old, data.payload)) {
tracker.states["t" + data.topic_id] = data.payload;
tracker.notifyPropertyChange("states");
tracker.incrementMessageCount();

View File

@ -11,6 +11,7 @@ import Session from "discourse/models/session";
import { Promise } from "rsvp";
import Site from "discourse/models/site";
import { inject as service } from "@ember/service";
import { deepEqual } from "discourse-common/lib/object";
// A helper to build a topic route for a filter
function filterQueryParams(params, defaultParams) {
@ -39,7 +40,7 @@ function findTopicList(store, tracking, filter, filterParams, extras) {
cachedList &&
cachedList.get("filter") === filter &&
(cachedList.get("topics.length") || 0) > cachedList.get("per_page") &&
_.isEqual(cachedList.get("listParams"), filterParams)
deepEqual(cachedList.get("listParams"), filterParams)
) {
cachedList.set("loaded", true);