diff --git a/app/android/app/src/main/AndroidManifest.xml b/app/android/app/src/main/AndroidManifest.xml
index 5622eae3d..b4d960d9f 100644
--- a/app/android/app/src/main/AndroidManifest.xml
+++ b/app/android/app/src/main/AndroidManifest.xml
@@ -23,7 +23,7 @@
-
+
diff --git a/app/android/build.gradle b/app/android/build.gradle
index 24dd3fd4b..e90edc285 100644
--- a/app/android/build.gradle
+++ b/app/android/build.gradle
@@ -1,5 +1,5 @@
buildscript {
- ext.kotlin_version = '1.3.70'
+ ext.kotlin_version = '1.6.10'
repositories {
google()
diff --git a/app/ios/Podfile b/app/ios/Podfile
index 485789c5c..fcf1321de 100644
--- a/app/ios/Podfile
+++ b/app/ios/Podfile
@@ -1,5 +1,6 @@
-# Uncomment this line to define a global platform for your project
-platform :ios, '11.0'
+# We must set iOS to +12.0 because the Jitsi SDK requires it
+# (https://jitsi.github.io/handbook/docs/dev-guide/dev-guide-ios-sdk/).
+platform :ios, '12.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
@@ -41,13 +42,6 @@ post_install do |installer|
flutter_additional_ios_build_settings(target)
target.build_configurations.each do |config|
config.build_settings['ENABLE_BITCODE'] = 'NO'
- config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.0'
- config.build_settings['SWIFT_VERSION'] = '5.0'
-
- # Is needed to be able to run iOS on a simulator on a ARM system (e. g.
- # Apple Silicon), see
- # https://github.com/gunschu/jitsi_meet/issues/330#issuecomment-968076108
- config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
end
end
end
diff --git a/app/ios/Podfile.lock b/app/ios/Podfile.lock
index 08a6ac255..395f8d496 100644
--- a/app/ios/Podfile.lock
+++ b/app/ios/Podfile.lock
@@ -283,10 +283,10 @@ PODS:
- Flutter
- integration_test (0.0.1):
- Flutter
- - jitsi_meet (0.0.1):
+ - jitsi_meet_wrapper (0.0.1):
- Flutter
- - JitsiMeetSDK (= 3.3.0)
- - JitsiMeetSDK (3.3.0)
+ - JitsiMeetSDK (= 5.0.2)
+ - JitsiMeetSDK (5.0.2)
- libwebp (1.2.1):
- libwebp/demux (= 1.2.1)
- libwebp/mux (= 1.2.1)
@@ -375,7 +375,7 @@ DEPENDENCIES:
- google_sign_in (from `.symlinks/plugins/google_sign_in/ios`)
- image_picker (from `.symlinks/plugins/image_picker/ios`)
- integration_test (from `.symlinks/plugins/integration_test/ios`)
- - jitsi_meet (from `.symlinks/plugins/jitsi_meet/ios`)
+ - jitsi_meet_wrapper (from `.symlinks/plugins/jitsi_meet_wrapper/ios`)
- native_pdf_renderer (from `.symlinks/plugins/native_pdf_renderer/ios`)
- open_file (from `.symlinks/plugins/open_file/ios`)
- package_info (from `.symlinks/plugins/package_info/ios`)
@@ -482,8 +482,8 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/image_picker/ios"
integration_test:
:path: ".symlinks/plugins/integration_test/ios"
- jitsi_meet:
- :path: ".symlinks/plugins/jitsi_meet/ios"
+ jitsi_meet_wrapper:
+ :path: ".symlinks/plugins/jitsi_meet_wrapper/ios"
native_pdf_renderer:
:path: ".symlinks/plugins/native_pdf_renderer/ios"
open_file:
@@ -528,7 +528,7 @@ SPEC CHECKSUMS:
device_info: d7d233b645a32c40dfdc212de5cf646ca482f175
DKImagePickerController: b5eb7f7a388e4643264105d648d01f727110fc3d
DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179
- fast_rsa: 22fec92c481d28d1624f3be7829841658759ca52
+ fast_rsa: 0a752e284bd5641b063de5ba4e538a1b055e9ea8
file_picker: 3e6c3790de664ccf9b882732d9db5eaf6b8d4eb1
Firebase: 13d8d96499e2635428d5bf0ec675df21f95d9a95
firebase_analytics: 7a7528bb2abf4ca22cff7a57bbf909dcab73e13d
@@ -568,8 +568,8 @@ SPEC CHECKSUMS:
GTMSessionFetcher: 43748f93435c2aa068b1cbe39655aaf600652e91
image_picker: 9aa50e1d8cdacdbed739e925b7eea16d014367e6
integration_test: 7db6d89f336f671dcbc7563ee27a5b08f6f8aee1
- jitsi_meet: a797e5ffdbc1da9d424c52b1bfe3b2a803b05e31
- JitsiMeetSDK: 3b1d3757f2166b28cd03f907b47091db064302b3
+ jitsi_meet_wrapper: f78c5a212de5dfbadcd81ce559217f3661a26ce7
+ JitsiMeetSDK: edcac8e2b92ee0c7f3e75bd0aefefbe9faccfc93
libwebp: 98a37e597e40bfdb4c911fc98f2c53d0b12d05fc
Mantle: 4c0ed6ce47c96eccc4dc3bb071deb3def0e2c3be
MTBBarcodeScanner: f453b33c4b7dfe545d8c6484ed744d55671788cb
@@ -596,6 +596,6 @@ SPEC CHECKSUMS:
video_player: 9cc823b1d9da7e8427ee591e8438bfbcde500e6e
wakelock: d0fc7c864128eac40eba1617cb5264d9c940b46f
-PODFILE CHECKSUM: 043a42efaa3cc041591ac017700c2c66164135b5
+PODFILE CHECKSUM: f01f8cc3a09573f5dcc4b182c97727831629994f
COCOAPODS: 1.11.2
diff --git a/app/ios/Runner.xcodeproj/project.pbxproj b/app/ios/Runner.xcodeproj/project.pbxproj
index 2f23069f8..3625af679 100644
--- a/app/ios/Runner.xcodeproj/project.pbxproj
+++ b/app/ios/Runner.xcodeproj/project.pbxproj
@@ -369,20 +369,20 @@
"${BUILT_PRODUCTS_DIR}/flutter_native_timezone/flutter_native_timezone.framework",
"${BUILT_PRODUCTS_DIR}/image_picker/image_picker.framework",
"${BUILT_PRODUCTS_DIR}/integration_test/integration_test.framework",
- "${BUILT_PRODUCTS_DIR}/jitsi_meet/jitsi_meet.framework",
+ "${BUILT_PRODUCTS_DIR}/jitsi_meet_wrapper/jitsi_meet_wrapper.framework",
"${BUILT_PRODUCTS_DIR}/libwebp/libwebp.framework",
"${BUILT_PRODUCTS_DIR}/nanopb/nanopb.framework",
"${BUILT_PRODUCTS_DIR}/native_pdf_renderer/native_pdf_renderer.framework",
"${BUILT_PRODUCTS_DIR}/open_file/open_file.framework",
"${BUILT_PRODUCTS_DIR}/package_info/package_info.framework",
"${BUILT_PRODUCTS_DIR}/package_info_plus/package_info_plus.framework",
- "${BUILT_PRODUCTS_DIR}/path_provider/path_provider.framework",
+ "${BUILT_PRODUCTS_DIR}/path_provider_ios/path_provider_ios.framework",
"${BUILT_PRODUCTS_DIR}/purchases_flutter/purchases_flutter.framework",
"${BUILT_PRODUCTS_DIR}/share/share.framework",
- "${BUILT_PRODUCTS_DIR}/shared_preferences/shared_preferences.framework",
+ "${BUILT_PRODUCTS_DIR}/shared_preferences_ios/shared_preferences_ios.framework",
"${BUILT_PRODUCTS_DIR}/sign_in_with_apple/sign_in_with_apple.framework",
"${BUILT_PRODUCTS_DIR}/sqflite/sqflite.framework",
- "${BUILT_PRODUCTS_DIR}/url_launcher/url_launcher.framework",
+ "${BUILT_PRODUCTS_DIR}/url_launcher_ios/url_launcher_ios.framework",
"${BUILT_PRODUCTS_DIR}/video_player/video_player.framework",
"${BUILT_PRODUCTS_DIR}/wakelock/wakelock.framework",
"${PODS_XCFRAMEWORKS_BUILD_DIR}/JitsiMeetSDK/JitsiMeetSDK.framework/JitsiMeetSDK",
@@ -429,20 +429,20 @@
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_native_timezone.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/image_picker.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/integration_test.framework",
- "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/jitsi_meet.framework",
+ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/jitsi_meet_wrapper.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/libwebp.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/nanopb.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/native_pdf_renderer.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/open_file.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/package_info.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/package_info_plus.framework",
- "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/path_provider.framework",
+ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/path_provider_ios.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/purchases_flutter.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/share.framework",
- "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/shared_preferences.framework",
+ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/shared_preferences_ios.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sign_in_with_apple.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sqflite.framework",
- "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/url_launcher.framework",
+ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/url_launcher_ios.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/video_player.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/wakelock.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JitsiMeetSDK.framework",
@@ -570,7 +570,7 @@
"$(PROJECT_DIR)/Flutter",
);
INFOPLIST_FILE = Runner/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
@@ -659,7 +659,7 @@
"$(PROJECT_DIR)/Flutter",
);
INFOPLIST_FILE = Runner/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
@@ -745,7 +745,7 @@
"$(PROJECT_DIR)/Flutter",
);
INFOPLIST_FILE = Runner/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
@@ -829,7 +829,7 @@
"$(PROJECT_DIR)/Flutter",
);
INFOPLIST_FILE = Runner/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
@@ -972,7 +972,7 @@
"$(PROJECT_DIR)/Flutter",
);
INFOPLIST_FILE = Runner/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
@@ -1004,7 +1004,7 @@
"$(PROJECT_DIR)/Flutter",
);
INFOPLIST_FILE = Runner/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
diff --git a/app/lib/meeting/jitsi/jitsi_launcher.dart b/app/lib/meeting/jitsi/jitsi_launcher.dart
index f9e91f31d..b4e256de3 100644
--- a/app/lib/meeting/jitsi/jitsi_launcher.dart
+++ b/app/lib/meeting/jitsi/jitsi_launcher.dart
@@ -6,7 +6,7 @@
//
// SPDX-License-Identifier: EUPL-1.2
-import 'package:jitsi_meet/jitsi_meet.dart';
+import 'package:jitsi_meet_wrapper/jitsi_meet_wrapper.dart';
import 'package:meta/meta.dart';
import 'package:sharezone/meeting/jitsi/jitsi_auth.dart';
import 'package:url_launcher_extended/url_launcher_extended.dart';
@@ -48,46 +48,41 @@ class JitsiLauncher {
@required String meetingName,
@required String jwt,
}) async {
- // Mithilfe der [FeatureFlagEnum] können bestimmte Features in der Jitsi UI
- // deaktiviert werden. Diese Einschränken gelten jedoch nur für die Mobile
- // Jitsi SDK. Für die Browser-Version müssen die Einschränkungen über die
- // "interface_config.js" beim Server getroffen werden. Mehr Infos dazu in
- // unserem Wiki:
- // https://gitlab.com/codingbrain/sharezone/sharezone-app/-/wikis/Jitsi
- final featureFlags = {
- // Nutzer sollen nicht in dem Meeting die Option gezeigt bekommen, dass
- // man andere Nutzer einladen kann, da das Beitreten über die
- // Sharezone-App passieren soll.
- FeatureFlagEnum.ADD_PEOPLE_ENABLED: false,
- // Selber Kommentar wie bei [FeatureFlagEnum.ADD_PEOPLE_ENABLED]
- FeatureFlagEnum.INVITE_ENABLED: false,
- // "Call integration on Android (known as ConnectionService) has been
- // disabled on the official Jitsi Meet app because it creates a lot of
- // issues. You should disable it too to avoid these issues.""
- // Kopiert aus der Beschreibung des jitsi_meet package.
- FeatureFlagEnum.CALL_INTEGRATION_ENABLED: false,
- // Ändern der Server-Url soll Nutzern verboten sein, da dies nicht
- // vergesehen ist.
-
- // Feature Flag ist in jitsi_meet/feature_flag/feature_flag_enum.dart
- // vorhanden aber nicht in jitsi_meet platform_interface.
- // Siehe https://github.com/gunschu/jitsi_meet/issues/332
- // FeatureFlagEnum.SERVER_URL_CHANGE_ENABLED: false,
-
- // Aufnehmen von Jitsi-Meetings wird serverseitig nicht unterstützt und
- // würde sowieso mehrere rechtliche Fragen aufwerfen.
- FeatureFlagEnum.RECORDING_ENABLED: false,
- };
-
- final options = JitsiMeetingOptions(room: meetingId)
- ..serverURL = _serverUrl
- ..subject = meetingName
- ..audioOnly = false
- ..audioMuted = false
- ..videoMuted = true
- ..token = jwt
- ..featureFlags.addAll(featureFlags);
- await JitsiMeet.joinMeeting(options);
+ final options = JitsiMeetingOptions(
+ roomNameOrUrl: meetingId,
+ serverUrl: _serverUrl,
+ subject: meetingName,
+ isVideoMuted: true,
+ isAudioMuted: false,
+ isAudioOnly: false,
+ token: jwt,
+ // Mithilfe der [FeatureFlagEnum] können bestimmte Features in der Jitsi
+ // UI deaktiviert werden. Diese Einschränken gelten jedoch nur für die
+ // Mobile Jitsi SDK. Für die Browser-Version müssen die Einschränkungen
+ // über die "interface_config.js" beim Server getroffen werden. Mehr Infos
+ // dazu in unserem Wiki:
+ // https://gitlab.com/codingbrain/sharezone/sharezone-app/-/wikis/Jitsi
+ featureFlags: {
+ // Nutzer sollen nicht in dem Meeting die Option gezeigt bekommen, dass
+ // man andere Nutzer einladen kann, da das Beitreten über die
+ // Sharezone-App passieren soll.
+ FeatureFlag.isAddPeopleEnabled: false,
+ FeatureFlag.isInviteEnabled: false,
+ // Call-Integration wird von uns nicht unterstützt.
+ FeatureFlag.isCallIntegrationEnabled: false,
+ // Aufnehmen von Jitsi-Meetings wird serverseitig nicht unterstützt und
+ // würde sowieso mehrere rechtliche Fragen aufwerfen.
+ FeatureFlag.isRecordingEnabled: false,
+ // Ändern der Server-Url soll Nutzern verboten sein, da dies nicht
+ // vorgesehen ist.
+ FeatureFlag.isServerUrlChangeEnabled: false,
+ // Für Lehrkräfte würde es erschrecken, wenn Schüler plötzlich auf
+ // YouTube livestreamen. Aus diesem Grund sollte diese Option besser
+ // deaktiviert werden.
+ FeatureFlag.isLiveStreamingEnabled: false,
+ },
+ );
+ await JitsiMeetWrapper.joinMeeting(options: options);
}
/// Gibt die Meeting-URL zurück, die ein Browser aufruft, um sich mit dem
diff --git a/app/pubspec.lock b/app/pubspec.lock
index 253b1f303..fcc73308a 100644
--- a/app/pubspec.lock
+++ b/app/pubspec.lock
@@ -1032,27 +1032,20 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.3"
- jitsi_meet:
+ jitsi_meet_wrapper:
dependency: "direct main"
description:
- name: jitsi_meet
+ name: jitsi_meet_wrapper
url: "https://pub.dartlang.org"
source: hosted
- version: "4.0.0"
- jitsi_meet_platform_interface:
+ version: "0.0.4"
+ jitsi_meet_wrapper_platform_interface:
dependency: transitive
description:
- name: jitsi_meet_platform_interface
+ name: jitsi_meet_wrapper_platform_interface
url: "https://pub.dartlang.org"
source: hosted
- version: "2.0.0"
- jitsi_meet_web_plugin:
- dependency: transitive
- description:
- name: jitsi_meet_web_plugin
- url: "https://pub.dartlang.org"
- source: hosted
- version: "2.0.0"
+ version: "0.0.2"
js:
dependency: transitive
description:
diff --git a/app/pubspec.yaml b/app/pubspec.yaml
index 0cc570186..a4be671bf 100644
--- a/app/pubspec.yaml
+++ b/app/pubspec.yaml
@@ -89,7 +89,7 @@ dependencies:
hausaufgabenheft_logik:
path: ../lib/hausaufgabenheft_logik
intl: ^0.17.0
- jitsi_meet: ^4.0.0
+ jitsi_meet_wrapper: ^0.0.4
key_value_store:
path: ../lib/key_value_store
last_online_reporting: