From a06b9eefaa550b2fa67ad661384d431cc842bfc2 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Wed, 12 Mar 2025 21:05:39 +0900 Subject: enhance(frontend): suppress needless confirmation when turn on pref sync --- packages/frontend/src/utility/deep-equal.ts | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 packages/frontend/src/utility/deep-equal.ts (limited to 'packages/frontend/src/utility/deep-equal.ts') diff --git a/packages/frontend/src/utility/deep-equal.ts b/packages/frontend/src/utility/deep-equal.ts new file mode 100644 index 0000000000..c64d82c6cc --- /dev/null +++ b/packages/frontend/src/utility/deep-equal.ts @@ -0,0 +1,29 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +export function deepEqual(a: any, b: any): boolean { + if (a === b) return true; + + if (a === null) return b === null; + + if (Array.isArray(a) && Array.isArray(b)) { + if (a.length !== b.length) return false; + for (let i = 0; i < a.length; i++) { + if (!deepEqual(a[i], b[i])) return false; + } + return true; + } else if (((typeof a) === 'object') && ((typeof b) === 'object')) { + const aks = Object.keys(a); + const bks = Object.keys(b); + if (aks.length !== bks.length) return false; + for (let i = 0; i < aks.length; i++) { + const k = aks[i]; + if (!deepEqual(a[k], b[k])) return false; + } + return true; + } + + return false; +} -- cgit v1.2.3-freya