Skip to content
This repository has been archived by the owner on Sep 11, 2024. It is now read-only.

Commit

Permalink
lint
Browse files Browse the repository at this point in the history
  • Loading branch information
Half-Shot committed Sep 9, 2024
1 parent 34d3176 commit 8e39e06
Show file tree
Hide file tree
Showing 6 changed files with 63 additions and 41 deletions.
6 changes: 6 additions & 0 deletions res/css/views/right_panel/_UserInfo.pcss
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,12 @@ limitations under the License.
}
}

.mx_UserInfo_timezone {
.mx_UserInfo_profileStatus {
margin: var(--cpd-space-1x) 0;
}
}

.mx_PresenceLabel {
font: var(--cpd-font-body-sm-regular);
opacity: 1;
Expand Down
20 changes: 5 additions & 15 deletions src/components/structures/LoggedInView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -191,19 +191,9 @@ class LoggedInView extends React.Component<IProps, IState> {
this.refreshBackgroundImage,
);


this.timezoneProfileUpdateRef = [
SettingsStore.watchSetting(
"userTimezonePublish",
null,
this.onTimezoneUpdate,
),
SettingsStore.watchSetting(
"userTimezone",
null,
this.onTimezoneUpdate,
),

SettingsStore.watchSetting("userTimezonePublish", null, this.onTimezoneUpdate),
SettingsStore.watchSetting("userTimezone", null, this.onTimezoneUpdate),
];

this.resizer = this.createResizer();
Expand All @@ -215,7 +205,7 @@ class LoggedInView extends React.Component<IProps, IState> {
}

private onTimezoneUpdate = async (): Promise<void> => {
console.log('Triggering timezoen update', SettingsStore);
console.log("Triggering timezoen update", SettingsStore);
if (!SettingsStore.getValue("userTimezonePublish")) {
// Ensure it's deleted
try {
Expand All @@ -230,7 +220,7 @@ class LoggedInView extends React.Component<IProps, IState> {
return;
}
try {
await this._matrixClient.setExtendedProfileProperty("us.cloke.msc4175.tz", currentTimezone)
await this._matrixClient.setExtendedProfileProperty("us.cloke.msc4175.tz", currentTimezone);
} catch (ex) {
console.warn("Failed to update user profile with current timezone", ex);
}
Expand All @@ -246,7 +236,7 @@ class LoggedInView extends React.Component<IProps, IState> {
if (this.layoutWatcherRef) SettingsStore.unwatchSetting(this.layoutWatcherRef);
if (this.compactLayoutWatcherRef) SettingsStore.unwatchSetting(this.compactLayoutWatcherRef);
if (this.backgroundImageWatcherRef) SettingsStore.unwatchSetting(this.backgroundImageWatcherRef);
this.timezoneProfileUpdateRef?.forEach(s => SettingsStore.unwatchSetting(s));
this.timezoneProfileUpdateRef?.forEach((s) => SettingsStore.unwatchSetting(s));
this.resizer?.detach();
}

Expand Down
11 changes: 8 additions & 3 deletions src/components/views/right_panel/UserInfo.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ import {
User,
Device,
EventType,
MatrixError,
} from "matrix-js-sdk/src/matrix";
import { KnownMembership } from "matrix-js-sdk/src/types";
import { UserVerificationStatus, VerificationRequest } from "matrix-js-sdk/src/crypto-api";
Expand Down Expand Up @@ -1703,7 +1702,6 @@ export const UserInfoHeader: React.FC<{
);
}


const timezoneInfo = useUserTimezone(member.userId);

const e2eIcon = e2eStatus ? <E2EIcon size={18} status={e2eStatus} isUser={true} /> : null;
Expand Down Expand Up @@ -1738,7 +1736,14 @@ export const UserInfoHeader: React.FC<{
{e2eIcon}
</Flex>
</Heading>
{presenceLabel} {timezoneInfo && <Tooltip label={timezoneInfo.timezone}><span>{timezoneInfo.friendly}</span></Tooltip>}
{presenceLabel}
<Tooltip label={timezoneInfo?.timezone ?? ""}>
<span className="mx_UserInfo_timezone">
<Text size="sm" weight="regular">
{timezoneInfo?.friendly ?? ""}
</Text>
</span>
</Tooltip>
<Text size="sm" weight="semibold" className="mx_UserInfo_profile_mxid">
<CopyableText getTextToCopy={() => userIdentifier} border={false}>
{userIdentifier}
Expand Down
6 changes: 1 addition & 5 deletions src/components/views/settings/UserPersonalInfoSettings.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -131,11 +131,7 @@ export const UserPersonalInfoSettings: React.FC<UserPersonalInfoSettingsProps> =
</ThreepidSectionWrapper>
</SettingsSubsection>

<SettingsSubsection
heading={_t("settings|general|timezone")}
stretchContent
legacy={false}
>
<SettingsSubsection heading={_t("settings|general|timezone")} stretchContent legacy={false}>

Check failure on line 134 in src/components/views/settings/UserPersonalInfoSettings.tsx

View workflow job for this annotation

GitHub Actions / Typescript Syntax Check

Argument of type '"settings|general|timezone"' is not assignable to parameter of type '"a11y_jump_first_unread_room" | "cannot_invite_without_identity_server" | "cannot_reach_homeserver" | "cannot_reach_homeserver_detail" | "cant_load_page" | "chat_card_back_action_label" | ... 3460 more ... | "zxcvbn|warnings|wordByItself"'.
<ThreepidSectionWrapper
error={_t("settings|general|unable_to_load_msisdns")}
loadingState={loadingState}
Expand Down
59 changes: 42 additions & 17 deletions src/hooks/useUserTimezone.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,23 @@
/*
Copyright 2024 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
import { useEffect, useState } from "react";
import { MatrixClientPeg } from "../MatrixClientPeg";
import { MatrixError } from "matrix-js-sdk/src/matrix";

import { MatrixClientPeg } from "../MatrixClientPeg";

/**
* Fetch a user's delclared timezone through their profile, and return
* a friendly string of the current time for that user. This will keep
Expand All @@ -12,7 +28,7 @@ import { MatrixError } from "matrix-js-sdk/src/matrix";
* null if the user has no timezone or the timezone was not recognised
* by the browser.
*/
export const useUserTimezone = (userId: string): { timezone: string, friendly: string }|null => {
export const useUserTimezone = (userId: string): { timezone: string; friendly: string } | null => {
const [timezone, setTimezone] = useState<string>();
const [updateInterval, setUpdateInterval] = useState<number>();
const [friendly, setFriendly] = useState<string>();
Expand All @@ -23,17 +39,19 @@ export const useUserTimezone = (userId: string): { timezone: string, friendly: s
if (supported !== undefined) {
return;
}
cli.doesServerSupportExtendedProfiles().then(setSupported).catch((ex) => {
console.warn("Unable to determine if extended profiles are supported", ex);
});
}, [supported]);
cli.doesServerSupportExtendedProfiles()

Check failure on line 42 in src/hooks/useUserTimezone.ts

View workflow job for this annotation

GitHub Actions / Jest (1)

<UserInfo /> › closes on close button click

TypeError: cli.doesServerSupportExtendedProfiles is not a function at doesServerSupportExtendedProfiles (src/hooks/useUserTimezone.ts:42:13) at invokePassiveEffectCreate (node_modules/react-dom/cjs/react-dom.development.js:23487:20) at HTMLUnknownElement.callCallback (node_modules/react-dom/cjs/react-dom.development.js:3945:14) at HTMLUnknownElement.callTheUserObjectsOperation (node_modules/jsdom/lib/jsdom/living/generated/EventListener.js:26:30) at innerInvokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:350:25) at invokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:286:3) at HTMLUnknownElementImpl._dispatch (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:233:9) at HTMLUnknownElementImpl.dispatchEvent (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:104:17) at HTMLUnknownElement.dispatchEvent (node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js:241:34) at Object.invokeGuardedCallbackDev (node_modules/react-dom/cjs/react-dom.development.js:3994:16) at invokeGuardedCallback (node_modules/react-dom/cjs/react-dom.development.js:4056:31) at flushPassiveEffectsImpl (node_modules/react-dom/cjs/react-dom.development.js:23574:9) at unstable_runWithPriority (node_modules/scheduler/cjs/scheduler.development.js:468:12) at runWithPriority$1 (node_modules/react-dom/cjs/react-dom.development.js:11276:10) at flushPassiveEffects (node_modules/react-dom/cjs/react-dom.development.js:23447:14) at performSyncWorkOnRoot (node_modules/react-dom/cjs/react-dom.development.js:22269:3) at node_modules/react-dom/cjs/react-dom.development.js:11327:26 at unstable_runWithPriority (node_modules/scheduler/cjs/scheduler.development.js:468:12) at runWithPriority$1 (node_modules/react-dom/cjs/react-dom.development.js:11276:10) at flushSyncCallbackQueueImpl (node_modules/react-dom/cjs/react-dom.development.js:11322:9) at flushSyncCallbackQueue (node_modules/react-dom/cjs/react-dom.development.js:11309:3) at batchedUpdates$1 (node_modules/react-dom/cjs/react-dom.development.js:22387:7) at act (node_modules/react-dom/cjs/react-dom-test-utils.development.js:1042:14) at render (node_modules/@testing-library/react/dist/pure.js:97:26) at renderComponent (test/components/views/right_panel/UserInfo-test.tsx:207:22) at Object.renderComponent (test/components/views/right_panel/UserInfo-test.tsx:222:9)

Check failure on line 42 in src/hooks/useUserTimezone.ts

View workflow job for this annotation

GitHub Actions / Jest (1)

<UserInfo /> › without a room › does not render space header

TypeError: cli.doesServerSupportExtendedProfiles is not a function at doesServerSupportExtendedProfiles (src/hooks/useUserTimezone.ts:42:13) at invokePassiveEffectCreate (node_modules/react-dom/cjs/react-dom.development.js:23487:20) at HTMLUnknownElement.callCallback (node_modules/react-dom/cjs/react-dom.development.js:3945:14) at HTMLUnknownElement.callTheUserObjectsOperation (node_modules/jsdom/lib/jsdom/living/generated/EventListener.js:26:30) at innerInvokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:350:25) at invokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:286:3) at HTMLUnknownElementImpl._dispatch (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:233:9) at HTMLUnknownElementImpl.dispatchEvent (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:104:17) at HTMLUnknownElement.dispatchEvent (node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js:241:34) at Object.invokeGuardedCallbackDev (node_modules/react-dom/cjs/react-dom.development.js:3994:16) at invokeGuardedCallback (node_modules/react-dom/cjs/react-dom.development.js:4056:31) at flushPassiveEffectsImpl (node_modules/react-dom/cjs/react-dom.development.js:23574:9) at unstable_runWithPriority (node_modules/scheduler/cjs/scheduler.development.js:468:12) at runWithPriority$1 (node_modules/react-dom/cjs/react-dom.development.js:11276:10) at flushPassiveEffects (node_modules/react-dom/cjs/react-dom.development.js:23447:14) at performSyncWorkOnRoot (node_modules/react-dom/cjs/react-dom.development.js:22269:3) at node_modules/react-dom/cjs/react-dom.development.js:11327:26 at unstable_runWithPriority (node_modules/scheduler/cjs/scheduler.development.js:468:12) at runWithPriority$1 (node_modules/react-dom/cjs/react-dom.development.js:11276:10) at flushSyncCallbackQueueImpl (node_modules/react-dom/cjs/react-dom.development.js:11322:9) at flushSyncCallbackQueue (node_modules/react-dom/cjs/react-dom.development.js:11309:3) at batchedUpdates$1 (node_modules/react-dom/cjs/react-dom.development.js:22387:7) at act (node_modules/react-dom/cjs/react-dom-test-utils.development.js:1042:14) at render (node_modules/@testing-library/react/dist/pure.js:97:26) at renderComponent (test/components/views/right_panel/UserInfo-test.tsx:207:22) at Object.renderComponent (test/components/views/right_panel/UserInfo-test.tsx:231:13)

Check failure on line 42 in src/hooks/useUserTimezone.ts

View workflow job for this annotation

GitHub Actions / Jest (1)

<UserInfo /> › without a room › renders user info

TypeError: cli.doesServerSupportExtendedProfiles is not a function at doesServerSupportExtendedProfiles (src/hooks/useUserTimezone.ts:42:13) at invokePassiveEffectCreate (node_modules/react-dom/cjs/react-dom.development.js:23487:20) at HTMLUnknownElement.callCallback (node_modules/react-dom/cjs/react-dom.development.js:3945:14) at HTMLUnknownElement.callTheUserObjectsOperation (node_modules/jsdom/lib/jsdom/living/generated/EventListener.js:26:30) at innerInvokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:350:25) at invokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:286:3) at HTMLUnknownElementImpl._dispatch (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:233:9) at HTMLUnknownElementImpl.dispatchEvent (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:104:17) at HTMLUnknownElement.dispatchEvent (node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js:241:34) at Object.invokeGuardedCallbackDev (node_modules/react-dom/cjs/react-dom.development.js:3994:16) at invokeGuardedCallback (node_modules/react-dom/cjs/react-dom.development.js:4056:31) at flushPassiveEffectsImpl (node_modules/react-dom/cjs/react-dom.development.js:23574:9) at unstable_runWithPriority (node_modules/scheduler/cjs/scheduler.development.js:468:12) at runWithPriority$1 (node_modules/react-dom/cjs/react-dom.development.js:11276:10) at flushPassiveEffects (node_modules/react-dom/cjs/react-dom.development.js:23447:14) at performSyncWorkOnRoot (node_modules/react-dom/cjs/react-dom.development.js:22269:3) at node_modules/react-dom/cjs/react-dom.development.js:11327:26 at unstable_runWithPriority (node_modules/scheduler/cjs/scheduler.development.js:468:12) at runWithPriority$1 (node_modules/react-dom/cjs/react-dom.development.js:11276:10) at flushSyncCallbackQueueImpl (node_modules/react-dom/cjs/react-dom.development.js:11322:9) at flushSyncCallbackQueue (node_modules/react-dom/cjs/react-dom.development.js:11309:3) at batchedUpdates$1 (node_modules/react-dom/cjs/react-dom.development.js:22387:7) at act (node_modules/react-dom/cjs/react-dom-test-utils.development.js:1042:14) at render (node_modules/@testing-library/react/dist/pure.js:97:26) at renderComponent (test/components/views/right_panel/UserInfo-test.tsx:207:22) at Object.renderComponent (test/components/views/right_panel/UserInfo-test.tsx:236:13)

