mirror of
https://github.com/element-hq/element-web.git
synced 2025-09-17 11:04:05 +02:00
Compare commits
2 Commits
develop
...
hughns/use
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7b3fcec933 | ||
|
|
6ed1633db2 |
@@ -33,11 +33,11 @@ export interface UserInfoHeaderState {
|
||||
*/
|
||||
onMemberAvatarClick: () => void;
|
||||
/**
|
||||
* Object containing information about the precense of the selected user
|
||||
* Object containing information about the presence of the selected user
|
||||
*/
|
||||
precenseInfo: PresenceInfo;
|
||||
presenceInfo: PresenceInfo;
|
||||
/**
|
||||
* Boolean that show or hide the precense information
|
||||
* Boolean that show or hide the presence information
|
||||
*/
|
||||
showPresence: boolean;
|
||||
/**
|
||||
@@ -59,12 +59,12 @@ interface UserInfoHeaderViewModelProps {
|
||||
* props
|
||||
* @see {@link UserInfoHeaderState} for more information about what this view model returns.
|
||||
*/
|
||||
export function useUserfoHeaderViewModel({ member, roomId }: UserInfoHeaderViewModelProps): UserInfoHeaderState {
|
||||
export function useUserInfoHeaderViewModel({ member, roomId }: UserInfoHeaderViewModelProps): UserInfoHeaderState {
|
||||
const cli = useContext(MatrixClientContext);
|
||||
|
||||
let showPresence = true;
|
||||
|
||||
const precenseInfo: PresenceInfo = {
|
||||
const presenceInfo: PresenceInfo = {
|
||||
lastActiveAgo: undefined,
|
||||
currentlyActive: undefined,
|
||||
state: undefined,
|
||||
@@ -96,9 +96,9 @@ export function useUserfoHeaderViewModel({ member, roomId }: UserInfoHeaderViewM
|
||||
}, [member]);
|
||||
|
||||
if (member instanceof RoomMember && member.user) {
|
||||
precenseInfo.state = member.user.presence;
|
||||
precenseInfo.lastActiveAgo = member.user.lastActiveAgo;
|
||||
precenseInfo.currentlyActive = member.user.currentlyActive;
|
||||
presenceInfo.state = member.user.presence;
|
||||
presenceInfo.lastActiveAgo = member.user.lastActiveAgo;
|
||||
presenceInfo.currentlyActive = member.user.currentlyActive;
|
||||
}
|
||||
|
||||
if (enablePresenceByHsUrl && enablePresenceByHsUrl[cli.baseUrl] !== undefined) {
|
||||
@@ -108,7 +108,7 @@ export function useUserfoHeaderViewModel({ member, roomId }: UserInfoHeaderViewM
|
||||
return {
|
||||
onMemberAvatarClick,
|
||||
showPresence,
|
||||
precenseInfo,
|
||||
presenceInfo,
|
||||
timezoneInfo,
|
||||
userIdentifier,
|
||||
};
|
||||
|
||||
@@ -9,7 +9,7 @@ import React, { type JSX } from "react";
|
||||
import { type User, type RoomMember } from "matrix-js-sdk/src/matrix";
|
||||
import { Heading, Tooltip, Text } from "@vector-im/compound-web";
|
||||
|
||||
import { useUserfoHeaderViewModel } from "../../../viewmodels/right_panel/user_info/UserInfoHeaderViewModel";
|
||||
import { useUserInfoHeaderViewModel } from "../../../viewmodels/right_panel/user_info/UserInfoHeaderViewModel";
|
||||
import MemberAvatar from "../../avatars/MemberAvatar";
|
||||
import { Container, type Member, type IDevice } from "../UserInfo";
|
||||
import { Flex } from "../../../../shared-components/utils/Flex";
|
||||
@@ -30,7 +30,7 @@ export const UserInfoHeaderView: React.FC<UserInfoHeaderViewProps> = ({
|
||||
roomId,
|
||||
hideVerificationSection,
|
||||
}) => {
|
||||
const vm = useUserfoHeaderViewModel({ member, roomId });
|
||||
const vm = useUserInfoHeaderViewModel({ member, roomId });
|
||||
const avatarUrl = (member as User).avatarUrl;
|
||||
const displayName = (member as RoomMember).rawDisplayName;
|
||||
|
||||
@@ -39,9 +39,9 @@ export const UserInfoHeaderView: React.FC<UserInfoHeaderViewProps> = ({
|
||||
if (vm.showPresence) {
|
||||
presenceLabel = (
|
||||
<PresenceLabel
|
||||
activeAgo={vm.precenseInfo.lastActiveAgo}
|
||||
currentlyActive={vm.precenseInfo.currentlyActive}
|
||||
presenceState={vm.precenseInfo.state}
|
||||
activeAgo={vm.presenceInfo.lastActiveAgo}
|
||||
currentlyActive={vm.presenceInfo.currentlyActive}
|
||||
presenceState={vm.presenceInfo.state}
|
||||
className="mx_UserInfo_profileStatus"
|
||||
coloured
|
||||
/>
|
||||
|
||||
@@ -12,7 +12,7 @@ import { renderHook } from "jest-matrix-react";
|
||||
|
||||
import { withClientContextRenderOptions } from "../../../../../test-utils";
|
||||
import { MatrixClientPeg } from "../../../../../../src/MatrixClientPeg";
|
||||
import { useUserfoHeaderViewModel } from "../../../../../../src/components/viewmodels/right_panel/user_info/UserInfoHeaderViewModel";
|
||||
import { useUserInfoHeaderViewModel } from "../../../../../../src/components/viewmodels/right_panel/user_info/UserInfoHeaderViewModel";
|
||||
import * as UseTimezone from "../../../../../../src/hooks/useUserTimezone";
|
||||
import SdkConfig from "../../../../../../src/SdkConfig";
|
||||
import Modal from "../../../../../../src/Modal";
|
||||
@@ -88,7 +88,7 @@ describe("useUserInfoHeaderViewModel", () => {
|
||||
});
|
||||
|
||||
const renderUserInfoHeaderViewModelHook = (props = defaultProps) => {
|
||||
return renderHook(() => useUserfoHeaderViewModel(props), withClientContextRenderOptions(mockClient));
|
||||
return renderHook(() => useUserInfoHeaderViewModel(props), withClientContextRenderOptions(mockClient));
|
||||
};
|
||||
it("should give user timezone info", () => {
|
||||
const defaultTZ = { timezone: "FR", friendly: "fr" };
|
||||
|
||||
@@ -16,13 +16,13 @@ import { MatrixClientPeg } from "../../../../../src/MatrixClientPeg";
|
||||
import MatrixClientContext from "../../../../../src/contexts/MatrixClientContext";
|
||||
import { UserInfoHeaderView } from "../../../../../src/components/views/right_panel/user_info/UserInfoHeaderView";
|
||||
import { createTestClient } from "../../../../test-utils";
|
||||
import { useUserfoHeaderViewModel } from "../../../../../src/components/viewmodels/right_panel/user_info/UserInfoHeaderViewModel";
|
||||
import { useUserInfoHeaderViewModel } from "../../../../../src/components/viewmodels/right_panel/user_info/UserInfoHeaderViewModel";
|
||||
|
||||
// Mock the viewmodel hooks
|
||||
jest.mock("../../../../../src/components/viewmodels/right_panel/user_info/UserInfoHeaderViewModel", () => ({
|
||||
useUserfoHeaderViewModel: jest.fn().mockReturnValue({
|
||||
useUserInfoHeaderViewModel: jest.fn().mockReturnValue({
|
||||
onMemberAvatarClick: jest.fn(),
|
||||
precenseInfo: {
|
||||
presenceInfo: {
|
||||
lastActiveAgo: undefined,
|
||||
currentlyActive: undefined,
|
||||
state: undefined,
|
||||
@@ -114,9 +114,9 @@ describe("<UserInfoHeaderView />", () => {
|
||||
});
|
||||
|
||||
it("should not render verification view if hideVerificationSection is true", () => {
|
||||
mocked(useUserfoHeaderViewModel).mockReturnValue({
|
||||
mocked(useUserInfoHeaderViewModel).mockReturnValue({
|
||||
onMemberAvatarClick: jest.fn(),
|
||||
precenseInfo: {
|
||||
presenceInfo: {
|
||||
lastActiveAgo: undefined,
|
||||
currentlyActive: undefined,
|
||||
state: undefined,
|
||||
@@ -133,9 +133,9 @@ describe("<UserInfoHeaderView />", () => {
|
||||
});
|
||||
|
||||
it("should render timezone if it exist", () => {
|
||||
mocked(useUserfoHeaderViewModel).mockReturnValue({
|
||||
mocked(useUserInfoHeaderViewModel).mockReturnValue({
|
||||
onMemberAvatarClick: jest.fn(),
|
||||
precenseInfo: {
|
||||
presenceInfo: {
|
||||
lastActiveAgo: undefined,
|
||||
currentlyActive: undefined,
|
||||
state: undefined,
|
||||
@@ -153,9 +153,9 @@ describe("<UserInfoHeaderView />", () => {
|
||||
});
|
||||
|
||||
it("should render correct presence label", () => {
|
||||
mocked(useUserfoHeaderViewModel).mockReturnValue({
|
||||
mocked(useUserInfoHeaderViewModel).mockReturnValue({
|
||||
onMemberAvatarClick: jest.fn(),
|
||||
precenseInfo: {
|
||||
presenceInfo: {
|
||||
lastActiveAgo: 0,
|
||||
currentlyActive: true,
|
||||
state: "online",
|
||||
@@ -171,9 +171,9 @@ describe("<UserInfoHeaderView />", () => {
|
||||
|
||||
it("should be able to click on member avatar", () => {
|
||||
const onMemberAvatarClick = jest.fn();
|
||||
mocked(useUserfoHeaderViewModel).mockReturnValue({
|
||||
mocked(useUserInfoHeaderViewModel).mockReturnValue({
|
||||
onMemberAvatarClick,
|
||||
precenseInfo: {
|
||||
presenceInfo: {
|
||||
lastActiveAgo: undefined,
|
||||
currentlyActive: undefined,
|
||||
state: undefined,
|
||||
|
||||
Reference in New Issue
Block a user