mirror of
https://github.com/cinnyapp/cinny.git
synced 2025-09-13 14:22:25 +03:00

* add active theme context * add chroma js library * add hook for accessible tag color * disable reply user color - temporary * render user color based on tag in room timeline * remove default tag icons * move accessible color function to plugins * render user power color in reply * increase username weight in timeline * add default color for member power level tag * show red slash in power color badge with no color * show power level color in room input reply * show power level username color in notifications * show power level color in notification reply * show power level color in message search * render power level color in room pin menu * add toggle for legacy username colors * drop over saturation from member default color * change border color of power color badge * show legacy username color in direct rooms
26 lines
995 B
TypeScript
26 lines
995 B
TypeScript
import React, { ReactNode } from 'react';
|
|
import { useParams } from 'react-router-dom';
|
|
import { useSelectedRoom } from '../../../hooks/router/useSelectedRoom';
|
|
import { IsDirectRoomProvider, RoomProvider } from '../../../hooks/useRoom';
|
|
import { useMatrixClient } from '../../../hooks/useMatrixClient';
|
|
import { JoinBeforeNavigate } from '../../../features/join-before-navigate';
|
|
import { useDirectRooms } from './useDirectRooms';
|
|
|
|
export function DirectRouteRoomProvider({ children }: { children: ReactNode }) {
|
|
const mx = useMatrixClient();
|
|
const rooms = useDirectRooms();
|
|
|
|
const { roomIdOrAlias, eventId } = useParams();
|
|
const roomId = useSelectedRoom();
|
|
const room = mx.getRoom(roomId);
|
|
|
|
if (!room || !rooms.includes(room.roomId)) {
|
|
return <JoinBeforeNavigate roomIdOrAlias={roomIdOrAlias!} eventId={eventId} />;
|
|
}
|
|
|
|
return (
|
|
<RoomProvider key={room.roomId} value={room}>
|
|
<IsDirectRoomProvider value>{children}</IsDirectRoomProvider>
|
|
</RoomProvider>
|
|
);
|
|
}
|