Check failure on line 42 in src/hooks/useUserTimezone.ts

View workflow job for this annotation

GitHub Actions / Jest (1)

<UserInfo /> › without a room › renders encryption info panel without pending verification

TypeError: cli.doesServerSupportExtendedProfiles is not a function at doesServerSupportExtendedProfiles (src/hooks/useUserTimezone.ts:42:13) at invokePassiveEffectCreate (node_modules/react-dom/cjs/react-dom.development.js:23487:20) at HTMLUnknownElement.callCallback (node_modules/react-dom/cjs/react-dom.development.js:3945:14) at HTMLUnknownElement.callTheUserObjectsOperation (node_modules/jsdom/lib/jsdom/living/generated/EventListener.js:26:30) at innerInvokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:350:25) at invokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:286:3) at HTMLUnknownElementImpl._dispatch (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:233:9) at HTMLUnknownElementImpl.dispatchEvent (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:104:17) at HTMLUnknownElement.dispatchEvent (node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js:241:34) at Object.invokeGuardedCallbackDev (node_modules/react-dom/cjs/react-dom.development.js:3994:16) at invokeGuardedCallback (node_modules/react-dom/cjs/react-dom.development.js:4056:31) at flushPassiveEffectsImpl (node_modules/react-dom/cjs/react-dom.development.js:23574:9) at unstable_runWithPriority (node_modules/scheduler/cjs/scheduler.development.js:468:12) at runWithPriority$1 (node_modules/react-dom/cjs/react-dom.development.js:11276:10) at flushPassiveEffects (node_modules/react-dom/cjs/react-dom.development.js:23447:14) at performSyncWorkOnRoot (node_modules/react-dom/cjs/react-dom.development.js:22269:3) at node_modules/react-dom/cjs/react-dom.development.js:11327:26 at unstable_runWithPriority (node_modules/scheduler/cjs/scheduler.development.js:468:12) at runWithPriority$1 (node_modules/react-dom/cjs/react-dom.development.js:11276:10) at flushSyncCallbackQueueImpl (node_modules/react-dom/cjs/react-dom.development.js:11322:9) at flushSyncCallbackQueue (node_modules/react-dom/cjs/react-dom.development.js:11309:3) at batchedUpdates$1 (node_modules/react-dom/cjs/react-dom.development.js:22387:7) at act (node_modules/react-dom/cjs/react-dom-test-utils.development.js:1042:14) at render (node_modules/@testing-library/react/dist/pure.js:97:26) at renderComponent (test/components/views/right_panel/UserInfo-test.tsx:207:22) at Object.renderComponent (test/components/views/right_panel/UserInfo-test.tsx:241:13)

