* support room via server params and eventId * change copy link to matrix.to links * display matrix.to links in messages as pill and stop generating url previews for them * improve editor mention to include viaServers and eventId * fix mention custom attributes * always try to open room in current space * jump to latest remove target eventId from url * add create direct search options to open/create dm with url
34 lines
1.2 KiB
TypeScript
34 lines
1.2 KiB
TypeScript
import React, { useEffect } from 'react';
|
|
import { useNavigate, useSearchParams } from 'react-router-dom';
|
|
import { WelcomePage } from '../WelcomePage';
|
|
import { useMatrixClient } from '../../../hooks/useMatrixClient';
|
|
import { getDirectCreateSearchParams } from '../../pathSearchParam';
|
|
import { getDirectPath, getDirectRoomPath } from '../../pathUtils';
|
|
import { getDMRoomFor } from '../../../utils/matrix';
|
|
import { openInviteUser } from '../../../../client/action/navigation';
|
|
import { useDirectRooms } from './useDirectRooms';
|
|
|
|
export function DirectCreate() {
|
|
const mx = useMatrixClient();
|
|
const navigate = useNavigate();
|
|
const [searchParams] = useSearchParams();
|
|
const { userId } = getDirectCreateSearchParams(searchParams);
|
|
const directs = useDirectRooms();
|
|
|
|
useEffect(() => {
|
|
if (userId) {
|
|
const room = getDMRoomFor(mx, userId);
|
|
const { roomId } = room ?? {};
|
|
if (roomId && directs.includes(roomId)) {
|
|
navigate(getDirectRoomPath(roomId), { replace: true });
|
|
} else {
|
|
openInviteUser(undefined, userId);
|
|
}
|
|
} else {
|
|
navigate(getDirectPath(), { replace: true });
|
|
}
|
|
}, [mx, navigate, directs, userId]);
|
|
|
|
return <WelcomePage />;
|
|
}
|