Compare commits
2 Commits
a3b3ca90c9
...
15a54eca4b
| Author | SHA1 | Date | |
|---|---|---|---|
| 15a54eca4b | |||
| 2e1e61c963 |
@@ -445,40 +445,6 @@ export function CallEmbedProvider({ children }: CallEmbedProviderProps) {
|
|||||||
// Track previous pipMode to only reset position when entering/exiting pip
|
// Track previous pipMode to only reset position when entering/exiting pip
|
||||||
const prevPipModeRef = React.useRef(false);
|
const prevPipModeRef = React.useRef(false);
|
||||||
|
|
||||||
// Debug: log whenever call embed visibility/mode changes
|
|
||||||
React.useEffect(() => {
|
|
||||||
console.log('[CallEmbed] state:', {
|
|
||||||
callEmbedRoomId: callEmbed?.roomId,
|
|
||||||
selectedRoom,
|
|
||||||
joined,
|
|
||||||
inCallRoom: !!inCallRoom,
|
|
||||||
callVisible: !!callVisible,
|
|
||||||
pipMode: !!pipMode,
|
|
||||||
chatOnlyView: !!chatOnlyView,
|
|
||||||
});
|
|
||||||
const el = callEmbedRef.current;
|
|
||||||
if (el) {
|
|
||||||
console.log('[CallEmbed] container styles:', {
|
|
||||||
top: el.style.top,
|
|
||||||
left: el.style.left,
|
|
||||||
width: el.style.width,
|
|
||||||
height: el.style.height,
|
|
||||||
visibility: el.style.visibility,
|
|
||||||
bottom: el.style.bottom,
|
|
||||||
right: el.style.right,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}, [
|
|
||||||
callEmbed?.roomId,
|
|
||||||
selectedRoom,
|
|
||||||
joined,
|
|
||||||
inCallRoom,
|
|
||||||
callVisible,
|
|
||||||
pipMode,
|
|
||||||
chatOnlyView,
|
|
||||||
callEmbedRef,
|
|
||||||
]);
|
|
||||||
|
|
||||||
React.useEffect(() => {
|
React.useEffect(() => {
|
||||||
const el = callEmbedRef.current;
|
const el = callEmbedRef.current;
|
||||||
if (!el) return;
|
if (!el) return;
|
||||||
|
|||||||
@@ -58,6 +58,14 @@ import { useRoomCreators } from '../../../hooks/useRoomCreators';
|
|||||||
import { getMouseEventCords } from '../../../utils/dom';
|
import { getMouseEventCords } from '../../../utils/dom';
|
||||||
import { useCrossSigningActive } from '../../../hooks/useCrossSigning';
|
import { useCrossSigningActive } from '../../../hooks/useCrossSigning';
|
||||||
import { MemberVerificationBadge } from '../../../components/MemberVerificationBadge';
|
import { MemberVerificationBadge } from '../../../components/MemberVerificationBadge';
|
||||||
|
import { useUserPresence } from '../../../hooks/useUserPresence';
|
||||||
|
import { PresenceBadge } from '../../../components/presence';
|
||||||
|
|
||||||
|
function MemberPresenceBadge({ userId }: { userId: string }) {
|
||||||
|
const presence = useUserPresence(userId);
|
||||||
|
if (!presence) return null;
|
||||||
|
return <PresenceBadge presence={presence.presence} status={presence.status} size="300" />;
|
||||||
|
}
|
||||||
|
|
||||||
const SEARCH_OPTIONS: UseAsyncSearchOptions = {
|
const SEARCH_OPTIONS: UseAsyncSearchOptions = {
|
||||||
limit: 1000,
|
limit: 1000,
|
||||||
@@ -333,6 +341,7 @@ export function Members({ requestClose }: MembersProps) {
|
|||||||
useAuthentication={useAuthentication}
|
useAuthentication={useAuthentication}
|
||||||
after={
|
after={
|
||||||
<>
|
<>
|
||||||
|
<MemberPresenceBadge userId={tagOrMember.userId} />
|
||||||
{showEncryption && (
|
{showEncryption && (
|
||||||
<MemberVerificationBadge userId={tagOrMember.userId} />
|
<MemberVerificationBadge userId={tagOrMember.userId} />
|
||||||
)}
|
)}
|
||||||
|
|||||||
@@ -61,6 +61,8 @@ import { useFlattenPowerTagMembers, useGetMemberPowerTag } from '../../hooks/use
|
|||||||
import { useRoomCreators } from '../../hooks/useRoomCreators';
|
import { useRoomCreators } from '../../hooks/useRoomCreators';
|
||||||
import { useCrossSigningActive } from '../../hooks/useCrossSigning';
|
import { useCrossSigningActive } from '../../hooks/useCrossSigning';
|
||||||
import { MemberVerificationBadge } from '../../components/MemberVerificationBadge';
|
import { MemberVerificationBadge } from '../../components/MemberVerificationBadge';
|
||||||
|
import { useUserPresence } from '../../hooks/useUserPresence';
|
||||||
|
import { PresenceBadge } from '../../components/presence';
|
||||||
|
|
||||||
type MemberDrawerHeaderProps = {
|
type MemberDrawerHeaderProps = {
|
||||||
room: Room;
|
room: Room;
|
||||||
@@ -131,6 +133,7 @@ function MemberItem({
|
|||||||
const avatarUrl = avatarMxcUrl
|
const avatarUrl = avatarMxcUrl
|
||||||
? mx.mxcUrlToHttp(avatarMxcUrl, 100, 100, 'crop', undefined, false, useAuthentication)
|
? mx.mxcUrlToHttp(avatarMxcUrl, 100, 100, 'crop', undefined, false, useAuthentication)
|
||||||
: undefined;
|
: undefined;
|
||||||
|
const presence = useUserPresence(member.userId);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<MenuItem
|
<MenuItem
|
||||||
@@ -152,6 +155,9 @@ function MemberItem({
|
|||||||
}
|
}
|
||||||
after={
|
after={
|
||||||
<>
|
<>
|
||||||
|
{presence && (
|
||||||
|
<PresenceBadge presence={presence.presence} status={presence.status} size="300" />
|
||||||
|
)}
|
||||||
{showEncryption && <MemberVerificationBadge userId={member.userId} />}
|
{showEncryption && <MemberVerificationBadge userId={member.userId} />}
|
||||||
{typing && (
|
{typing && (
|
||||||
<Badge size="300" variant="Secondary" fill="Soft" radii="Pill" outlined>
|
<Badge size="300" variant="Secondary" fill="Soft" radii="Pill" outlined>
|
||||||
|
|||||||
@@ -155,12 +155,6 @@ export const useCallEmbedPlacementSync = (containerViewRef: RefObject<HTMLDivEle
|
|||||||
if (!embedEl || !container) return;
|
if (!embedEl || !container) return;
|
||||||
|
|
||||||
const rect = container.getBoundingClientRect();
|
const rect = container.getBoundingClientRect();
|
||||||
console.log('[CallEmbed] syncCallEmbedPlacement:', {
|
|
||||||
top: rect.top,
|
|
||||||
left: rect.left,
|
|
||||||
width: rect.width,
|
|
||||||
height: rect.height,
|
|
||||||
});
|
|
||||||
embedEl.style.top = `${rect.top}px`;
|
embedEl.style.top = `${rect.top}px`;
|
||||||
embedEl.style.left = `${rect.left}px`;
|
embedEl.style.left = `${rect.left}px`;
|
||||||
embedEl.style.width = `${rect.width}px`;
|
embedEl.style.width = `${rect.width}px`;
|
||||||
|
|||||||
Reference in New Issue
Block a user