Check failure on line 42 in src/hooks/useUserTimezone.ts

View workflow job for this annotation

GitHub Actions / Jest (1)

<UserInfo /> › without a room › renders encryption verification panel with pending verification

TypeError: cli.doesServerSupportExtendedProfiles is not a function at doesServerSupportExtendedProfiles (src/hooks/useUserTimezone.ts:42:13) at invokePassiveEffectCreate (node_modules/react-dom/cjs/react-dom.development.js:23487:20) at HTMLUnknownElement.callCallback (node_modules/react-dom/cjs/react-dom.development.js:3945:14) at HTMLUnknownElement.callTheUserObjectsOperation (node_modules/jsdom/lib/jsdom/living/generated/EventListener.js:26:30) at innerInvokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:350:25) at invokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:286:3) at HTMLUnknownElementImpl._dispatch (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:233:9) at HTMLUnknownElementImpl.dispatchEvent (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:104:17) at HTMLUnknownElement.dispatchEvent (node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js:241:34) at Object.invokeGuardedCallbackDev (node_modules/react-dom/cjs/react-dom.development.js:3994:16) at invokeGuardedCallback (node_modules/react-dom/cjs/react-dom.development.js:4056:31) at flushPassiveEffectsImpl (node_modules/react-dom/cjs/react-dom.development.js:23574:9) at unstable_runWithPriority (node_modules/scheduler/cjs/scheduler.development.js:468:12) at runWithPriority$1 (node_modules/react-dom/cjs/react-dom.development.js:11276:10) at flushPassiveEffects (node_modules/react-dom/cjs/react-dom.development.js:23447:14) at performSyncWorkOnRoot (node_modules/react-dom/cjs/react-dom.development.js:22269:3) at node_modules/react-dom/cjs/react-dom.development.js:11327:26 at unstable_runWithPriority (node_modules/scheduler/cjs/scheduler.development.js:468:12) at runWithPriority$1 (node_modules/react-dom/cjs/react-dom.development.js:11276:10) at flushSyncCallbackQueueImpl (node_modules/react-dom/cjs/react-dom.development.js:11322:9) at flushSyncCallbackQueue (node_modules/react-dom/cjs/react-dom.development.js:11309:3) at batchedUpdates$1 (node_modules/react-dom/cjs/react-dom.development.js:22387:7) at act (node_modules/react-dom/cjs/react-dom-test-utils.development.js:1042:14) at render (node_modules/@testing-library/react/dist/pure.js:97:26) at renderComponent (test/components/views/right_panel/UserInfo-test.tsx:207:22) at Object.renderComponent (test/components/views/right_panel/UserInfo-test.tsx:246:13)

