Move Call link remove from call into ContactModal and Show menu icon in call participant list

This commit is contained in:
ayumi-signal
2026-03-04 10:26:35 -08:00
committed by GitHub
parent a149309ae6
commit 51c45f7178
13 changed files with 145 additions and 113 deletions

View File

@@ -426,8 +426,6 @@ export const SmartCallManager = memo(function SmartCallManager() {
acceptCall,
declineCall,
openSystemPreferencesAction,
removeClient,
blockClient,
cancelPresenting,
sendGroupCallRaiseHand,
sendGroupCallReaction,
@@ -462,7 +460,6 @@ export const SmartCallManager = memo(function SmartCallManager() {
approveUser={approveUser}
availableCameras={availableCameras}
batchUserAction={batchUserAction}
blockClient={blockClient}
bounceAppIconStart={bounceAppIconStart}
bounceAppIconStop={bounceAppIconStop}
callLink={callLink}
@@ -486,7 +483,6 @@ export const SmartCallManager = memo(function SmartCallManager() {
openSystemPreferencesAction={openSystemPreferencesAction}
pauseVoiceNotePlayer={pauseVoiceNotePlayer}
playRingtone={playRingtone}
removeClient={removeClient}
renderDeviceSelection={renderDeviceSelection}
renderReactionPicker={renderReactionPicker}
ringingCall={ringingCall}

View File

@@ -14,6 +14,7 @@ import {
import { getHasStoriesSelector } from '../selectors/stories2.dom.js';
import {
getActiveCallState,
getCallLinkSelector,
isInFullScreenCall as getIsInFullScreenCall,
getParticipantInActiveCall,
} from '../selectors/calling.std.js';
@@ -23,6 +24,8 @@ import { useGlobalModalActions } from '../ducks/globalModals.preload.js';
import { useCallingActions } from '../ducks/calling.preload.js';
import { getContactModalState } from '../selectors/globalModals.std.js';
import { strictAssert } from '../../util/assert.std.js';
import { CallMode } from '../../types/CallDisposition.std.js';
import { isCallLinkAdmin } from '../../types/CallLink.std.js';
export const SmartContactModal = memo(function SmartContactModal() {
const i18n = useSelector(getIntl);
@@ -39,6 +42,15 @@ export const SmartContactModal = memo(function SmartContactModal() {
const isRemoteMuteVisible = Boolean(callParticipant);
const isMuted = !callParticipant?.hasRemoteAudio;
const callLinkSelector = useSelector(getCallLinkSelector);
let isRemoveFromCallVisible = false;
if (activeCallState?.callMode === CallMode.Adhoc) {
const callLink = callLinkSelector(activeCallState.conversationId);
if (callParticipant && callLink && isCallLinkAdmin(callLink)) {
isRemoveFromCallVisible = true;
}
}
const badgesSelector = useSelector(getBadgesSelector);
const areWeASubscriber = useSelector(getAreWeASubscriber);
@@ -83,9 +95,11 @@ export const SmartContactModal = memo(function SmartContactModal() {
toggleSafetyNumberModal,
} = useGlobalModalActions();
const {
blockClient: blockClientFromCall,
onOutgoingVideoCallInConversation,
onOutgoingAudioCallInConversation,
togglePip,
removeClient: removeClientFromCall,
sendRemoteMute,
} = useCallingActions();
@@ -99,6 +113,7 @@ export const SmartContactModal = memo(function SmartContactModal() {
areWeAdmin={areWeAdmin}
areWeASubscriber={areWeASubscriber}
badges={badges}
blockClientFromCall={blockClientFromCall}
blockConversation={blockConversation}
contact={contact}
contactLabelEmoji={contactLabelEmoji}
@@ -114,10 +129,12 @@ export const SmartContactModal = memo(function SmartContactModal() {
isMember={isMember}
isMuted={isMuted}
isRemoteMuteVisible={isRemoteMuteVisible}
isRemoveFromCallVisible={isRemoveFromCallVisible}
activeCallDemuxId={activeCallDemuxId}
onOpenEditNicknameAndNoteModal={handleOpenEditNicknameAndNoteModal}
onOutgoingAudioCallInConversation={onOutgoingAudioCallInConversation}
onOutgoingVideoCallInConversation={onOutgoingVideoCallInConversation}
removeClientFromCall={removeClientFromCall}
removeMemberFromGroup={removeMemberFromGroup}
sendRemoteMute={sendRemoteMute}
showConversation={showConversation}