feat(android/ios): broadcast RECORDING_STATUS_CHANGED event

This commit is contained in:
Calin-Teodor
2025-03-10 13:58:04 +02:00
committed by Calinteodor
parent dc6ee21b5d
commit f967efa3e4
5 changed files with 59 additions and 2 deletions

View File

@@ -92,7 +92,8 @@ public class BroadcastEvent {
READY_TO_CLOSE("org.jitsi.meet.READY_TO_CLOSE"),
TRANSCRIPTION_CHUNK_RECEIVED("org.jitsi.meet.TRANSCRIPTION_CHUNK_RECEIVED"),
CUSTOM_BUTTON_PRESSED("org.jitsi.meet.CUSTOM_BUTTON_PRESSED"),
CONFERENCE_UNIQUE_ID_SET("org.jitsi.meet.CONFERENCE_UNIQUE_ID_SET");
CONFERENCE_UNIQUE_ID_SET("org.jitsi.meet.CONFERENCE_UNIQUE_ID_SET"),
RECORDING_STATUS_CHANGED("org.jitsi.meet.RECORDING_STATUS_CHANGED");
private static final String CONFERENCE_BLURRED_NAME = "CONFERENCE_BLURRED";
private static final String CONFERENCE_FOCUSED_NAME = "CONFERENCE_FOCUSED";
@@ -112,6 +113,8 @@ public class BroadcastEvent {
private static final String TRANSCRIPTION_CHUNK_RECEIVED_NAME = "TRANSCRIPTION_CHUNK_RECEIVED";
private static final String CUSTOM_BUTTON_PRESSED_NAME = "CUSTOM_BUTTON_PRESSED";
private static final String CONFERENCE_UNIQUE_ID_SET_NAME = "CONFERENCE_UNIQUE_ID_SET";
private static final String RECORDING_STATUS_CHANGED_NAME = "RECORDING_STATUS_CHANGED";
private final String action;
Type(String action) {
@@ -169,6 +172,8 @@ public class BroadcastEvent {
return CUSTOM_BUTTON_PRESSED;
case CONFERENCE_UNIQUE_ID_SET_NAME:
return CONFERENCE_UNIQUE_ID_SET;
case RECORDING_STATUS_CHANGED_NAME:
return RECORDING_STATUS_CHANGED;
}
return null;

View File

@@ -279,6 +279,10 @@ public class JitsiMeetActivity extends AppCompatActivity
// JitsiMeetLogger.i("Conference unique id set: " + extraData);
// }
// protected void onRecordingStatusChanged(HashMap<String, Object> extraData) {
// JitsiMeetLogger.i("Recording status changed: " + extraData);
// }
// Activity lifecycle methods
//
@@ -371,6 +375,9 @@ public class JitsiMeetActivity extends AppCompatActivity
// case CONFERENCE_UNIQUE_ID_SET:
// onConferenceUniqueIdSet(event.getData());
// break;
// case RECORDING_STATUS_CHANGED:
// onRecordingStatusChanged(event.getData());
// break;
}
}
}

View File

@@ -106,6 +106,10 @@
[self _onJitsiMeetViewDelegateEvent:@"READY_TO_CLOSE" withData:data];
}
// - (void)recordingStatusChanged:(NSDictionary *)data {
// [self _onJitsiMeetViewDelegateEvent:@"RECORDING_STATUS_CHANGED" withData:data];
// }
// - (void)transcriptionChunkReceived:(NSDictionary *)data {
// [self _onJitsiMeetViewDelegateEvent:@"TRANSCRIPTION_CHUNK_RECEIVED" withData:data];
// }

View File

@@ -137,4 +137,11 @@
*/
- (void)conferenceUniqueIdSet:(NSDictionary *)data;
/**
* Called when the recording status has changed.
*
* The `data` dictionary contains a `sessionData` key.
*/
- (void)recordingStatusChanged:(NSDictionary *)data;
@end

View File

@@ -56,6 +56,7 @@ import { closeChat, openChat, sendMessage, setPrivateMessageRecipient } from '..
import { isEnabled as isDropboxEnabled } from '../../dropbox/functions.native';
import { hideNotification, showNotification } from '../../notifications/actions';
import { NOTIFICATION_TIMEOUT_TYPE, NOTIFICATION_TYPE } from '../../notifications/constants';
import { RECORDING_SESSION_UPDATED } from '../../recording/actionTypes';
import { RECORDING_METADATA_ID, RECORDING_TYPES } from '../../recording/constants';
import { getActiveSession } from '../../recording/functions';
import { setRequestingSubtitles } from '../../subtitles/actions.any';
@@ -104,6 +105,11 @@ const SCREEN_SHARE_TOGGLED = 'SCREEN_SHARE_TOGGLED';
*/
const PARTICIPANTS_INFO_RETRIEVED = 'PARTICIPANTS_INFO_RETRIEVED';
/**
* Event which will be emitted on the native side to indicate the recording status has changed.
*/
const RECORDING_STATUS_CHANGED = 'RECORDING_STATUS_CHANGED';
const externalAPIEnabled = isExternalAPIAvailable();
let eventEmitter: any;
@@ -211,7 +217,7 @@ externalAPIEnabled && MiddlewareRegistry.register(store => next => action => {
sendEvent(
store,
CUSTOM_BUTTON_PRESSED,
{
/* data */ {
id,
text
});
@@ -279,6 +285,34 @@ externalAPIEnabled && MiddlewareRegistry.register(store => next => action => {
sendEvent(store, type, /* data */ {});
break;
case RECORDING_SESSION_UPDATED: {
const {
error,
id,
initiator,
liveStreamViewURL,
mode,
status,
terminator,
timestamp
} = action.sessionData;
sendEvent(
store,
RECORDING_STATUS_CHANGED,
/* data */ {
error,
id,
initiator,
liveStreamViewURL,
mode,
status,
terminator,
timestamp
});
break;
}
case SET_ROOM:
_maybeTriggerEarlyConferenceWillJoin(store, action);
break;