Check failure on line 42 in src/hooks/useUserTimezone.ts

View workflow job for this annotation

GitHub Actions / Jest (1)

<UserInfo /> › without a room › should show error modal when the verification request is cancelled with a mismatch

TypeError: cli.doesServerSupportExtendedProfiles is not a function at doesServerSupportExtendedProfiles (src/hooks/useUserTimezone.ts:42:13) at invokePassiveEffectCreate (node_modules/react-dom/cjs/react-dom.development.js:23487:20) at HTMLUnknownElement.callCallback (node_modules/react-dom/cjs/react-dom.development.js:3945:14) at HTMLUnknownElement.callTheUserObjectsOperation (node_modules/jsdom/lib/jsdom/living/generated/EventListener.js:26:30) at innerInvokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:350:25) at invokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:286:3) at HTMLUnknownElementImpl._dispatch (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:233:9) at HTMLUnknownElementImpl.dispatchEvent (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:104:17) at HTMLUnknownElement.dispatchEvent (node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js:241:34) at Object.invokeGuardedCallbackDev (node_modules/react-dom/cjs/react-dom.development.js:3994:16) at invokeGuardedCallback (node_modules/react-dom/cjs/react-dom.development.js:4056:31) at flushPassiveEffectsImpl (node_modules/react-dom/cjs/react-dom.development.js:23574:9) at unstable_runWithPriority (node_modules/scheduler/cjs/scheduler.development.js:468:12) at runWithPriority$1 (node_modules/react-dom/cjs/react-dom.development.js:11276:10) at flushPassiveEffects (node_modules/react-dom/cjs/react-dom.development.js:23447:14) at performSyncWorkOnRoot (node_modules/react-dom/cjs/react-dom.development.js:22269:3) at node_modules/react-dom/cjs/react-dom.development.js:11327:26 at unstable_runWithPriority (node_modules/scheduler/cjs/scheduler.development.js:468:12) at runWithPriority$1 (node_modules/react-dom/cjs/react-dom.development.js:11276:10) at flushSyncCallbackQueueImpl (node_modules/react-dom/cjs/react-dom.development.js:11322:9) at flushSyncCallbackQueue (node_modules/react-dom/cjs/react-dom.development.js:11309:3) at batchedUpdates$1 (node_modules/react-dom/cjs/react-dom.development.js:22387:7) at act (node_modules/react-dom/cjs/react-dom-test-utils.development.js:1042:14) at render (node_modules/@testing-library/react/dist/pure.js:97:26) at renderComponent (test/components/views/right_panel/UserInfo-test.tsx:207:22) at Object.renderComponent (test/components/views/right_panel/UserInfo-test.tsx:255:13)

