Estate: keep the new files free of unresolved-SDK type errors
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
e90b70e966
commit
f810a83a28
3 changed files with 19 additions and 13 deletions
|
|
@ -2,7 +2,6 @@ import React, { MouseEventHandler, ReactNode, useCallback, useMemo, useRef } fro
|
|||
import { useNavigate } from 'react-router-dom';
|
||||
import { useAtom, useAtomValue } from 'jotai';
|
||||
import { Box, Chip, Icon, IconButton, Icons, Spinner, Text, color } from 'folds';
|
||||
import { MatrixClient } from 'matrix-js-sdk';
|
||||
import { PageNav, PageNavContent, PageNavHeader } from '../../components/page';
|
||||
import { NavCategory, NavCategoryHeader, NavItem, NavItemContent } from '../../components/nav';
|
||||
import { RoomNavCategoryButton, RoomNavItem } from '../room-nav';
|
||||
|
|
@ -30,7 +29,7 @@ import { EstateRoom, EstateTier } from './buildEstate';
|
|||
import { activateEstateRoom } from './joinEstateRoom';
|
||||
import { useEstate, useEstateRootId } from './useEstate';
|
||||
|
||||
const estateRoomPath = (mx: MatrixClient, room: EstateRoom): string => {
|
||||
const estateRoomPath = (mx: ReturnType<typeof useMatrixClient>, room: EstateRoom): string => {
|
||||
const alias = getCanonicalAliasOrRoomId(mx, room.roomId);
|
||||
if (room.parentId === null) return getDirectRoomPath(alias);
|
||||
// A Space the user has not joined has no Space route; the room still resolves from Home.
|
||||
|
|
@ -62,7 +61,7 @@ function JoinRow({ room }: { room: EstateRoom }) {
|
|||
</NavItemContent>
|
||||
{state.status === AsyncStatus.Error && (
|
||||
<Text as="span" size="T200" style={{ color: color.Critical.Main }} truncate>
|
||||
{state.error.message}
|
||||
{(state.error as Error).message}
|
||||
</Text>
|
||||
)}
|
||||
<Chip
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
import { MatrixClient } from 'matrix-js-sdk';
|
||||
import { EstateRoom } from './buildEstate';
|
||||
|
||||
export type EstateActivation =
|
||||
|
|
@ -6,7 +5,9 @@ export type EstateActivation =
|
|||
| { kind: 'joined'; roomId: string }
|
||||
| { kind: 'refused'; message: string };
|
||||
|
||||
type JoinClient = Pick<MatrixClient, 'joinRoom'>;
|
||||
type JoinClient = {
|
||||
joinRoom(roomId: string, opts: { viaServers: string[] }): Promise<{ roomId: string }>;
|
||||
};
|
||||
|
||||
/**
|
||||
* What a tap on an estate row does. A joined room opens; any other room is
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
import { useCallback, useEffect, useMemo } from 'react';
|
||||
import { useAtomValue } from 'jotai';
|
||||
import { useQuery, useQueryClient } from '@tanstack/react-query';
|
||||
import { MatrixClient } from 'matrix-js-sdk';
|
||||
import { useMatrixClient } from '../../hooks/useMatrixClient';
|
||||
import { useClientConfig } from '../../hooks/useClientConfig';
|
||||
import { useFetchSpaceHierarchyLevel } from '../../hooks/useSpaceHierarchy';
|
||||
|
|
@ -12,14 +11,19 @@ import { allRoomsAtom } from '../../state/room-list/roomList';
|
|||
import { allInvitesAtom } from '../../state/room-list/inviteList';
|
||||
import { mDirectAtom } from '../../state/mDirectList';
|
||||
import { StateEvent } from '../../../types/matrix/room';
|
||||
import { buildEstate, EstateTier, Stewardships } from './buildEstate';
|
||||
import { buildEstate, EstateHierarchyRoom, EstateTier, Stewardships } from './buildEstate';
|
||||
|
||||
const HIERARCHY_DEPTH = 10;
|
||||
|
||||
const findLoadedRoom = (mx: MatrixClient, alias: string): string | undefined =>
|
||||
mx
|
||||
.getRooms()
|
||||
.find((r) => r.getCanonicalAlias() === alias || r.getAltAliases().includes(alias))?.roomId;
|
||||
type AliasedRoom = { roomId: string; getCanonicalAlias(): string | null; getAltAliases(): string[] };
|
||||
|
||||
const findLoadedRoom = (
|
||||
mx: ReturnType<typeof useMatrixClient>,
|
||||
alias: string
|
||||
): string | undefined =>
|
||||
(mx.getRooms() as AliasedRoom[]).find(
|
||||
(r) => r.getCanonicalAlias() === alias || r.getAltAliases().includes(alias)
|
||||
)?.roomId;
|
||||
|
||||
/** The estate's root Space: featuredCommunities.spaces[0] from the client config. */
|
||||
export const useEstateRootId = (): { rootId?: string; error?: Error } => {
|
||||
|
|
@ -79,7 +83,9 @@ export const useEstate = (rootId: string): Estate => {
|
|||
() => {
|
||||
const rootRoom = mx.getRoom(rootId);
|
||||
return rootRoom
|
||||
? getStateEvent(rootRoom, StateEvent.GameCultStewardships)?.getContent<Stewardships>()
|
||||
? (getStateEvent(rootRoom, StateEvent.GameCultStewardships)?.getContent() as
|
||||
| Stewardships
|
||||
| undefined)
|
||||
: undefined;
|
||||
},
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
|
|
@ -98,7 +104,7 @@ export const useEstate = (rootId: string): Estate => {
|
|||
});
|
||||
return buildEstate({
|
||||
rootId,
|
||||
hierarchy: Array.from(rooms.values()),
|
||||
hierarchy: Array.from(rooms.values()) as EstateHierarchyRoom[],
|
||||
stewardships,
|
||||
membership,
|
||||
directRoomIds: Array.from(mDirects).filter((id) => joined.includes(id)),
|
||||
|
|
|
|||
Loading…
Reference in a new issue