From e66027cd0c28ec690c161a7efde03e4cdd7f64d5 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 15 Nov 2022 10:20:36 +0000 Subject: [PATCH] Deduplicate string compare utility (#9579) --- src/components/views/rooms/WhoIsTypingTile.tsx | 2 +- .../views/settings/tabs/room/RolesRoomSettingsTab.tsx | 2 +- src/integrations/IntegrationManagers.ts | 2 +- .../algorithms/tag-sorting/AlphabeticAlgorithm.ts | 2 +- src/stores/widgets/WidgetLayoutStore.ts | 2 +- src/theme.ts | 3 ++- src/utils/SortMembers.ts | 2 +- src/utils/strings.ts | 10 ---------- test/components/views/rooms/MemberList-test.tsx | 2 +- 9 files changed, 9 insertions(+), 18 deletions(-) diff --git a/src/components/views/rooms/WhoIsTypingTile.tsx b/src/components/views/rooms/WhoIsTypingTile.tsx index e736a67012..384973e01f 100644 --- a/src/components/views/rooms/WhoIsTypingTile.tsx +++ b/src/components/views/rooms/WhoIsTypingTile.tsx @@ -19,12 +19,12 @@ import React from 'react'; import { Room, RoomEvent } from "matrix-js-sdk/src/models/room"; import { RoomMember, RoomMemberEvent } from "matrix-js-sdk/src/models/room-member"; import { MatrixEvent } from "matrix-js-sdk/src/models/event"; +import { compare } from "matrix-js-sdk/src/utils"; import * as WhoIsTyping from '../../../WhoIsTyping'; import Timer from '../../../utils/Timer'; import { MatrixClientPeg } from '../../../MatrixClientPeg'; import MemberAvatar from '../avatars/MemberAvatar'; -import { compare } from "../../../utils/strings"; interface IProps { // the room this statusbar is representing. diff --git a/src/components/views/settings/tabs/room/RolesRoomSettingsTab.tsx b/src/components/views/settings/tabs/room/RolesRoomSettingsTab.tsx index 5da3996154..16b85fb2b2 100644 --- a/src/components/views/settings/tabs/room/RolesRoomSettingsTab.tsx +++ b/src/components/views/settings/tabs/room/RolesRoomSettingsTab.tsx @@ -20,12 +20,12 @@ import { RoomMember } from "matrix-js-sdk/src/models/room-member"; import { RoomState, RoomStateEvent } from "matrix-js-sdk/src/models/room-state"; import { logger } from "matrix-js-sdk/src/logger"; import { throttle } from "lodash"; +import { compare } from "matrix-js-sdk/src/utils"; import { _t, _td } from "../../../../../languageHandler"; import { MatrixClientPeg } from "../../../../../MatrixClientPeg"; import AccessibleButton from "../../../elements/AccessibleButton"; import Modal from "../../../../../Modal"; -import { compare } from "../../../../../utils/strings"; import ErrorDialog from '../../../dialogs/ErrorDialog'; import PowerSelector from "../../../elements/PowerSelector"; import SettingsFieldset from '../../SettingsFieldset'; diff --git a/src/integrations/IntegrationManagers.ts b/src/integrations/IntegrationManagers.ts index b5a65c0e64..08bba8f7a0 100644 --- a/src/integrations/IntegrationManagers.ts +++ b/src/integrations/IntegrationManagers.ts @@ -17,6 +17,7 @@ limitations under the License. import url from 'url'; import { logger } from "matrix-js-sdk/src/logger"; import { ClientEvent, MatrixClient } from "matrix-js-sdk/src/client"; +import { compare } from "matrix-js-sdk/src/utils"; import type { MatrixEvent } from "matrix-js-sdk/src/models/event"; import SdkConfig from '../SdkConfig'; @@ -26,7 +27,6 @@ import IntegrationsImpossibleDialog from "../components/views/dialogs/Integratio import IntegrationsDisabledDialog from "../components/views/dialogs/IntegrationsDisabledDialog"; import WidgetUtils from "../utils/WidgetUtils"; import { MatrixClientPeg } from "../MatrixClientPeg"; -import { compare } from "../utils/strings"; const KIND_PREFERENCE = [ // Ordered: first is most preferred, last is least preferred. diff --git a/src/stores/room-list/algorithms/tag-sorting/AlphabeticAlgorithm.ts b/src/stores/room-list/algorithms/tag-sorting/AlphabeticAlgorithm.ts index 8bf7061cbc..23f4fb6392 100644 --- a/src/stores/room-list/algorithms/tag-sorting/AlphabeticAlgorithm.ts +++ b/src/stores/room-list/algorithms/tag-sorting/AlphabeticAlgorithm.ts @@ -15,10 +15,10 @@ limitations under the License. */ import { Room } from "matrix-js-sdk/src/models/room"; +import { compare } from "matrix-js-sdk/src/utils"; import { TagID } from "../../models"; import { IAlgorithm } from "./IAlgorithm"; -import { compare } from "../../../../utils/strings"; /** * Sorts rooms according to the browser's determination of alphabetic. diff --git a/src/stores/widgets/WidgetLayoutStore.ts b/src/stores/widgets/WidgetLayoutStore.ts index 4029c33dbf..928c2522e8 100644 --- a/src/stores/widgets/WidgetLayoutStore.ts +++ b/src/stores/widgets/WidgetLayoutStore.ts @@ -18,6 +18,7 @@ import { Room } from "matrix-js-sdk/src/models/room"; import { MatrixEvent } from "matrix-js-sdk/src/models/event"; import { RoomStateEvent } from "matrix-js-sdk/src/models/room-state"; import { Optional } from "matrix-events-sdk"; +import { compare } from "matrix-js-sdk/src/utils"; import SettingsStore from "../../settings/SettingsStore"; import WidgetStore, { IApp } from "../WidgetStore"; @@ -28,7 +29,6 @@ import { ReadyWatchingStore } from "../ReadyWatchingStore"; import { SettingLevel } from "../../settings/SettingLevel"; import { arrayFastClone } from "../../utils/arrays"; import { UPDATE_EVENT } from "../AsyncStore"; -import { compare } from "../../utils/strings"; export const WIDGET_LAYOUT_EVENT_TYPE = "io.element.widgets.layout"; diff --git a/src/theme.ts b/src/theme.ts index 9d2f836fb4..84455dd6d6 100644 --- a/src/theme.ts +++ b/src/theme.ts @@ -15,10 +15,11 @@ See the License for the specific language governing permissions and limitations under the License. */ +import { compare } from "matrix-js-sdk/src/utils"; + import { _t } from "./languageHandler"; import SettingsStore from "./settings/SettingsStore"; import ThemeWatcher from "./settings/watchers/ThemeWatcher"; -import { compare } from "./utils/strings"; export const DEFAULT_THEME = "light"; const HIGH_CONTRAST_THEMES = { diff --git a/src/utils/SortMembers.ts b/src/utils/SortMembers.ts index 74d6388c93..18e2ce6680 100644 --- a/src/utils/SortMembers.ts +++ b/src/utils/SortMembers.ts @@ -16,10 +16,10 @@ limitations under the License. import { groupBy, mapValues, maxBy, minBy, sumBy, takeRight } from "lodash"; import { MatrixClient, Room, RoomMember } from "matrix-js-sdk/src/matrix"; +import { compare } from "matrix-js-sdk/src/utils"; import { Member } from "./direct-messages"; import DMRoomMap from "./DMRoomMap"; -import { compare } from "./strings"; export const compareMembers = ( activityScores: Record, diff --git a/src/utils/strings.ts b/src/utils/strings.ts index 8bf039656d..1758cb5ff8 100644 --- a/src/utils/strings.ts +++ b/src/utils/strings.ts @@ -75,16 +75,6 @@ export function copyNode(ref: Element): boolean { return document.execCommand('copy'); } -const collator = new Intl.Collator(); -/** - * Performant language-sensitive string comparison - * @param a the first string to compare - * @param b the second string to compare - */ -export function compare(a: string, b: string): number { - return collator.compare(a, b); -} - /** * Returns text which has been selected by the user * @returns the selected text diff --git a/test/components/views/rooms/MemberList-test.tsx b/test/components/views/rooms/MemberList-test.tsx index 9efe741d2b..171e539ad3 100644 --- a/test/components/views/rooms/MemberList-test.tsx +++ b/test/components/views/rooms/MemberList-test.tsx @@ -20,10 +20,10 @@ import ReactDOM from 'react-dom'; import { Room } from 'matrix-js-sdk/src/models/room'; import { RoomMember } from 'matrix-js-sdk/src/models/room-member'; import { User } from "matrix-js-sdk/src/models/user"; +import { compare } from "matrix-js-sdk/src/utils"; import { MatrixClientPeg } from '../../../../src/MatrixClientPeg'; import * as TestUtils from '../../../test-utils'; -import { compare } from "../../../../src/utils/strings"; import MemberList from "../../../../src/components/views/rooms/MemberList"; import MemberTile from '../../../../src/components/views/rooms/MemberTile'; import MatrixClientContext from "../../../../src/contexts/MatrixClientContext";