Check failure on line 42 in src/hooks/useUserTimezone.ts

View workflow job for this annotation

GitHub Actions / Jest (1)

<UserInfo /> › without a room › should not show error modal when the verification request is changed for some other reason

TypeError: cli.doesServerSupportExtendedProfiles is not a function at doesServerSupportExtendedProfiles (src/hooks/useUserTimezone.ts:42:13) at invokePassiveEffectCreate (node_modules/react-dom/cjs/react-dom.development.js:23487:20) at HTMLUnknownElement.callCallback (node_modules/react-dom/cjs/react-dom.development.js:3945:14) at HTMLUnknownElement.callTheUserObjectsOperation (node_modules/jsdom/lib/jsdom/living/generated/EventListener.js:26:30) at innerInvokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:350:25) at invokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:286:3) at HTMLUnknownElementImpl._dispatch (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:233:9) at HTMLUnknownElementImpl.dispatchEvent (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:104:17) at HTMLUnknownElement.dispatchEvent (node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js:241:34) at Object.invokeGuardedCallbackDev (node_modules/react-dom/cjs/react-dom.development.js:3994:16) at invokeGuardedCallback (node_modules/react-dom/cjs/react-dom.development.js:4056:31) at flushPassiveEffectsImpl (node_modules/react-dom/cjs/react-dom.development.js:23574:9) at unstable_runWithPriority (node_modules/scheduler/cjs/scheduler.development.js:468:12) at runWithPriority$1 (node_modules/react-dom/cjs/react-dom.development.js:11276:10) at flushPassiveEffects (node_modules/react-dom/cjs/react-dom.development.js:23447:14) at performSyncWorkOnRoot (node_modules/react-dom/cjs/react-dom.development.js:22269:3) at node_modules/react-dom/cjs/react-dom.development.js:11327:26 at unstable_runWithPriority (node_modules/scheduler/cjs/scheduler.development.js:468:12) at runWithPriority$1 (node_modules/react-dom/cjs/react-dom.development.js:11276:10) at flushSyncCallbackQueueImpl (node_modules/react-dom/cjs/react-dom.development.js:11322:9) at flushSyncCallbackQueue (node_modules/react-dom/cjs/react-dom.development.js:11309:3) at batchedUpdates$1 (node_modules/react-dom/cjs/react-dom.development.js:22387:7) at act (node_modules/react-dom/cjs/react-dom-test-utils.development.js:1042:14) at render (node_modules/@testing-library/react/dist/pure.js:97:26) at renderComponent (test/components/views/right_panel/UserInfo-test.tsx:207:22) at Object.renderComponent (test/components/views/right_panel/UserInfo-test.tsx:270:13)

