Skip to content

Commit 2582aff

Browse files
committed
Added options and featureflags
1 parent b2dbc87 commit 2582aff

File tree

8 files changed

+136
-42
lines changed

8 files changed

+136
-42
lines changed

ExampleApp/android/.project

-17
This file was deleted.

ExampleApp/android/.settings/org.eclipse.buildship.core.prefs

-13
This file was deleted.

README.md

+31-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,37 @@ const VideoCall = () => {
4949
setTimeout(() => {
5050
const url = 'https://meet.jit.si/deneme'; // can also be only room name and will connect to jitsi meet servers
5151
const userInfo = { displayName: 'User', email: '[email protected]', avatar: 'https:/gravatar.com/avatar/abc123' };
52-
JitsiMeet.call(url, userInfo);
52+
const options = {
53+
audioMuted: false,
54+
audioOnly: false,
55+
videoMuted: false,
56+
subject: "your subject",
57+
token: "your token"
58+
}
59+
const meetFeatureFlags = {
60+
addPeopleEnabled: true,
61+
calendarEnabled: true,
62+
callIntegrationEnabled: true,
63+
chatEnabled: true,
64+
closeCaptionsEnabled: true,
65+
inviteEnabled: true,
66+
androidScreenSharingEnabled: true,
67+
liveStreamingEnabled: true,
68+
meetingNameEnabled: true,
69+
meetingPasswordEnabled: true,
70+
pipEnabled: true,
71+
kickOutEnabled: true,
72+
conferenceTimerEnabled: true,
73+
videoShareButtonEnabled: true,
74+
recordingEnabled: true,
75+
reactionsEnabled: true,
76+
raiseHandEnabled: true,
77+
tileViewEnabled: true,
78+
toolboxAlwaysVisible: false,
79+
toolboxEnabled: true,
80+
welcomePageEnabled: false,
81+
}
82+
JitsiMeet.call(url, userInfo, options. meetFeatureFlags);
5383
/* You can also use JitsiMeet.audioCall(url) for audio only call */
5484
/* You can programmatically end the call with JitsiMeet.endCall() */
5585
}, 1000);

android/src/main/java/com/reactnativejitsimeet/RNJitsiMeetModule.java

+30-5
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public void initialize() {
3232
}
3333

3434
@ReactMethod
35-
public void call(String url, ReadableMap userInfo) {
35+
public void call(String url, ReadableMap userInfo, ReadableMap meetOptions, ReadableMap meetFeatureFlags) {
3636
UiThreadUtil.runOnUiThread(new Runnable() {
3737
@Override
3838
public void run() {
@@ -54,10 +54,35 @@ public void run() {
5454
}
5555
}
5656
RNJitsiMeetConferenceOptions options = new RNJitsiMeetConferenceOptions.Builder()
57-
.setRoom(url)
58-
.setAudioOnly(false)
59-
.setUserInfo(_userInfo)
60-
.build();
57+
.setRoom(url)
58+
.setToken(meetOptions.hasKey("token") ? meetOptions.getString("token") : "")
59+
.setSubject(meetOptions.hasKey("subject") ? meetOptions.getString("subject") : "")
60+
.setAudioMuted(meetOptions.hasKey("audioMuted") ? meetOptions.getBoolean("audioMuted") : false)
61+
.setAudioOnly(meetOptions.hasKey("audioOnly") ? meetOptions.getBoolean("audioOnly") : false)
62+
.setVideoMuted(meetOptions.hasKey("videoMuted") ? meetOptions.getBoolean("videoMuted") : false)
63+
.setUserInfo(_userInfo)
64+
.setFeatureFlag("add-people.enabled", meetFeatureFlags.hasKey("addPeopleEnabled") ? meetFeatureFlags.getBoolean("addPeopleEnabled") : true)
65+
.setFeatureFlag("calendar.enabled", meetFeatureFlags.hasKey("calendarEnabled") ?meetFeatureFlags.getBoolean("calendarEnabled") : true)
66+
.setFeatureFlag("call-integration.enabled", meetFeatureFlags.hasKey("callIntegrationEnabled") ?meetFeatureFlags.getBoolean("callIntegrationEnabled") : true)
67+
.setFeatureFlag("chat.enabled", meetFeatureFlags.hasKey("chatEnabled") ?meetFeatureFlags.getBoolean("chatEnabled") : true)
68+
.setFeatureFlag("close-captions.enabled", meetFeatureFlags.hasKey("closeCaptionsEnabled") ?meetFeatureFlags.getBoolean("closeCaptionsEnabled") : true)
69+
.setFeatureFlag("invite.enabled", meetFeatureFlags.hasKey("inviteEnabled") ?meetFeatureFlags.getBoolean("inviteEnabled") : true)
70+
.setFeatureFlag("android.screensharing.enabled", meetFeatureFlags.hasKey("androidScreenSharingEnabled") ?meetFeatureFlags.getBoolean("androidScreenSharingEnabled") : true)
71+
.setFeatureFlag("live-streaming.enabled", meetFeatureFlags.hasKey("liveStreamingEnabled") ?meetFeatureFlags.getBoolean("liveStreamingEnabled") : true)
72+
.setFeatureFlag("meeting-name.enabled", meetFeatureFlags.hasKey("meetingNameEnabled") ?meetFeatureFlags.getBoolean("meetingNameEnabled") : true)
73+
.setFeatureFlag("meeting-password.enabled", meetFeatureFlags.hasKey("meetingPasswordEnabled") ?meetFeatureFlags.getBoolean("meetingPasswordEnabled") : true)
74+
.setFeatureFlag("pip.enabled", meetFeatureFlags.hasKey("pipEnabled") ?meetFeatureFlags.getBoolean("pipEnabled") : true)
75+
.setFeatureFlag("kick-out.enabled", meetFeatureFlags.hasKey("kickOutEnabled") ?meetFeatureFlags.getBoolean("kickOutEnabled") : true)
76+
.setFeatureFlag("conference-timer.enabled", meetFeatureFlags.hasKey("conferenceTimerEnabled") ?meetFeatureFlags.getBoolean("conferenceTimerEnabled") : true)
77+
.setFeatureFlag("video-share.enabled", meetFeatureFlags.hasKey("videoShareButtonEnabled") ?meetFeatureFlags.getBoolean("videoShareButtonEnabled") : true)
78+
.setFeatureFlag("recording.enabled", meetFeatureFlags.hasKey("recordingEnabled") ?meetFeatureFlags.getBoolean("recordingEnabled") : true)
79+
.setFeatureFlag("reactions.enabled", meetFeatureFlags.hasKey("reactionsEnabled") ?meetFeatureFlags.getBoolean("reactionsEnabled") : true)
80+
.setFeatureFlag("raise-hand.enabled", meetFeatureFlags.hasKey("raiseHandEnabled") ?meetFeatureFlags.getBoolean("raiseHandEnabled") : true)
81+
.setFeatureFlag("tile-view.enabled", meetFeatureFlags.hasKey("tileViewEnabled") ?meetFeatureFlags.getBoolean("tileViewEnabled") : true)
82+
.setFeatureFlag("toolbox.alwaysVisible", meetFeatureFlags.hasKey("toolboxAlwaysVisible") ?meetFeatureFlags.getBoolean("toolboxAlwaysVisible") : false)
83+
.setFeatureFlag("toolbox.enabled", meetFeatureFlags.hasKey("toolboxEnabled") ?meetFeatureFlags.getBoolean("toolboxEnabled") : true)
84+
.setFeatureFlag("welcomepage.enabled", meetFeatureFlags.hasKey("welcomePageEnabled") ?meetFeatureFlags.getBoolean("welcomePageEnabled") : false)
85+
.build();
6186
mJitsiMeetViewReference.getJitsiMeetView().join(options);
6287
}
6388
}

index.android.js

+8-2
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,20 @@ export const JitsiMeetView = requireNativeComponent('RNJitsiMeetView');
88
export const JitsiMeetModule = NativeModules.RNJitsiMeetModule
99
const call = JitsiMeetModule.call;
1010
const audioCall = JitsiMeetModule.audioCall;
11-
JitsiMeetModule.call = (url, userInfo) => {
11+
const endCall = JitsiMeetModule.endCall;
12+
JitsiMeetModule.call = (url, userInfo, meetOptions, meetFeatureFlags) => {
1213
userInfo = userInfo || {};
13-
call(url, userInfo);
14+
meetOptions = meetOptions || {};
15+
meetFeatureFlags = meetFeatureFlags || {};
16+
call(url, userInfo, meetOptions, meetFeatureFlags);
1417
}
1518
JitsiMeetModule.audioCall = (url, userInfo) => {
1619
userInfo = userInfo || {};
1720
audioCall(url, userInfo);
1821
}
22+
JitsiMeetModule.endCall = () => {
23+
endCall();
24+
}
1925
export default JitsiMeetModule;
2026

2127

index.ios.js

+8-2
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,20 @@ export const JitsiMeetView = requireNativeComponent('RNJitsiMeetView');
88
export const JitsiMeetModule = NativeModules.RNJitsiMeetView;
99
const call = JitsiMeetModule.call;
1010
const audioCall = JitsiMeetModule.audioCall;
11-
JitsiMeetModule.call = (url, userInfo) => {
11+
const endCall = JitsiMeetModule.endCall;
12+
JitsiMeetModule.call = (url, userInfo, meetOptions, meetFeatureFlags) => {
1213
userInfo = userInfo || {};
13-
call(url, userInfo);
14+
meetOptions = meetOptions || {};
15+
meetFeatureFlags = meetFeatureFlags || {};
16+
call(url, userInfo, meetOptions, meetFeatureFlags);
1417
}
1518
JitsiMeetModule.audioCall = (url, userInfo) => {
1619
userInfo = userInfo || {};
1720
audioCall(url, userInfo);
1821
}
22+
JitsiMeetModule.endCall = () => {
23+
endCall();
24+
}
1925
export default JitsiMeetModule;
2026

2127

ios/RNJitsiMeetViewManager.m

+58-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,12 @@ - (UIView *)view
2424
RCTLogInfo(@"Initialize is deprecated in v2");
2525
}
2626

27-
RCT_EXPORT_METHOD(call:(NSString *)urlString userInfo:(NSDictionary *)userInfo)
27+
RCT_EXPORT_METHOD(
28+
call:(NSString *)urlString
29+
userInfo:(NSDictionary *)userInfo
30+
meetOptions:(NSDictionary *)meetOptions
31+
meetFeatureFlags:(NSDictionary *)meetFeatureFlags
32+
)
2833
{
2934
RCTLogInfo(@"Load URL %@", urlString);
3035
JitsiMeetUserInfo * _userInfo = [[JitsiMeetUserInfo alloc] init];
@@ -43,6 +48,58 @@ - (UIView *)view
4348
dispatch_sync(dispatch_get_main_queue(), ^{
4449
JitsiMeetConferenceOptions *options = [JitsiMeetConferenceOptions fromBuilder:^(JitsiMeetConferenceOptionsBuilder *builder) {
4550
builder.room = urlString;
51+
if(meetOptions[@"token"] != NULL)
52+
builder.token = meetOptions[@"token"];
53+
if(meetOptions[@"subject"] != NULL)
54+
builder.subject = meetOptions[@"subject"];
55+
if(meetOptions[@"videoMuted"] != NULL)
56+
builder.videoMuted = [[meetOptions objectForKey:@"videoMuted"] boolValue];
57+
if(meetOptions[@"audioOnly"] != NULL)
58+
builder.audioOnly = [[meetOptions objectForKey:@"audioOnly"] boolValue];
59+
if(meetOptions[@"audioMuted"] != NULL)
60+
builder.audioMuted = [[meetOptions objectForKey:@"audioMuted"] boolValue];
61+
62+
if(meetFeatureFlags[@"addPeopleEnabled"] != NULL)
63+
[builder setFeatureFlag:@"add-people.enabled" withBoolean:[[meetFeatureFlags objectForKey:@"addPeopleEnabled"] boolValue]];
64+
if(meetFeatureFlags[@"calendarEnabled"] != NULL)
65+
[builder setFeatureFlag:@"calendar.enabled" withBoolean:[[meetFeatureFlags objectForKey:@"calendarEnabled"] boolValue]];
66+
if(meetFeatureFlags[@"callIntegrationEnabled"] != NULL)
67+
[builder setFeatureFlag:@"call-integration.enabled" withBoolean:[[meetFeatureFlags objectForKey:@"callIntegrationEnabled"] boolValue]];
68+
if(meetFeatureFlags[@"chatEnabled"] != NULL)
69+
[builder setFeatureFlag:@"chat.enabled" withBoolean:[[meetFeatureFlags objectForKey:@"chatEnabled"] boolValue]];
70+
if(meetFeatureFlags[@"closeCaptionsEnabled"] != NULL)
71+
[builder setFeatureFlag:@"close-captions.enabled" withBoolean:[[meetFeatureFlags objectForKey:@"closeCaptionsEnabled"] boolValue]];
72+
if(meetFeatureFlags[@"inviteEnabled"] != NULL)
73+
[builder setFeatureFlag:@"invite.enabled" withBoolean:[[meetFeatureFlags objectForKey:@"inviteEnabled"] boolValue]];
74+
if(meetFeatureFlags[@"iosRecordingEnabled"] != NULL)
75+
[builder setFeatureFlag:@"ios-recording.enabled" withBoolean:[[meetFeatureFlags objectForKey:@"iosRecordingEnabled"] boolValue]];
76+
if(meetFeatureFlags[@"liveStreamingEnabled"] != NULL)
77+
[builder setFeatureFlag:@"live-streaming.enabled" withBoolean:[[meetFeatureFlags objectForKey:@"liveStreamingEnabled"] boolValue]];
78+
if(meetFeatureFlags[@"meetingNameEnabled"] != NULL)
79+
[builder setFeatureFlag:@"meeting-name.enabled" withBoolean:[[meetFeatureFlags objectForKey:@"meetingNameEnabled"] boolValue]];
80+
if(meetFeatureFlags[@"toolboxEnabled"] != NULL)
81+
[builder setFeatureFlag:@"toolbox.enabled" withBoolean:[[meetFeatureFlags objectForKey:@"toolboxEnabled"] boolValue]];
82+
if(meetFeatureFlags[@"toolboxAlwaysVisible"] != NULL)
83+
[builder setFeatureFlag:@"toolbox.alwaysVisible" withBoolean:[[meetFeatureFlags objectForKey:@"toolboxAlwaysVisible"] boolValue]];
84+
if(meetFeatureFlags[@"raiseHandEnabled"] != NULL)
85+
[builder setFeatureFlag:@"raise-hand.enabled" withBoolean:[[meetFeatureFlags objectForKey:@"raiseHandEnabled"] boolValue]];
86+
if(meetFeatureFlags[@"reactionsEnabled"] != NULL)
87+
[builder setFeatureFlag:@"reactions.enabled" withBoolean:[[meetFeatureFlags objectForKey:@"reactionsEnabled"] boolValue]];
88+
if(meetFeatureFlags[@"kickOutEnabled"] != NULL)
89+
[builder setFeatureFlag:@"kick-out.enabled" withBoolean:[[meetFeatureFlags objectForKey:@"kickOutEnabled"] boolValue]];
90+
if(meetFeatureFlags[@"conferenceTimerEnabled"] != NULL)
91+
[builder setFeatureFlag:@"conference-timer.enabled" withBoolean:[[meetFeatureFlags objectForKey:@"conferenceTimerEnabled"] boolValue]];
92+
if(meetFeatureFlags[@"meetingPasswordEnabled"] != NULL)
93+
[builder setFeatureFlag:@"video-share.enabled" withBoolean:[[meetFeatureFlags objectForKey:@"meetingPasswordEnabled"] boolValue]];
94+
if(meetFeatureFlags[@"meetingPasswordEnabled"] != NULL)
95+
[builder setFeatureFlag:@"meeting-password.enabled" withBoolean:[[meetFeatureFlags objectForKey:@"meetingPasswordEnabled"] boolValue]];
96+
if(meetFeatureFlags[@"pipEnabled"] != NULL)
97+
[builder setFeatureFlag:@"pip.enabled" withBoolean:[[meetFeatureFlags objectForKey:@"pipEnabled"] boolValue]];
98+
if(meetFeatureFlags[@"tileViewEnabled"] != NULL)
99+
[builder setFeatureFlag:@"tile-view.enabled" withBoolean:[[meetFeatureFlags objectForKey:@"tileViewEnabled"] boolValue]];
100+
if(meetFeatureFlags[@"welcomePageEnabled"] != NULL)
101+
[builder setFeatureFlag:@"welcomepage.enabled" withBoolean:[[meetFeatureFlags objectForKey:@"welcomePageEnabled"] boolValue]];
102+
46103
builder.userInfo = _userInfo;
47104
}];
48105
[jitsiMeetView join:options];

react-native-jitsi-meet.podspec

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,5 @@ Pod::Spec.new do |s|
1616
s.source_files = "ios/**/*.{h,m}"
1717

1818
s.dependency 'React'
19-
s.dependency 'JitsiMeetSDK', '3.7.0'
19+
s.dependency 'JitsiMeetSDK', '3.10.2'
2020
end

0 commit comments

Comments
 (0)