From b334a0af89282c2869f3da5f2e85ae9c8253bf60 Mon Sep 17 00:00:00 2001 From: Calin-Teodor Date: Thu, 13 Feb 2025 14:54:18 +0200 Subject: [PATCH] review remarks --- .../jitsi/meet/sdk/BroadcastIntentHelper.java | 23 ++++++-- ios/sdk/src/ExternalAPI.h | 9 ++- ios/sdk/src/ExternalAPI.m | 55 +++++++++++++------ .../mobile/external-api/middleware.ts | 22 +------- 4 files changed, 63 insertions(+), 46 deletions(-) diff --git a/android/sdk/src/main/java/org/jitsi/meet/sdk/BroadcastIntentHelper.java b/android/sdk/src/main/java/org/jitsi/meet/sdk/BroadcastIntentHelper.java index e0937fda7d65..6b7afe376ca6 100644 --- a/android/sdk/src/main/java/org/jitsi/meet/sdk/BroadcastIntentHelper.java +++ b/android/sdk/src/main/java/org/jitsi/meet/sdk/BroadcastIntentHelper.java @@ -97,21 +97,34 @@ public static Intent buildHideNotificationIntent(String uid) { return intent; } + public enum RecordingMode { + FILE("file"), + STREAM("stream"), + + private final String mode; + + RecordingMode(String mode) { + this.mode = mode; + } + + public String getMode() { + return mode; + } + } + public static Intent buildStartRecordingIntent( - String mode, + RecordingMode mode, String dropboxToken, - boolean onlySelf, boolean shouldShare, String rtmpStreamKey, String rtmpBroadcastID, String youtubeStreamKey, String youtubeBroadcastID, - String extraMetadata, + Bundle extraMetadata, boolean transcription) { Intent intent = new Intent(BroadcastAction.Type.START_RECORDING.getAction()); intent.putExtra("mode", mode); intent.putExtra("dropboxToken", dropboxToken); - intent.putExtra("onlySelf", onlySelf); intent.putExtra("shouldShare", shouldShare); intent.putExtra("rtmpStreamKey", rtmpStreamKey); intent.putExtra("rtmpBroadcastID", rtmpBroadcastID); @@ -123,7 +136,7 @@ public static Intent buildStartRecordingIntent( return intent; } - public static Intent buildStopRecordingIntent(String mode, boolean transcription) { + public static Intent buildStopRecordingIntent(RecordingMode mode, boolean transcription) { Intent intent = new Intent(BroadcastAction.Type.STOP_RECORDING.getAction()); intent.putExtra("mode", mode); intent.putExtra("transcription", transcription); diff --git a/ios/sdk/src/ExternalAPI.h b/ios/sdk/src/ExternalAPI.h index d3081c1f5f2f..8046dc23bd5a 100644 --- a/ios/sdk/src/ExternalAPI.h +++ b/ios/sdk/src/ExternalAPI.h @@ -20,6 +20,11 @@ static NSString * const sendEventNotificationName = @"org.jitsi.meet.SendEvent"; @interface ExternalAPI : RCTEventEmitter +typedef NS_ENUM(NSInteger, RecordingMode) { + FILE, + STREAM +}; + - (void)sendHangUp; - (void)sendSetAudioMuted:(BOOL)muted; - (void)sendEndpointTextMessage:(NSString*)message :(NSString*)to; @@ -33,7 +38,7 @@ static NSString * const sendEventNotificationName = @"org.jitsi.meet.SendEvent"; - (void)toggleCamera; - (void)showNotification:(NSString*)appearance :(NSString*)description :(NSString*)timeout :(NSString*)title :(NSString*)uid; - (void)hideNotification:(NSString*)uid; -- (void)startRecording: (NSString*)mode : (NSString*)dropboxToken : (BOOL)onlySelf : (BOOL)shouldShare : (NSString*)rtmpStreamKey : (NSString*)rtmpBroadcastID : (NSString*)youtubeStreamKey : (NSString*)youtubeBroadcastID : (NSString*)extraMetadata : (BOOL)transcription; -- (void)stopRecording: (NSString*)mode : (BOOL)transcription; +- (void)startRecording:(RecordingMode)mode :(NSString*)dropboxToken :(BOOL)shouldShare :(NSString*)rtmpStreamKey :(NSString*)rtmpBroadcastID :(NSString*)youtubeStreamKey :(NSString*)youtubeBroadcastID :(NSDictionary*)extraMetadata :(BOOL)transcription; +- (void)stopRecording:(RecordingMode)mode :(BOOL)transcription; @end diff --git a/ios/sdk/src/ExternalAPI.m b/ios/sdk/src/ExternalAPI.m index ed44e51a2c2b..823ce6c1243d 100644 --- a/ios/sdk/src/ExternalAPI.m +++ b/ios/sdk/src/ExternalAPI.m @@ -192,7 +192,7 @@ - (void)toggleCamera { [self sendEventWithName:toggleCameraAction body:nil]; } -- (void)showNotification:(NSString *)appearance :(NSString *)description :(NSString *)timeout :(NSString *)title :(NSString *)uid { +- (void)showNotification:(NSString*)appearance :(NSString*)description :(NSString*)timeout :(NSString*)title :(NSString*)uid { NSMutableDictionary *data = [[NSMutableDictionary alloc] init]; data[@"appearance"] = appearance; data[@"description"] = description; @@ -203,33 +203,52 @@ - (void)showNotification:(NSString *)appearance :(NSString *)description :(NSStr [self sendEventWithName:showNotificationAction body:data]; } -- (void)hideNotification:(NSString *)uid { +- (void)hideNotification:(NSString*)uid { NSMutableDictionary *data = [[NSMutableDictionary alloc] init]; data[@"uid"] = uid; [self sendEventWithName:hideNotificationAction body:data]; } -- (void)startRecording: (NSString*)mode : (NSString*)dropboxToken : (BOOL)onlySelf : (BOOL)shouldShare : (NSString*)rtmpStreamKey : (NSString*)rtmpBroadcastID : (NSString*)youtubeStreamKey : (NSString*)youtubeBroadcastID : (NSString*)extraMetadata : (BOOL)transcription { - NSMutableDictionary *data = [[NSMutableDictionary alloc] init]; - data[@"mode"] = mode; - data[@"dropboxToken"] = dropboxToken; - data[@"onlySelf"] = [NSNumber numberWithBool:onlySelf]; - data[@"shouldShare"] = [NSNumber numberWithBool:shouldShare]; - data[@"rtmpStreamKey"] = rtmpStreamKey; - data[@"rtmpBroadcastID"] = rtmpBroadcastID; - data[@"youtubeStreamKey"] = youtubeStreamKey; - data[@"youtubeBroadcastID"] = youtubeBroadcastID; - data[@"extraMetadata"] = extraMetadata; - data[@"transcription"] = [NSNumber numberWithBool:transcription]; +typedef NS_ENUM(NSInteger, RecordingMode) { + FILE, + STREAM +} + +static inline NSString *RecordingModeToString(RecordingMode mode) { + switch (mode) { + case FILE: + return @"file"; + case STREAM: + return @"stream"; + default: + return nil; + } +} + +- (void)startRecording: (RecordingMode)mode :(NSString*)dropboxToken :(BOOL)shouldShare :(NSString*)rtmpStreamKey :(NSString*)rtmpBroadcastID :(NSString*)youtubeStreamKey :(NSString*)youtubeBroadcastID :(NSDictionary*)extraMetadata :(BOOL)transcription { + NSString *modeString = RecordingModeToString(mode); + NSMutableDictionary *data = @{ + @"mode": modeString, + @"dropboxToken": dropboxToken, + @"shouldShare": @(shouldShare), + @"rtmpStreamKey": rtmpStreamKey, + @"rtmpBroadcastID": rtmpBroadcastID, + @"youtubeStreamKey": youtubeStreamKey, + @"youtubeBroadcastID": youtubeBroadcastID, + @"extraMetadata": extraMetadata, + @"transcription": @(transcription) + }; [self sendEventWithName:startRecordingAction body:data]; } -- (void)stopRecording: (NSString*)mode : (BOOL)transcription { - NSMutableDictionary *data = [[NSMutableDictionary alloc] init]; - data[@"mode"] = mode; - data[@"transcription"] = [NSNumber numberWithBool:transcription]; +- (void)stopRecording: (RecordingMode)mode :(BOOL)transcription { + NSString *modeString = RecordingModeToString(mode); + NSMutableDictionary *data = @{ + @"mode": modeString, + @"transcription": @(transcription) + }; [self sendEventWithName:stopRecordingAction body:data]; } diff --git a/react/features/mobile/external-api/middleware.ts b/react/features/mobile/external-api/middleware.ts index 546eb1dc4980..4f91b72a979b 100644 --- a/react/features/mobile/external-api/middleware.ts +++ b/react/features/mobile/external-api/middleware.ts @@ -53,9 +53,8 @@ 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 { startLocalVideoRecording, stopLocalVideoRecording } from '../../recording/actions.native'; import { RECORDING_METADATA_ID, RECORDING_TYPES } from '../../recording/constants'; -import { getActiveSession, supportsLocalRecording } from '../../recording/functions'; +import { getActiveSession } from '../../recording/functions'; import { toggleScreenshotCaptureSummary } from '../../screenshot-capture/actions'; import { isScreenshotCaptureEnabled } from '../../screenshot-capture/functions'; import { setRequestingSubtitles } from '../../subtitles/actions.any'; @@ -460,7 +459,6 @@ function _registerForNativeEvents(store: IStore) { { mode, dropboxToken, - onlySelf, shouldShare, rtmpStreamKey, rtmpBroadcastID, @@ -490,18 +488,6 @@ function _registerForNativeEvents(store: IStore) { return; } - if (mode === 'local') { - const { localRecording } = state['features/base/config']; - - if (!localRecording?.disable && supportsLocalRecording()) { - store.dispatch(startLocalVideoRecording(onlySelf)); - } else { - logger.error('Failed starting recording: local recording is either disabled or not supported'); - } - - return; - } - let recordingConfig; if (mode === JitsiRecordingConstants.mode.FILE) { @@ -579,12 +565,6 @@ function _registerForNativeEvents(store: IStore) { }); } - if (mode === 'local') { - store.dispatch(stopLocalVideoRecording()); - - return; - } - if (![ JitsiRecordingConstants.mode.FILE, JitsiRecordingConstants.mode.STREAM ].includes(mode)) { logger.error('Invalid recording mode provided!');