Check failure on line 42 in src/hooks/useUserTimezone.ts

View workflow job for this annotation

GitHub Actions / Jest (1)

<UserInfo /> › without a room › renders close button correctly when encryption panel with a pending verification request

TypeError: cli.doesServerSupportExtendedProfiles is not a function at doesServerSupportExtendedProfiles (src/hooks/useUserTimezone.ts:42:13) at invokePassiveEffectCreate (node_modules/react-dom/cjs/react-dom.development.js:23487:20) at HTMLUnknownElement.callCallback (node_modules/react-dom/cjs/react-dom.development.js:3945:14) at HTMLUnknownElement.callTheUserObjectsOperation (node_modules/jsdom/lib/jsdom/living/generated/EventListener.js:26:30) at innerInvokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:350:25) at invokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:286:3) at HTMLUnknownElementImpl._dispatch (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:233:9) at HTMLUnknownElementImpl.dispatchEvent (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:104:17) at HTMLUnknownElement.dispatchEvent (node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js:241:34) at Object.invokeGuardedCallbackDev (node_modules/react-dom/cjs/react-dom.development.js:3994:16) at invokeGuardedCallback (node_modules/react-dom/cjs/react-dom.development.js:4056:31) at flushPassiveEffectsImpl (node_modules/react-dom/cjs/react-dom.development.js:23574:9) at unstable_runWithPriority (node_modules/scheduler/cjs/scheduler.development.js:468:12) at runWithPriority$1 (node_modules/react-dom/cjs/react-dom.development.js:11276:10) at flushPassiveEffects (node_modules/react-dom/cjs/react-dom.development.js:23447:14) at performSyncWorkOnRoot (node_modules/react-dom/cjs/react-dom.development.js:22269:3) at node_modules/react-dom/cjs/react-dom.development.js:11327:26 at unstable_runWithPriority (node_modules/scheduler/cjs/scheduler.development.js:468:12) at runWithPriority$1 (node_modules/react-dom/cjs/react-dom.development.js:11276:10) at flushSyncCallbackQueueImpl (node_modules/react-dom/cjs/react-dom.development.js:11322:9) at flushSyncCallbackQueue (node_modules/react-dom/cjs/react-dom.development.js:11309:3) at batchedUpdates$1 (node_modules/react-dom/cjs/react-dom.development.js:22387:7) at act (node_modules/react-dom/cjs/react-dom-test-utils.development.js:1042:14) at render (node_modules/@testing-library/react/dist/pure.js:97:26) at renderComponent (test/components/views/right_panel/UserInfo-test.tsx:207:22) at Object.renderComponent (test/components/views/right_panel/UserInfo-test.tsx:291:13)

