Fix, currently the GridTile is broken.

This commit is contained in:
Half-Shot
2024-11-08 17:34:08 +00:00
parent dbad2b3902
commit c2ab6f45bc
5 changed files with 36 additions and 22 deletions

View File

@@ -83,7 +83,7 @@ test("Can raise hand", async () => {
expect(container).toMatchSnapshot(); expect(container).toMatchSnapshot();
}); });
test("Can lower hand", async () => { test.only("Can lower hand", async () => {
const user = userEvent.setup(); const user = userEvent.setup();
const room = new MockRoom(memberUserIdAlice); const room = new MockRoom(memberUserIdAlice);
const rtcSession = new MockRTCSession(room, membership); const rtcSession = new MockRTCSession(room, membership);

View File

@@ -223,7 +223,6 @@ export function ReactionToggleButton({
const { t } = useTranslation(); const { t } = useTranslation();
const { raisedHands, lowerHand, reactions } = useReactions(); const { raisedHands, lowerHand, reactions } = useReactions();
const [busy, setBusy] = useState(false); const [busy, setBusy] = useState(false);
const userId = client.getUserId()!;
const memberships = useMatrixRTCSessionMemberships(rtcSession); const memberships = useMatrixRTCSessionMemberships(rtcSession);
const [showReactionsMenu, setShowReactionsMenu] = useState(false); const [showReactionsMenu, setShowReactionsMenu] = useState(false);
const [errorText, setErrorText] = useState<string>(); const [errorText, setErrorText] = useState<string>();
@@ -238,6 +237,8 @@ export function ReactionToggleButton({
[memberships], [memberships],
)?.eventId; )?.eventId;
console.log(memberships);
useEffect(() => { useEffect(() => {
// Clear whenever the reactions menu state changes. // Clear whenever the reactions menu state changes.
setErrorText(undefined); setErrorText(undefined);

View File

@@ -112,9 +112,14 @@ const UserMediaTile = forwardRef<HTMLDivElement, UserMediaTileProps>(
</> </>
); );
const handRaised: Date | undefined = raisedHands[vm.member?.userId ?? ""]; console.log(vm.member);
console.log(vm.member?.events.member?.getId(), raisedHands, reactions);
const handRaised: Date | undefined =
raisedHands[vm.member?.events.member?.getId() ?? ""];
const currentReaction: ReactionOption | undefined = const currentReaction: ReactionOption | undefined =
reactions[vm.member?.userId ?? ""]; reactions[vm.member?.events.member?.getId() ?? ""];
const raisedHandOnClick = const raisedHandOnClick =
vm.local && handRaised ? (): void => void lowerHand() : undefined; vm.local && handRaised ? (): void => void lowerHand() : undefined;

View File

@@ -199,6 +199,8 @@ export const ReactionsProvider = ({
if (event.getType() === ElementCallReactionEventType) { if (event.getType() === ElementCallReactionEventType) {
const content: ECallReactionEventContent = event.getContent(); const content: ECallReactionEventContent = event.getContent();
console.log(latestMemberships, content);
const membershipEventId = content?.["m.relates_to"]?.event_id; const membershipEventId = content?.["m.relates_to"]?.event_id;
// Check to see if this reaction was made to a membership event (and the // Check to see if this reaction was made to a membership event (and the
// sender of the reaction matches the membership) // sender of the reaction matches the membership)
@@ -318,19 +320,22 @@ export const ReactionsProvider = ({
latestRaisedHands, latestRaisedHands,
]); ]);
const myMembershipEventId = useMemo( const myMembershipEventId = useMemo(() => {
() => console.log(
memberships.find( room.client.getUserId(),
(m) => room.client.getDeviceId(),
clientState?.state === "valid" && memberships,
m.sender === clientState.authenticated?.client.getUserId() && );
m.deviceId === clientState.authenticated?.client.getDeviceId(), return memberships.find(
), (m) =>
[memberships], m.sender === room.client.getUserId() &&
)?.eventId; m.deviceId === room.client.getDeviceId(),
);
}, [memberships, room])?.eventId;
const lowerHand = useCallback(async () => { const lowerHand = useCallback(async () => {
if (!myMembershipEventId || !raisedHands[myMembershipEventId]) { if (!myMembershipEventId || !raisedHands[myMembershipEventId]) {
logger.warn(`No membership event for us!`, myMembershipEventId);
return; return;
} }
const myReactionId = raisedHands[myMembershipEventId].reactionEventId; const myReactionId = raisedHands[myMembershipEventId].reactionEventId;

View File

@@ -41,6 +41,8 @@ export const TestReactionsWrapper = ({
); );
}; };
const OWN_DEVICE_ID = "OWN_DEVICE";
export class MockRTCSession extends EventEmitter { export class MockRTCSession extends EventEmitter {
public memberships: { public memberships: {
sender: string; sender: string;
@@ -54,12 +56,14 @@ export class MockRTCSession extends EventEmitter {
membership: Record<string, string>, membership: Record<string, string>,
) { ) {
super(); super();
this.memberships = Object.entries(membership).map(([eventId, sender]) => ({ this.memberships = Object.entries(membership).map(
sender, ([eventId, sender], index) => ({
eventId, sender,
deviceId: randomUUID(), eventId,
createdTs: (): Date => new Date(), deviceId: index === 0 ? OWN_DEVICE_ID : randomUUID(),
})); createdTs: (): Date => new Date(),
}),
);
} }
public testRemoveMember(userId: string): void { public testRemoveMember(userId: string): void {
@@ -121,7 +125,6 @@ export class MockRoom extends EventEmitter {
public constructor( public constructor(
private readonly ownUserId: string, private readonly ownUserId: string,
private readonly ownDeviceId: string,
private readonly existingRelations: MatrixEvent[] = [], private readonly existingRelations: MatrixEvent[] = [],
) { ) {
super(); super();
@@ -130,7 +133,7 @@ export class MockRoom extends EventEmitter {
public get client(): MatrixClient { public get client(): MatrixClient {
return { return {
getUserId: (): string => this.ownUserId, getUserId: (): string => this.ownUserId,
getDeviceId: (): string => this.ownDeviceId, getDeviceId: (): string => OWN_DEVICE_ID,
sendEvent: async ( sendEvent: async (
...props: Parameters<MatrixClient["sendEvent"]> ...props: Parameters<MatrixClient["sendEvent"]>
): ReturnType<MatrixClient["sendEvent"]> => { ): ReturnType<MatrixClient["sendEvent"]> => {