Merge pull request #28538 from element-hq/t3chguy/fix/20721

This commit is contained in:
Michael Telatynski
2024-12-02 11:23:18 +00:00
committed by GitHub
24 changed files with 212 additions and 89 deletions

View File

@@ -304,15 +304,13 @@ export default class RightPanelStore extends ReadyWatchingStore {
logger.warn("removed card from right panel because of missing threadHeadEvent in card state");
}
return !!card.state?.threadHeadEvent;
case RightPanelPhases.RoomMemberInfo:
case RightPanelPhases.SpaceMemberInfo:
case RightPanelPhases.MemberInfo:
case RightPanelPhases.EncryptionPanel:
if (!card.state?.member) {
logger.warn("removed card from right panel because of missing member in card state");
}
return !!card.state?.member;
case RightPanelPhases.Room3pidMemberInfo:
case RightPanelPhases.Space3pidMemberInfo:
case RightPanelPhases.ThreePidMemberInfo:
if (!card.state?.memberInfoEvent) {
logger.warn("removed card from right panel because of missing memberInfoEvent in card state");
}
@@ -327,7 +325,7 @@ export default class RightPanelStore extends ReadyWatchingStore {
}
private getVerificationRedirect(card: IRightPanelCard): IRightPanelCard | null {
if (card.phase === RightPanelPhases.RoomMemberInfo && card.state) {
if (card.phase === RightPanelPhases.MemberInfo && card.state) {
// RightPanelPhases.RoomMemberInfo -> needs to be changed to RightPanelPhases.EncryptionPanel if there is a pending verification request
const { member } = card.state;
const pendingRequest = member
@@ -385,8 +383,7 @@ export default class RightPanelStore extends ReadyWatchingStore {
if (panel?.history) {
panel.history = panel.history.filter(
(card: IRightPanelCard) =>
card.phase != RightPanelPhases.RoomMemberInfo &&
card.phase != RightPanelPhases.Room3pidMemberInfo,
card.phase != RightPanelPhases.MemberInfo && card.phase != RightPanelPhases.ThreePidMemberInfo,
);
}
}

View File

@@ -16,7 +16,6 @@ export interface IRightPanelCardState {
verificationRequest?: VerificationRequest;
verificationRequestPromise?: Promise<VerificationRequest>;
widgetId?: string;
spaceId?: string;
// Room3pidMemberInfo, Space3pidMemberInfo,
memberInfoEvent?: MatrixEvent;
// threads
@@ -32,7 +31,6 @@ export interface IRightPanelCardStateStored {
memberId?: string;
// we do not store the things associated with verification
widgetId?: string;
spaceId?: string;
// 3pidMemberInfo
memberInfoEventId?: string;
// threads
@@ -80,7 +78,6 @@ export function convertCardToStore(panelState: IRightPanelCard): IRightPanelCard
const state = panelState.state ?? {};
const stateStored: IRightPanelCardStateStored = {
widgetId: state.widgetId,
spaceId: state.spaceId,
isInitialEventHighlighted: state.isInitialEventHighlighted,
initialEventScrollIntoView: state.initialEventScrollIntoView,
threadHeadEventId: !!state?.threadHeadEvent?.getId() ? state.threadHeadEvent.getId() : undefined,
@@ -97,7 +94,6 @@ function convertStoreToCard(panelStateStore: IRightPanelCardStored, room: Room):
const stateStored = panelStateStore.state ?? {};
const state: IRightPanelCardState = {
widgetId: stateStored.widgetId,
spaceId: stateStored.spaceId,
isInitialEventHighlighted: stateStored.isInitialEventHighlighted,
initialEventScrollIntoView: stateStored.initialEventScrollIntoView,
threadHeadEvent: !!stateStored?.threadHeadEventId

View File

@@ -10,11 +10,14 @@ import { _t } from "../../languageHandler";
// These are in their own file because of circular imports being a problem.
export enum RightPanelPhases {
// Room & Space stuff
MemberList = "MemberList",
MemberInfo = "MemberInfo",
ThreePidMemberInfo = "ThreePidMemberInfo",
// Room stuff
RoomMemberList = "RoomMemberList",
FilePanel = "FilePanel",
NotificationPanel = "NotificationPanel",
RoomMemberInfo = "RoomMemberInfo",
EncryptionPanel = "EncryptionPanel",
RoomSummary = "RoomSummary",
Widget = "Widget",
@@ -22,13 +25,6 @@ export enum RightPanelPhases {
Timeline = "Timeline",
Extensions = "Extensions",
Room3pidMemberInfo = "Room3pidMemberInfo",
// Space stuff
SpaceMemberList = "SpaceMemberList",
SpaceMemberInfo = "SpaceMemberInfo",
Space3pidMemberInfo = "Space3pidMemberInfo",
// Thread stuff
ThreadView = "ThreadView",
ThreadPanel = "ThreadPanel",
@@ -42,7 +38,7 @@ export function backLabelForPhase(phase: RightPanelPhases | null): string | null
return _t("chat_card_back_action_label");
case RightPanelPhases.RoomSummary:
return _t("room_summary_card_back_action_label");
case RightPanelPhases.RoomMemberList:
case RightPanelPhases.MemberList:
return _t("member_list_back_action_label");
case RightPanelPhases.ThreadView:
return _t("thread_view_back_action_label");

View File

@@ -20,10 +20,10 @@ import { RightPanelPhases } from "../RightPanelStorePhases";
export const onView3pidInvite = (payload: ActionPayload, rightPanelStore: RightPanelStore): void => {
if (payload.event) {
rightPanelStore.pushCard({
phase: RightPanelPhases.Room3pidMemberInfo,
phase: RightPanelPhases.ThreePidMemberInfo,
state: { memberInfoEvent: payload.event },
});
} else {
rightPanelStore.showOrHidePhase(RightPanelPhases.RoomMemberList);
rightPanelStore.showOrHidePhase(RightPanelPhases.MemberList);
}
};