Check failure on line 42 in src/hooks/useUserTimezone.ts

View workflow job for this annotation

GitHub Actions / Jest (1)

<UserInfo /> › with a room › renders user info

TypeError: cli.doesServerSupportExtendedProfiles is not a function at doesServerSupportExtendedProfiles (src/hooks/useUserTimezone.ts:42:13) at invokePassiveEffectCreate (node_modules/react-dom/cjs/react-dom.development.js:23487:20) at HTMLUnknownElement.callCallback (node_modules/react-dom/cjs/react-dom.development.js:3945:14) at HTMLUnknownElement.callTheUserObjectsOperation (node_modules/jsdom/lib/jsdom/living/generated/EventListener.js:26:30) at innerInvokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:350:25) at invokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:286:3) at HTMLUnknownElementImpl._dispatch (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:233:9) at HTMLUnknownElementImpl.dispatchEvent (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:104:17) at HTMLUnknownElement.dispatchEvent (node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js:241:34) at Object.invokeGuardedCallbackDev (node_modules/react-dom/cjs/react-dom.development.js:3994:16) at invokeGuardedCallback (node_modules/react-dom/cjs/react-dom.development.js:4056:31) at flushPassiveEffectsImpl (node_modules/react-dom/cjs/react-dom.development.js:23574:9) at unstable_runWithPriority (node_modules/scheduler/cjs/scheduler.development.js:468:12) at runWithPriority$1 (node_modules/react-dom/cjs/react-dom.development.js:11276:10) at flushPassiveEffects (node_modules/react-dom/cjs/react-dom.development.js:23447:14) at performSyncWorkOnRoot (node_modules/react-dom/cjs/react-dom.development.js:22269:3) at node_modules/react-dom/cjs/react-dom.development.js:11327:26 at unstable_runWithPriority (node_modules/scheduler/cjs/scheduler.development.js:468:12) at runWithPriority$1 (node_modules/react-dom/cjs/react-dom.development.js:11276:10) at flushSyncCallbackQueueImpl (node_modules/react-dom/cjs/react-dom.development.js:11322:9) at flushSyncCallbackQueue (node_modules/react-dom/cjs/react-dom.development.js:11309:3) at batchedUpdates$1 (node_modules/react-dom/cjs/react-dom.development.js:22387:7) at act (node_modules/react-dom/cjs/react-dom-test-utils.development.js:1042:14) at render (node_modules/@testing-library/react/dist/pure.js:97:26) at renderComponent (test/components/views/right_panel/UserInfo-test.tsx:207:22) at Object.renderComponent (test/components/views/right_panel/UserInfo-test.tsx:299:13)

Check failure on line 42 in src/hooks/useUserTimezone.ts

View workflow job for this annotation

GitHub Actions / Jest (1)

<UserInfo /> › with a room › does not render space header when room is not a space room

TypeError: cli.doesServerSupportExtendedProfiles is not a function at doesServerSupportExtendedProfiles (src/hooks/useUserTimezone.ts:42:13) at invokePassiveEffectCreate (node_modules/react-dom/cjs/react-dom.development.js:23487:20) at HTMLUnknownElement.callCallback (node_modules/react-dom/cjs/react-dom.development.js:3945:14) at HTMLUnknownElement.callTheUserObjectsOperation (node_modules/jsdom/lib/jsdom/living/generated/EventListener.js:26:30) at innerInvokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:350:25) at invokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:286:3) at HTMLUnknownElementImpl._dispatch (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:233:9) at HTMLUnknownElementImpl.dispatchEvent (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:104:17) at HTMLUnknownElement.dispatchEvent (node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js:241:34) at Object.invokeGuardedCallbackDev (node_modules/react-dom/cjs/react-dom.development.js:3994:16) at invokeGuardedCallback (node_modules/react-dom/cjs/react-dom.development.js:4056:31) at flushPassiveEffectsImpl (node_modules/react-dom/cjs/react-dom.development.js:23574:9) at unstable_runWithPriority (node_modules/scheduler/cjs/scheduler.development.js:468:12) at runWithPriority$1 (node_modules/react-dom/cjs/react-dom.development.js:11276:10) at flushPassiveEffects (node_modules/react-dom/cjs/react-dom.development.js:23447:14) at performSyncWorkOnRoot (node_modules/react-dom/cjs/react-dom.development.js:22269:3) at node_modules/react-dom/cjs/react-dom.development.js:11327:26 at unstable_runWithPriority (node_modules/scheduler/cjs/scheduler.development.js:468:12) at runWithPriority$1 (node_modules/react-dom/cjs/react-dom.development.js:11276:10) at flushSyncCallbackQueueImpl (node_modules/react-dom/cjs/react-dom.development.js:11322:9) at flushSyncCallbackQueue (node_modules/react-dom/cjs/react-dom.development.js:11309:3) at batchedUpdates$1 (node_modules/react-dom/cjs/react-dom.development.js:22387:7) at act (node_modules/react-dom/cjs/react-dom-test-utils.development.js:1042:14) at render (node_modules/@testing-library/react/dist/pure.js:97:26) at renderComponent (test/components/views/right_panel/UserInfo-test.tsx:207:22) at Object.renderComponent (test/components/views/right_panel/UserInfo-test.tsx:304:13)
.then(setSupported)
.catch((ex) => {
console.warn("Unable to determine if extended profiles are supported", ex);
});
}, [supported, cli]);

useEffect(() => {
return () => {
if (updateInterval) {
clearInterval(updateInterval);
}
}
};
}, [updateInterval]);

useEffect(() => {
Expand All @@ -42,21 +60,28 @@ export const useUserTimezone = (userId: string): { timezone: string, friendly: s
}
(async () => {
try {
const tz = await cli.getExtendedProfileProperty(userId, 'us.cloke.msc4175.tz');
const tz = await cli.getExtendedProfileProperty(userId, "us.cloke.msc4175.tz");
if (typeof tz !== "string") {
// Err, definitely not a tz.
throw Error('Timezone value was not a string');
throw Error("Timezone value was not a string");
}
// This will validate the timezone for us.
Intl.DateTimeFormat(undefined, {timeZone: tz});
// eslint-disable-next-line new-cap
Intl.DateTimeFormat(undefined, { timeZone: tz });

const updateTime = () => {
const updateTime = (): void => {
const currentTime = new Date();
const friendly = currentTime.toLocaleString(undefined, { timeZone: tz, hour12: true, hour: "2-digit", minute: "2-digit", timeZoneName: "shortOffset"});
const friendly = currentTime.toLocaleString(undefined, {
timeZone: tz,
hour12: true,
hour: "2-digit",
minute: "2-digit",
timeZoneName: "shortOffset",
});
setTimezone(tz);
setFriendly(friendly);
setUpdateInterval(setTimeout(updateTime, (60 - currentTime.getSeconds()) * 1000));
}
};
updateTime();
} catch (ex) {
setTimezone(undefined);
Expand All @@ -66,17 +91,17 @@ export const useUserTimezone = (userId: string): { timezone: string, friendly: s
// No timezone set, ignore.
return;
}
console.error('Could not render current timezone for user', ex);
console.error("Could not render current timezone for user", ex);
}
})();
}, [supported, userId]);
}, [supported, userId, cli]);

if (!timezone || !friendly) {
return null;
}

return {
friendly,
timezone
timezone,
};
}
};
2 changes: 1 addition & 1 deletion src/settings/Settings.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ limitations under the License.
*/

import React, { ReactNode } from "react";
import { UNSTABLE_MSC4133_EXTENDED_PROFILES } from "matrix-js-sdk/src/matrix";

import { _t, _td, TranslationKey } from "../languageHandler";
import {
Expand Down Expand Up @@ -43,7 +44,6 @@ import ServerSupportUnstableFeatureController from "./controllers/ServerSupportU
import { WatchManager } from "./WatchManager";
import { CustomTheme } from "../theme";
import AnalyticsController from "./controllers/AnalyticsController";
import { UNSTABLE_MSC4133_EXTENDED_PROFILES } from "matrix-js-sdk/src/client"

export const defaultWatchManager = new WatchManager();

Expand Down

0 comments on commit 8e39e06

Please sign in to comment.