Compare commits

152 Commits

Author SHA1 Message Date
zhongjin
4116ab9d52 new 2023-02-19 23:35:49 +08:00
4cdb59344e 更新 'react-native/app/translations/resources/zh_CN.ts' 2023-02-19 23:32:16 +08:00
5a1b1a8542 更新 'react-native/app/pages/list_portals/component.tsx' 2023-02-19 23:30:18 +08:00
406ee26710 更新 'android/app/src/main/AndroidManifest.xml' 2023-02-19 23:22:32 +08:00
e2fb233516 更新 'react-native/app/translations/index.ts' 2023-02-19 23:19:09 +08:00
6a1023668c 更新 'react-native/app/translations/resources/index.ts' 2023-02-19 23:18:42 +08:00
d7045c586e 更新 'react-native/app/translations/index.ts' 2023-02-19 23:17:58 +08:00
4c5dc1fd1d 更新 'react-native/app/translations/resources/index.ts' 2023-02-19 23:14:59 +08:00
be2e0d04e1 更新 'react-native/app/translations/resources/zh_CN.ts' 2023-02-19 23:10:03 +08:00
58ddc19b71 更新 'android/app/src/main/res/values/styles.xml' 2023-02-19 23:03:38 +08:00
cdb0e57385 更新 'android/app/src/main/res/values/styles.xml' 2023-02-19 23:02:35 +08:00
b23eec1ce2 更新 'android/app/src/main/AndroidManifest.xml' 2023-02-19 22:53:54 +08:00
4edd7e01e3 更新 'android/app/src/main/res/values/strings.xml' 2023-02-18 16:45:13 +08:00
857c051be7 更新 'android/app/src/main/AndroidManifest.xml' 2023-02-18 16:44:43 +08:00
5e8b4b2021 更新 'android/app/src/main/AndroidManifest.xml' 2023-02-18 16:41:35 +08:00
a50761ef87 更新 'android/app/src/main/AndroidManifest.xml' 2023-02-18 16:21:41 +08:00
zhongjin
64076d5583 Merge branch 'main' of https://git-x.kongjian.xin/BigBlueButton/bigbluebutton-tablet 2023-02-18 14:56:13 +08:00
zhongjin
c02a429078 bundle 2023-02-18 14:55:33 +08:00
317b1c8ba0 更新 'README.md' 2023-02-18 14:55:14 +08:00
6626b0f539 更新 'app.json' 2023-02-18 13:28:08 +08:00
Tiago Daniel Jacobs
7297e298c8 Bump version 2023-01-27 11:06:00 -03:00
Tiago Daniel Jacobs
d4686fa064 Add version number on screen 2023-01-27 10:55:56 -03:00
Tiago Daniel Jacobs
4c07646c90 Bump version 2023-01-16 17:37:12 -03:00
Tiago Daniel Jacobs
dd151410b0 Replace %20 by + in portal address 2023-01-16 17:32:11 -03:00
Tiago Daniel Jacobs
ab8fdcad22 Bump version 2023-01-08 21:10:16 -03:00
Tiago Daniel Jacobs
b8f9704cff Improve URL decoding and bump version for publication 2023-01-08 21:04:11 -03:00
Tiago Daniel Jacobs
6f9b779248 Add support to non temporary portals from deep link 2023-01-08 20:33:51 -03:00
Tiago Daniel Jacobs
5e4c9810fa Update podfile 2022-11-25 09:15:36 -03:00
Tiago Daniel Jacobs
001397d14d Remove old workspace 2022-11-25 09:15:17 -03:00
Tiago Daniel Jacobs
41d118d6cf Fix xcode configuration to use marketing version variable instead of hard coded version 2022-11-08 23:52:13 -03:00
Tiago Daniel Jacobs
65d10fef5b Add CI post clone script 2022-11-08 23:06:08 -03:00
Tiago Daniel Jacobs
9acf5b7866 Merge branch 'main' of github.com:bigbluebutton/bigbluebutton-tablet 2022-11-08 22:37:11 -03:00
Tiago Daniel Jacobs
dc31000493 Switch to new SDK version 2022-11-08 22:36:55 -03:00
Tiago Jacobs
b781d7b020 Update README.md 2022-11-08 22:30:17 -03:00
Tiago Daniel Jacobs
7f5c7f6aa6 Bump app version 2022-10-14 12:33:28 -03:00
Tiago Daniel Jacobs
e211adb6e9 Add URL Scheme back to the project 2022-10-14 10:53:29 -03:00
Tiago Daniel Jacobs
2c9be37952 Bump version for new App Store publication 2022-08-30 16:47:38 -03:00
Tiago Daniel Jacobs
b6d054f2f6 Merge branch 'main' of github.com:bigbluebutton/bigbluebutton-tablet 2022-08-30 15:42:20 -03:00
Tiago Daniel Jacobs
1d57ee3def Fix the build on intel XCode 2022-08-30 15:42:04 -03:00
Tiago Jacobs
12f1ad12df Update README.md 2022-08-29 14:11:33 -03:00
Tiago Jacobs
e146478194 Add TestFlight URL 2022-08-29 14:11:05 -03:00
Tiago Jacobs
69b0a6da9d Update README.md 2022-08-29 14:00:45 -03:00
Tiago Daniel Jacobs
2538a0085a change parameters for app store publication 2022-08-22 17:11:12 -03:00
Tiago Daniel Jacobs
90da5a75c5 Add readme file 2022-08-22 16:01:00 -03:00
Tiago Daniel Jacobs
e41c51a652 Project re-initialization with latest react native 2022-08-22 15:57:25 -03:00
Tiago Jacobs
ec1dddb53b Rename project 2022-07-07 22:26:43 -03:00
Tiago Jacobs
ae289707a1 Update README.md 2022-07-07 21:57:33 -03:00
Tiago Jacobs
6f1fbac68f Bump version 2022-06-30 13:10:39 -03:00
Gustavo Emanuel Farias Rosa
96752e0d2f Solving problem when there is https in the url (#47) 2022-06-30 13:08:57 -03:00
Tiago Jacobs
bc040a3774 Bump version 2022-06-29 17:26:48 -03:00
Gustavo Emanuel Farias Rosa
f877de700e solving name portal bugs (#46) 2022-06-29 17:24:44 -03:00
Tiago Jacobs
62bd0a9f59 Bump SDK version 2022-06-27 16:01:43 -03:00
Gustavo Emanuel Farias Rosa
c52d081e1f resolving promise reject when async storage is null (#45)
Co-authored-by: Gustavo Emanuel Farias Rosa <gustavoemanuelfariasrosa@Mac-mini-de-Gustavo.local>
2022-06-20 08:40:15 -03:00
Gustavo Emanuel Farias Rosa
f01348c28a delegate missing to stop screen share work when app is closed (#43)
Co-authored-by: Gustavo Emanuel <gumanuel@Gustavos-Mac-mini.local>
2022-06-16 17:11:03 -03:00
Tiago Jacobs
bba32acefa Update SDK version 2022-06-16 11:22:50 -03:00
Gustavo Emanuel Farias Rosa
b4dbb55548 Implementing deep link (#41) 2022-06-15 16:14:57 -03:00
Gustavo Emanuel Farias Rosa
f2115e23c7 build_resolved (#42) 2022-06-06 16:24:35 -03:00
Tiago Jacobs
f5e4ef117b Upgrade BBB-SDK version and bump build number 2022-05-16 20:04:54 -03:00
Tiago Jacobs
44d16ef7e4 Upgrade SDK version 2022-05-02 19:12:48 -03:00
Tiago Jacobs
d14285cc12 Upgrade SDK version 2022-05-02 19:11:13 -03:00
Tiago Jacobs
9833c399ea Watch SDK files too 2022-05-02 19:11:03 -03:00
Tiago Jacobs
daf72baa1d Add metro.config.js to gitignore (to avoid commiting config for linked sdk) 2022-05-02 18:00:44 -03:00
Tiago Jacobs
8db4a41e81 Upgrade react 2022-05-02 17:59:24 -03:00
Tiago Jacobs
d9f182e9c6 Merge pull request #39 from gustavo-em/inline_text
Leaving the text on just one line
2022-04-29 15:07:34 -03:00
gustavo-em
c3be1229cc fix text in list portals 2022-04-29 15:00:39 -03:00
Tiago Jacobs
1ed60367c2 Define encryption related flag 2022-04-20 22:51:50 -03:00
Tiago Jacobs
feca0a671b Update podfile 2022-04-20 18:45:44 -03:00
Tiago Jacobs
47dea524de Removes package-lock.json (yarn doesn't like it) 2022-04-20 18:44:50 -03:00
Tiago Jacobs
9b563380dc Upgrade to latest bigbluebutton-mobile-sdk (that supports full audio) 2022-04-20 18:35:50 -03:00
Tiago Jacobs
dabb3b5a77 Update README.md 2022-04-20 00:01:04 -03:00
Tiago Jacobs
1d0b5fefe4 Merge pull request #35 from gustavo-em/refactor_create_portal
Refactoring in the code of create new portal and bug fix when create demo server
2022-04-19 20:39:04 -03:00
gustavo-em
b8b97cb3e3 refactor in the code of create new portal 2022-04-19 18:43:50 -03:00
Tiago Jacobs
7c7a9919df Merge pull request #31 from gustavo-em/button_opacity
Resolving problem which trash button appear when portal was clicked
2022-04-18 17:05:57 -03:00
gustavo-em
5736a2ab63 fix button opacity 2022-04-18 17:04:04 -03:00
Tiago Jacobs
f412b5c1b9 Bump build number 2022-04-17 14:29:54 -03:00
Tiago Jacobs
0617795b6d Updates BigBlueButtonMobileSDK 2022-04-17 12:17:41 -03:00
Tiago Jacobs
4b45cde2d6 Updates BigBlueButtonMobileSDK 2022-04-17 12:17:02 -03:00
Tiago Jacobs
0a8a3c5c4c Add icons without alpha channel 2022-04-17 11:51:15 -03:00
Tiago Jacobs
9bc80cec09 Add more icons and add UpsideDown orientation 2022-04-17 11:14:04 -03:00
Tiago Jacobs
c24524d959 Persist pod lock file 2022-04-16 20:20:55 -03:00
Tiago Jacobs
b521ab1c7d Fix prettier problems 2022-04-16 18:48:57 -03:00
Tiago Jacobs
115fb7f9a3 Fix prettier problems 2022-04-16 18:48:49 -03:00
Tiago Jacobs
8f48cda6b7 Fix condition to render drawers 2022-04-16 18:45:16 -03:00
Tiago Jacobs
ec7c1991b5 Merge pull request #29 from gustavo-em/fix_translations_string
Fix to string of language which doesn't are find in the repository
2022-04-14 16:47:41 -03:00
Gustavo Emanuel Farias Rosa
a34fc90998 fix to string language 2022-04-14 16:31:21 -03:00
Tiago Jacobs
b42b28a3a2 Merge pull request #27 from gustavo-em/fix_fallback_to_en
Fix Fallback
2022-04-14 12:57:09 -03:00
Tiago Jacobs
ce74da5ed8 Merge pull request #28 from gustavo-em/ipad_error_layout
Fix layout to show in full screen on ipad
2022-04-14 12:56:54 -03:00
Gustavo Emanuel Farias Rosa
af10136954 fix layout to full screen in ipad 2022-04-14 10:49:37 -03:00
Gustavo Emanuel Farias Rosa
480e123d89 fix fallback 2022-04-14 09:32:53 -03:00
Tiago Jacobs
f055fcb0a3 Merge pull request #26 from gustavo-em/link_demo_server
Implementing link to demo portal when you don't have any portal added
2022-04-13 23:57:06 -03:00
Gustavo Emanuel Farias Rosa
618a2fa945 demo server url implementing 2022-04-13 18:35:00 -03:00
Tiago Jacobs
6edb360ed8 Merge pull request #24 from ramonlsouza/update-locales-apr13
Update locales
2022-04-13 16:34:09 -03:00
Ramon Souza
95bddfb0cd update locales 2022-04-13 15:38:35 -03:00
Ramon Souza
c6e42d380b Merge remote-tracking branch 'upstream/main' into update-locales-apr13 2022-04-13 15:33:27 -03:00
Tiago Jacobs
ac300e2ba8 Merge pull request #21 from gustavo-em/fallback_lenguage
Implementing fall back to the language in Intl library
2022-04-13 14:52:14 -03:00
Tiago Jacobs
2859b06d82 Merge pull request #23 from ramonlsouza/issue-22
Add transifex script
2022-04-13 12:06:13 -03:00
Tiago Jacobs
5532776532 Refactor translation keys 2022-04-13 11:56:56 -03:00
Ramon Souza
c36a8a3551 move transifex file to project root 2022-04-13 11:52:38 -03:00
Ramon Souza
5613632533 update locales 2022-04-13 11:35:32 -03:00
Ramon Souza
0592ff2c3b add transifex script 2022-04-13 11:31:17 -03:00
Gustavo Emanuel Farias Rosa
64cbfd0269 remove console log 2022-04-12 18:08:41 -03:00
Gustavo Emanuel Farias Rosa
715d15f91d implementing fall back to lenguage in Intl 2022-04-12 17:59:15 -03:00
Tiago Jacobs
40876783bf Skip adding www. prefix 2022-04-12 13:07:23 -03:00
Tiago Jacobs
ff704e0d12 Add configuration that allows loading demo.bigbluebutton.org 2022-04-12 12:25:48 -03:00
Tiago Jacobs
99fcc0c129 Update en-US.ts 2022-04-12 11:42:04 -03:00
Tiago Jacobs
622da30e59 Add missing import and fix Info.plist permissions 2022-04-11 13:31:36 -03:00
Tiago Jacobs
f1c64a8186 Merge pull request #17 from gustavo-em/validate_url
validating url when add a new portal
2022-04-06 23:27:56 -03:00
Tiago Jacobs
e0e777317f Merge branch 'main' into validate_url 2022-04-06 23:27:38 -03:00
Tiago Jacobs
12729f0d62 Update BBB-SDK to latest version 2022-04-06 23:14:51 -03:00
Tiago Jacobs
f8a6df6a31 Upgrade BBB-SDK to latest version 2022-04-06 19:37:53 -03:00
Tiago Jacobs
1a75f7b703 Upgrade BBB-SDK to latest version 2022-04-06 19:36:56 -03:00
Tiago Jacobs
f8400b7895 Upgrade BBB-SDK to latest version 2022-04-06 19:26:51 -03:00
Gustavo Emanuel Farias Rosa
1089436bb5 validating url when add a new portal 2022-03-31 23:37:31 -03:00
Tiago Jacobs
1dd6fef946 Merge pull request #16 from gustavo-em/fix_error_xcode
Error in compiling on xcode
2022-03-29 18:13:33 -03:00
Gustavo Emanuel Farias Rosa
5b7e6d22f2 ajust in bug of duplicated code in the last pr 2022-03-22 09:33:41 -03:00
Tiago Jacobs
76ca2bb5e2 Merge pull request #15 from gustavo-em/capitalize
Capitalize
2022-03-21 17:50:12 -03:00
Gustavo Emanuel Farias Rosa
139165e929 resolve conflicts 2022-03-21 13:48:26 -03:00
Gustavo Emanuel Farias Rosa
8f6f537220 fix capitalize of inputs 2022-03-21 10:53:12 -03:00
Tiago Jacobs
79c3a7cf94 Merge pull request #12 from gustavo-em/ajust_layout_in_webview_margin
Layout Fix WebView
2022-03-21 08:33:25 -03:00
Tiago Jacobs
3633d92c5d Merge pull request #13 from gustavo-em/es_list
LInt
2022-03-21 08:33:03 -03:00
Gustavo Emanuel Farias Rosa
713a4a3a4d fix es list 2022-03-18 15:32:46 -03:00
Gustavo Emanuel Farias Rosa
8d7ba7ae31 ajust in safe area view in the web view margin top 2022-03-18 11:24:01 -03:00
Tiago Jacobs
d86f9b7a68 Merge pull request #11 from gustavo-em/margin_ios
Implementation correct of safe area view
2022-03-12 15:40:35 -03:00
Gustavo Emanuel Farias Rosa
aa2d2fdd86 emplementation correct of safe area view 2022-03-11 16:24:19 -03:00
Tiago Jacobs
e19ddbbd7e Merge pull request #10 from gustavo-em/icon_ios
Icon iOS
2022-03-11 15:38:43 -03:00
Tiago Jacobs
ba01739525 Merge pull request #9 from gustavo-em/splash_ios
Splash in IOS
2022-03-11 15:34:37 -03:00
Gustavo Emanuel Farias Rosa
84d6b72e35 added icon to app in ios 2022-03-11 15:26:19 -03:00
Gustavo Emanuel Farias Rosa
6bb8ed4376 added splash of bbb in ios 2022-03-11 14:04:09 -03:00
Tiago Jacobs
096333392a Remove tests target from Podfile 2022-03-09 09:16:03 -03:00
Tiago Jacobs
dac241d912 Merge pull request #7 from gustavo-em/icon_bbb
Icon BBB
2022-03-08 08:25:48 -03:00
gustavo-em
e4b2292d37 apply -custom name -splash -custom icon 2022-03-07 14:11:42 -03:00
Tiago Jacobs
0b9e2d784d Merge pull request #6 from gustavo-em/auto_capitalize_inputs
FIxing Capitalize Input
2022-03-04 19:29:36 -03:00
gustavo-em
4cdf612f0f fixing_capitalize_of_input 2022-03-04 14:47:35 -03:00
Tiago Jacobs
acd18006fc Update to use SDK V0.1.8 2022-03-04 00:07:36 -03:00
Tiago Jacobs
581ce57e94 Rewrite AppDelegate to be a SWIFT 2022-03-03 22:14:05 -03:00
Tiago Jacobs
8e31664914 Apply fixes for IOS 2022-03-01 18:38:25 -03:00
Tiago Jacobs
0a077cbdf7 Merge pull request #4 from gustavo-em/list_portals
Portals
2022-03-01 17:38:25 -03:00
Tiago Jacobs
2e712f359c Delete ios.yml 2022-03-01 17:37:59 -03:00
Tiago Jacobs
25c0eb5860 Create ios.yml 2022-03-01 17:32:41 -03:00
Tiago Jacobs
ec1fa66e0c Delete build.yml 2022-03-01 17:22:29 -03:00
Tiago Jacobs
e1f18f5407 Merge pull request #5 from bigbluebutton/antobinary-patch-1
Update .gitignore
2022-03-01 17:03:47 -03:00
gustavo-em
ee570630ac implementing logic of application 2022-03-01 16:29:41 -03:00
gustavo-em
98e26de42e adding translations 2022-03-01 16:29:17 -03:00
gustavo-em
a8a0bf7271 installing dependecies 2022-03-01 16:28:24 -03:00
gustavo-em
57f58f2c02 fixing to settimeouts 2022-02-24 17:37:09 -03:00
gustavo-em
29394335af context of portals 2022-02-24 16:08:12 -03:00
gustavo-em
6a5acf1084 implementing pages and styles 2022-02-24 16:03:28 -03:00
gustavo-em
7157c984aa installing libs 2022-02-24 16:02:12 -03:00
gustavo-em
80b544f270 implement prototipe of navigate 2022-02-16 14:10:13 -03:00
gustavo-em
701df1ff80 add navigation and your dependencys 2022-02-16 14:09:37 -03:00
gustavo-em
f12d0af084 add libs with depend of navigation drawer and refactor app.tsx 2022-02-16 11:15:11 -03:00
gustavo-em
006bc02da5 npm install 2022-02-16 10:26:15 -03:00
122 changed files with 6312 additions and 2688 deletions

View File

@@ -1,2 +1,2 @@
BUNDLE_PATH: "vendor/bundle"
BUNDLE_FORCE_RUBY_PLATFORM: 1
BUNDLE_FORCE_RUBY_PLATFORM: 1

View File

@@ -1,20 +0,0 @@
name: Build
on:
push:
branches:
- master
pull_request:
types: [opened, synchronize, reopened]
jobs:
sonarcloud:
name: SonarCloud
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
- name: SonarCloud Scan
uses: SonarSource/sonarcloud-github-action@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}

17
.gitignore vendored
View File

@@ -1,8 +1,6 @@
# OSX
#
.DS_Store
.AppleDouble
.LSOverride
# Xcode
#
@@ -22,6 +20,7 @@ DerivedData
*.hmap
*.ipa
*.xcuserstate
ios/.xcode.env.local
# Android/IntelliJ
#
@@ -51,16 +50,14 @@ buck-out/
# For more information about the recommended setup visit:
# https://docs.fastlane.tools/best-practices/source-control/
*/fastlane/report.xml
*/fastlane/Preview.html
*/fastlane/screenshots
**/fastlane/report.xml
**/fastlane/Preview.html
**/fastlane/screenshots
**/fastlane/test_output
# Bundle artifact
*.jsbundle
# CocoaPods
# Ruby / CocoaPods
/ios/Pods/
# Thumbnails
._*
/vendor/bundle/

View File

@@ -1,7 +1,7 @@
module.exports = {
arrowParens: 'avoid',
bracketSameLine: true,
bracketSpacing: false,
jsxBracketSameLine: true,
singleQuote: true,
trailingComma: 'all',
arrowParens: 'avoid',
};

View File

@@ -1 +1 @@
2.7.4
2.7.5

37
App.tsx
View File

@@ -1,27 +1,24 @@
import 'react-native-gesture-handler';
import * as React from 'react';
import {StyleSheet, View, Platform} from 'react-native';
import {BigbluebuttonMobile} from 'bigbluebutton-mobile-sdk';
import {LogBox} from 'react-native';
import {Bootstrap} from './react-native/bootstrap/start/component';
import FontAwesomeIcon from 'react-native-vector-icons/FontAwesome5';
FontAwesomeIcon.getStyledIconSet('brand').loadFont();
FontAwesomeIcon.getStyledIconSet('light').loadFont();
FontAwesomeIcon.getStyledIconSet('regular').loadFont();
FontAwesomeIcon.getStyledIconSet('solid').loadFont();
export default function App() {
React.useEffect(() => {
LogBox.ignoreAllLogs();
}, []);
return (
<View style={styles.container}>
<BigbluebuttonMobile
broadcastAppBundleId="org.bigbluebutton.mobile.BigBlueButton-Broadcast"
url="https://bigbluebutton.org"
style={styles.bbb}
/>
</View>
<>
<Bootstrap />
</>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
flexDirection: 'row',
},
bbb: {
marginTop: Platform.select({ios: 20, android: 0}),
flex: 1,
},
});

View File

@@ -1,4 +1,6 @@
source 'https://rubygems.org'
# You may use http://rbenv.org/ or https://rvm.io/ to install and use this version
ruby '2.7.4'
ruby '2.7.5'
gem 'cocoapods', '~> 1.11', '>= 1.11.2'

View File

@@ -1,96 +0,0 @@
GEM
remote: https://rubygems.org/
specs:
CFPropertyList (3.0.5)
rexml
activesupport (6.1.4.4)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 1.6, < 2)
minitest (>= 5.1)
tzinfo (~> 2.0)
zeitwerk (~> 2.3)
addressable (2.8.0)
public_suffix (>= 2.0.2, < 5.0)
algoliasearch (1.27.5)
httpclient (~> 2.8, >= 2.8.3)
json (>= 1.5.1)
atomos (0.1.3)
claide (1.1.0)
cocoapods (1.11.2)
addressable (~> 2.8)
claide (>= 1.0.2, < 2.0)
cocoapods-core (= 1.11.2)
cocoapods-deintegrate (>= 1.0.3, < 2.0)
cocoapods-downloader (>= 1.4.0, < 2.0)
cocoapods-plugins (>= 1.0.0, < 2.0)
cocoapods-search (>= 1.0.0, < 2.0)
cocoapods-trunk (>= 1.4.0, < 2.0)
cocoapods-try (>= 1.1.0, < 2.0)
colored2 (~> 3.1)
escape (~> 0.0.4)
fourflusher (>= 2.3.0, < 3.0)
gh_inspector (~> 1.0)
molinillo (~> 0.8.0)
nap (~> 1.0)
ruby-macho (>= 1.0, < 3.0)
xcodeproj (>= 1.21.0, < 2.0)
cocoapods-core (1.11.2)
activesupport (>= 5.0, < 7)
addressable (~> 2.8)
algoliasearch (~> 1.0)
concurrent-ruby (~> 1.1)
fuzzy_match (~> 2.0.4)
nap (~> 1.0)
netrc (~> 0.11)
public_suffix (~> 4.0)
typhoeus (~> 1.0)
cocoapods-deintegrate (1.0.5)
cocoapods-downloader (1.5.1)
cocoapods-plugins (1.0.0)
nap
cocoapods-search (1.0.1)
cocoapods-trunk (1.6.0)
nap (>= 0.8, < 2.0)
netrc (~> 0.11)
cocoapods-try (1.2.0)
colored2 (3.1.2)
concurrent-ruby (1.1.9)
escape (0.0.4)
ethon (0.15.0)
ffi (>= 1.15.0)
ffi (1.15.5)
fourflusher (2.3.1)
fuzzy_match (2.0.4)
gh_inspector (1.1.3)
httpclient (2.8.3)
i18n (1.9.1)
concurrent-ruby (~> 1.0)
json (2.6.1)
minitest (5.15.0)
molinillo (0.8.0)
nanaimo (0.3.0)
nap (1.1.0)
netrc (0.11.0)
public_suffix (4.0.6)
rexml (3.2.5)
ruby-macho (2.5.1)
typhoeus (1.4.0)
ethon (>= 0.9.0)
tzinfo (2.0.4)
concurrent-ruby (~> 1.0)
xcodeproj (1.21.0)
CFPropertyList (>= 2.3.3, < 4.0)
atomos (~> 0.1.3)
claide (>= 1.0.2, < 2.0)
colored2 (~> 3.1)
nanaimo (~> 0.3.0)
rexml (~> 3.2.4)
zeitwerk (2.5.4)
PLATFORMS
ruby
DEPENDENCIES
cocoapods (~> 1.11, >= 1.11.2)
RUBY VERSION
ruby 2.7.4p191
BUNDLED WITH
2.2.27

View File

@@ -1,80 +1,17 @@
# BigBlueButton-mobile
# BigBlueButton Tablet
BigBlueButton mobile application.
BigBlueButton app for tablets. It allows you to share your screen in a BigBlueButton room, and also provides improved background audio.
**Important:** This is an work in progress and is not ready to be used by the community. Please stay tunned.
PS: This runs on mobile too, but it's mainly targeted for tablets, as it requires good CPU due to usage of a webview for rendering BigBlueButton.
## Development
More details in https://github.com/bigbluebutton/bigbluebutton-tablet-sdk
### Linux
- iOS version available in [App Store](https://apps.apple.com/us/app/bigbluebutton-tablet/id1641156756)
To build this application in linux, you need to run:
```sh
# Instal Android SDK
sudo apt install android-sdk
# In one terminal, start metro:
npx react-native start
# In other terminal, run the app:
npx react-native run-android
```
### MAC
#### Simulator
To build this application in mac, you need to run:
```sh
# Install cocoapods gem
sudo gem install cocoapods
# Install dependencies
npx pod-install
# In one terminal, start metro:
npx react-native start
# In other terminal, run the app:
npx react-native run-ios --simulator="iPhone 13"
# bundle
```
yarn react-native bundle --entry-file index.js --platform android --dev false --bundle-output ./android/app/src/main/assets/index.android.bundle --assets-dest ./android/app/src/main/res/
#### Real device
##### Debug mode
To run this application in a real ios device, you need to run:
```sh
#Install package
npm install -g ios-deploy
#Run
npx react-native run-ios --device "iPhone de TDJ"
```
###### Release mode
To run a release version of this application in a real ios device, you need to run:
```sh
npx react-native run-ios --configuration Release --device "iPhone de TDJ"
```
#### Open project in XCODE
To change native code, you can run this command:
```sh
open ios/BigBlueButton.xcworkspace
```
## References
### IOS
- [Screen broadcast - replay kit 2](https://developer.apple.com/videos/play/wwdc2018/601/)
- [Logs](https://developer.apple.com/videos/play/wwdc2020/10168/)

Binary file not shown.

View File

@@ -35,12 +35,12 @@ android_library(
android_build_config(
name = "build_config",
package = "com.bigbluebutton",
package = "com.bigbluebuttontablet",
)
android_resource(
name = "res",
package = "com.bigbluebutton",
package = "com.bigbluebuttontablet",
res = "src/main/res",
)

View File

@@ -121,9 +121,12 @@ def jscFlavor = 'org.webkit:android-jsc:+'
def enableHermes = project.ext.react.get("enableHermes", false);
/**
* Architectures to build native code for in debug.
* Architectures to build native code for.
*/
def nativeArchitectures = project.getProperties().get("reactNativeDebugArchitectures")
def reactNativeArchitectures() {
def value = project.getProperties().get("reactNativeArchitectures")
return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"]
}
android {
ndkVersion rootProject.ext.ndkVersion
@@ -131,18 +134,87 @@ android {
compileSdkVersion rootProject.ext.compileSdkVersion
defaultConfig {
applicationId "com.bigbluebutton"
applicationId "com.bigbluebuttontablet"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 1
versionName "1.0"
buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
if (isNewArchitectureEnabled()) {
// We configure the NDK build only if you decide to opt-in for the New Architecture.
externalNativeBuild {
ndkBuild {
arguments "APP_PLATFORM=android-21",
"APP_STL=c++_shared",
"NDK_TOOLCHAIN_VERSION=clang",
"GENERATED_SRC_DIR=$buildDir/generated/source",
"PROJECT_BUILD_DIR=$buildDir",
"REACT_ANDROID_DIR=$rootDir/../node_modules/react-native/ReactAndroid",
"REACT_ANDROID_BUILD_DIR=$rootDir/../node_modules/react-native/ReactAndroid/build",
"NODE_MODULES_DIR=$rootDir/../node_modules"
cFlags "-Wall", "-Werror", "-fexceptions", "-frtti", "-DWITH_INSPECTOR=1"
cppFlags "-std=c++17"
// Make sure this target name is the same you specify inside the
// src/main/jni/Android.mk file for the `LOCAL_MODULE` variable.
targets "bigbluebuttontablet_appmodules"
}
}
if (!enableSeparateBuildPerCPUArchitecture) {
ndk {
abiFilters (*reactNativeArchitectures())
}
}
}
}
if (isNewArchitectureEnabled()) {
// We configure the NDK build only if you decide to opt-in for the New Architecture.
externalNativeBuild {
ndkBuild {
path "$projectDir/src/main/jni/Android.mk"
}
}
def reactAndroidProjectDir = project(':ReactAndroid').projectDir
def packageReactNdkDebugLibs = tasks.register("packageReactNdkDebugLibs", Copy) {
dependsOn(":ReactAndroid:packageReactNdkDebugLibsForBuck")
from("$reactAndroidProjectDir/src/main/jni/prebuilt/lib")
into("$buildDir/react-ndk/exported")
}
def packageReactNdkReleaseLibs = tasks.register("packageReactNdkReleaseLibs", Copy) {
dependsOn(":ReactAndroid:packageReactNdkReleaseLibsForBuck")
from("$reactAndroidProjectDir/src/main/jni/prebuilt/lib")
into("$buildDir/react-ndk/exported")
}
afterEvaluate {
// If you wish to add a custom TurboModule or component locally,
// you should uncomment this line.
// preBuild.dependsOn("generateCodegenArtifactsFromSchema")
preDebugBuild.dependsOn(packageReactNdkDebugLibs)
preReleaseBuild.dependsOn(packageReactNdkReleaseLibs)
// Due to a bug inside AGP, we have to explicitly set a dependency
// between configureNdkBuild* tasks and the preBuild tasks.
// This can be removed once this is solved: https://issuetracker.google.com/issues/207403732
configureNdkBuildRelease.dependsOn(preReleaseBuild)
configureNdkBuildDebug.dependsOn(preDebugBuild)
reactNativeArchitectures().each { architecture ->
tasks.findByName("configureNdkBuildDebug[${architecture}]")?.configure {
dependsOn("preDebugBuild")
}
tasks.findByName("configureNdkBuildRelease[${architecture}]")?.configure {
dependsOn("preReleaseBuild")
}
}
}
}
splits {
abi {
reset()
enable enableSeparateBuildPerCPUArchitecture
universalApk false // If true, also generate a universal APK
include "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
include (*reactNativeArchitectures())
}
}
signingConfigs {
@@ -156,11 +228,6 @@ android {
buildTypes {
debug {
signingConfig signingConfigs.debug
if (nativeArchitectures) {
ndk {
abiFilters nativeArchitectures.split(',')
}
}
}
release {
// Caution! In production, you need to generate your own keystore file.
@@ -190,6 +257,7 @@ android {
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
//noinspection GradleDynamicVersion
implementation "com.facebook.react:react-native:+" // From node_modules
@@ -209,14 +277,31 @@ dependencies {
}
if (enableHermes) {
def hermesPath = "../../node_modules/hermes-engine/android/";
debugImplementation files(hermesPath + "hermes-debug.aar")
releaseImplementation files(hermesPath + "hermes-release.aar")
//noinspection GradleDynamicVersion
implementation("com.facebook.react:hermes-engine:+") { // From node_modules
exclude group:'com.facebook.fbjni'
}
} else {
implementation jscFlavor
}
}
if (isNewArchitectureEnabled()) {
// If new architecture is enabled, we let you build RN from source
// Otherwise we fallback to a prebuilt .aar bundled in the NPM package.
// This will be applied to all the imported transtitive dependency.
configurations.all {
resolutionStrategy.dependencySubstitution {
substitute(module("com.facebook.react:react-native"))
.using(project(":ReactAndroid"))
.because("On New Architecture we're building React Native from source")
substitute(module("com.facebook.react:hermes-engine"))
.using(project(":ReactAndroid:hermes-engine"))
.because("On New Architecture we're building Hermes from source")
}
}
}
// Run this once to be able to run the application with BUCK
// puts all compile dependencies into folder libs for BUCK to use
task copyDownloadableDepsToLibs(type: Copy) {
@@ -225,3 +310,11 @@ task copyDownloadableDepsToLibs(type: Copy) {
}
apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
def isNewArchitectureEnabled() {
// To opt-in for the New Architecture, you can either:
// - Set `newArchEnabled` to true inside the `gradle.properties` file
// - Invoke gradle with `-newArchEnabled=true`
// - Set an environment variable `ORG_GRADLE_PROJECT_newArchEnabled=true`
return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true"
}

View File

@@ -8,6 +8,6 @@
android:usesCleartextTraffic="true"
tools:targetApi="28"
tools:ignore="GoogleAppIndexingWarning">
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" android:exported="false" />
</application>
</manifest>

View File

@@ -1,10 +1,10 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* <p>This source code is licensed under the MIT license found in the LICENSE file in the root
* directory of this source tree.
*/
package com.bigbluebutton;
package com.bigbluebuttontablet;
import android.content.Context;
import com.facebook.flipper.android.AndroidFlipperClient;
@@ -19,6 +19,7 @@ import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor;
import com.facebook.flipper.plugins.network.NetworkFlipperPlugin;
import com.facebook.flipper.plugins.react.ReactFlipperPlugin;
import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin;
import com.facebook.react.ReactInstanceEventListener;
import com.facebook.react.ReactInstanceManager;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.modules.network.NetworkingModule;
@@ -51,7 +52,7 @@ public class ReactNativeFlipper {
ReactContext reactContext = reactInstanceManager.getCurrentReactContext();
if (reactContext == null) {
reactInstanceManager.addReactInstanceEventListener(
new ReactInstanceManager.ReactInstanceEventListener() {
new ReactInstanceEventListener() {
@Override
public void onReactContextInitialized(ReactContext reactContext) {
reactInstanceManager.removeReactInstanceEventListener(this);

View File

@@ -1,7 +1,20 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.bigbluebutton">
package="com.bigbluebuttontablet">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.MICROPHONE" />
<uses-feature android:name="android.hardware.audio.low_latency" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-feature android:name="android.hardware.audio.pro" />
<uses-feature android:name="android.hardware.microphone"/>
<uses-feature android:name="android.hardware.camera" />
<application
android:name=".MainApplication"
@@ -13,9 +26,12 @@
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode"
android:launchMode="singleTask"
android:windowSoftInputMode="adjustResize">
android:windowSoftInputMode="adjustResize"
android:screenOrientation="landscape"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />

File diff suppressed because one or more lines are too long

View File

@@ -1,15 +0,0 @@
package com.bigbluebutton;
import com.facebook.react.ReactActivity;
public class MainActivity extends ReactActivity {
/**
* Returns the name of the main component registered from JavaScript. This is used to schedule
* rendering of the component.
*/
@Override
protected String getMainComponentName() {
return "BigBlueButton";
}
}

View File

@@ -0,0 +1,48 @@
package com.bigbluebuttontablet;
import com.facebook.react.ReactActivity;
import com.facebook.react.ReactActivityDelegate;
import com.facebook.react.ReactRootView;
public class MainActivity extends ReactActivity {
/**
* Returns the name of the main component registered from JavaScript. This is used to schedule
* rendering of the component.
*/
@Override
protected String getMainComponentName() {
return "BigBlueButtonTablet";
}
/**
* Returns the instance of the {@link ReactActivityDelegate}. There the RootView is created and
* you can specify the renderer you wish to use - the new renderer (Fabric) or the old renderer
* (Paper).
*/
@Override
protected ReactActivityDelegate createReactActivityDelegate() {
return new MainActivityDelegate(this, getMainComponentName());
}
public static class MainActivityDelegate extends ReactActivityDelegate {
public MainActivityDelegate(ReactActivity activity, String mainComponentName) {
super(activity, mainComponentName);
}
@Override
protected ReactRootView createRootView() {
ReactRootView reactRootView = new ReactRootView(getContext());
// If you opted-in for the New Architecture, we enable the Fabric Renderer.
reactRootView.setIsFabric(BuildConfig.IS_NEW_ARCHITECTURE_ENABLED);
return reactRootView;
}
@Override
protected boolean isConcurrentRootEnabled() {
// If you opted-in for the New Architecture, we enable Concurrent Root (i.e. React 18).
// More on this on https://reactjs.org/blog/2022/03/29/react-v18.html
return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;
}
}
}

View File

@@ -1,4 +1,4 @@
package com.bigbluebutton;
package com.bigbluebuttontablet;
import android.app.Application;
import android.content.Context;
@@ -7,7 +7,9 @@ import com.facebook.react.ReactApplication;
import com.facebook.react.ReactInstanceManager;
import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.react.config.ReactFeatureFlags;
import com.facebook.soloader.SoLoader;
import com.bigbluebuttontablet.newarchitecture.MainApplicationReactNativeHost;
import java.lang.reflect.InvocationTargetException;
import java.util.List;
@@ -35,14 +37,23 @@ public class MainApplication extends Application implements ReactApplication {
}
};
private final ReactNativeHost mNewArchitectureNativeHost =
new MainApplicationReactNativeHost(this);
@Override
public ReactNativeHost getReactNativeHost() {
return mReactNativeHost;
if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
return mNewArchitectureNativeHost;
} else {
return mReactNativeHost;
}
}
@Override
public void onCreate() {
super.onCreate();
// If you opted-in for the New Architecture, we enable the TurboModule system
ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;
SoLoader.init(this, /* native exopackage */ false);
initializeFlipper(this, getReactNativeHost().getReactInstanceManager());
}
@@ -62,7 +73,7 @@ public class MainApplication extends Application implements ReactApplication {
We use reflection here to pick up the class that initializes Flipper,
since Flipper library is not available in release mode
*/
Class<?> aClass = Class.forName("com.bigbluebutton.ReactNativeFlipper");
Class<?> aClass = Class.forName("com.bigbluebuttontablet.ReactNativeFlipper");
aClass
.getMethod("initializeFlipper", Context.class, ReactInstanceManager.class)
.invoke(null, context, reactInstanceManager);

View File

@@ -0,0 +1,116 @@
package com.bigbluebuttontablet.newarchitecture;
import android.app.Application;
import androidx.annotation.NonNull;
import com.facebook.react.PackageList;
import com.facebook.react.ReactInstanceManager;
import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.react.ReactPackageTurboModuleManagerDelegate;
import com.facebook.react.bridge.JSIModulePackage;
import com.facebook.react.bridge.JSIModuleProvider;
import com.facebook.react.bridge.JSIModuleSpec;
import com.facebook.react.bridge.JSIModuleType;
import com.facebook.react.bridge.JavaScriptContextHolder;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.UIManager;
import com.facebook.react.fabric.ComponentFactory;
import com.facebook.react.fabric.CoreComponentsRegistry;
import com.facebook.react.fabric.FabricJSIModuleProvider;
import com.facebook.react.fabric.ReactNativeConfig;
import com.facebook.react.uimanager.ViewManagerRegistry;
import com.bigbluebuttontablet.BuildConfig;
import com.bigbluebuttontablet.newarchitecture.components.MainComponentsRegistry;
import com.bigbluebuttontablet.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate;
import java.util.ArrayList;
import java.util.List;
/**
* A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both
* TurboModule delegates and the Fabric Renderer.
*
* <p>Please note that this class is used ONLY if you opt-in for the New Architecture (see the
* `newArchEnabled` property). Is ignored otherwise.
*/
public class MainApplicationReactNativeHost extends ReactNativeHost {
public MainApplicationReactNativeHost(Application application) {
super(application);
}
@Override
public boolean getUseDeveloperSupport() {
return BuildConfig.DEBUG;
}
@Override
protected List<ReactPackage> getPackages() {
List<ReactPackage> packages = new PackageList(this).getPackages();
// Packages that cannot be autolinked yet can be added manually here, for example:
// packages.add(new MyReactNativePackage());
// TurboModules must also be loaded here providing a valid TurboReactPackage implementation:
// packages.add(new TurboReactPackage() { ... });
// If you have custom Fabric Components, their ViewManagers should also be loaded here
// inside a ReactPackage.
return packages;
}
@Override
protected String getJSMainModuleName() {
return "index";
}
@NonNull
@Override
protected ReactPackageTurboModuleManagerDelegate.Builder
getReactPackageTurboModuleManagerDelegateBuilder() {
// Here we provide the ReactPackageTurboModuleManagerDelegate Builder. This is necessary
// for the new architecture and to use TurboModules correctly.
return new MainApplicationTurboModuleManagerDelegate.Builder();
}
@Override
protected JSIModulePackage getJSIModulePackage() {
return new JSIModulePackage() {
@Override
public List<JSIModuleSpec> getJSIModules(
final ReactApplicationContext reactApplicationContext,
final JavaScriptContextHolder jsContext) {
final List<JSIModuleSpec> specs = new ArrayList<>();
// Here we provide a new JSIModuleSpec that will be responsible of providing the
// custom Fabric Components.
specs.add(
new JSIModuleSpec() {
@Override
public JSIModuleType getJSIModuleType() {
return JSIModuleType.UIManager;
}
@Override
public JSIModuleProvider<UIManager> getJSIModuleProvider() {
final ComponentFactory componentFactory = new ComponentFactory();
CoreComponentsRegistry.register(componentFactory);
// Here we register a Components Registry.
// The one that is generated with the template contains no components
// and just provides you the one from React Native core.
MainComponentsRegistry.register(componentFactory);
final ReactInstanceManager reactInstanceManager = getReactInstanceManager();
ViewManagerRegistry viewManagerRegistry =
new ViewManagerRegistry(
reactInstanceManager.getOrCreateViewManagers(reactApplicationContext));
return new FabricJSIModuleProvider(
reactApplicationContext,
componentFactory,
ReactNativeConfig.DEFAULT_CONFIG,
viewManagerRegistry);
}
});
return specs;
}
};
}
}

View File

@@ -0,0 +1,36 @@
package com.bigbluebuttontablet.newarchitecture.components;
import com.facebook.jni.HybridData;
import com.facebook.proguard.annotations.DoNotStrip;
import com.facebook.react.fabric.ComponentFactory;
import com.facebook.soloader.SoLoader;
/**
* Class responsible to load the custom Fabric Components. This class has native methods and needs a
* corresponding C++ implementation/header file to work correctly (already placed inside the jni/
* folder for you).
*
* <p>Please note that this class is used ONLY if you opt-in for the New Architecture (see the
* `newArchEnabled` property). Is ignored otherwise.
*/
@DoNotStrip
public class MainComponentsRegistry {
static {
SoLoader.loadLibrary("fabricjni");
}
@DoNotStrip private final HybridData mHybridData;
@DoNotStrip
private native HybridData initHybrid(ComponentFactory componentFactory);
@DoNotStrip
private MainComponentsRegistry(ComponentFactory componentFactory) {
mHybridData = initHybrid(componentFactory);
}
@DoNotStrip
public static MainComponentsRegistry register(ComponentFactory componentFactory) {
return new MainComponentsRegistry(componentFactory);
}
}

View File

@@ -0,0 +1,48 @@
package com.bigbluebuttontablet.newarchitecture.modules;
import com.facebook.jni.HybridData;
import com.facebook.react.ReactPackage;
import com.facebook.react.ReactPackageTurboModuleManagerDelegate;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.soloader.SoLoader;
import java.util.List;
/**
* Class responsible to load the TurboModules. This class has native methods and needs a
* corresponding C++ implementation/header file to work correctly (already placed inside the jni/
* folder for you).
*
* <p>Please note that this class is used ONLY if you opt-in for the New Architecture (see the
* `newArchEnabled` property). Is ignored otherwise.
*/
public class MainApplicationTurboModuleManagerDelegate
extends ReactPackageTurboModuleManagerDelegate {
private static volatile boolean sIsSoLibraryLoaded;
protected MainApplicationTurboModuleManagerDelegate(
ReactApplicationContext reactApplicationContext, List<ReactPackage> packages) {
super(reactApplicationContext, packages);
}
protected native HybridData initHybrid();
native boolean canCreateTurboModule(String moduleName);
public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder {
protected MainApplicationTurboModuleManagerDelegate build(
ReactApplicationContext context, List<ReactPackage> packages) {
return new MainApplicationTurboModuleManagerDelegate(context, packages);
}
}
@Override
protected synchronized void maybeLoadOtherSoLibraries() {
if (!sIsSoLibraryLoaded) {
// If you change the name of your application .so file in the Android.mk file,
// make sure you update the name here as well.
SoLoader.loadLibrary("bigbluebuttontablet_appmodules");
sIsSoLibraryLoaded = true;
}
}
}

View File

@@ -0,0 +1,48 @@
THIS_DIR := $(call my-dir)
include $(REACT_ANDROID_DIR)/Android-prebuilt.mk
# If you wish to add a custom TurboModule or Fabric component in your app you
# will have to include the following autogenerated makefile.
# include $(GENERATED_SRC_DIR)/codegen/jni/Android.mk
include $(CLEAR_VARS)
LOCAL_PATH := $(THIS_DIR)
# You can customize the name of your application .so file here.
LOCAL_MODULE := bigbluebuttontablet_appmodules
LOCAL_C_INCLUDES := $(LOCAL_PATH)
LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp)
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
# If you wish to add a custom TurboModule or Fabric component in your app you
# will have to uncomment those lines to include the generated source
# files from the codegen (placed in $(GENERATED_SRC_DIR)/codegen/jni)
#
# LOCAL_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni
# LOCAL_SRC_FILES += $(wildcard $(GENERATED_SRC_DIR)/codegen/jni/*.cpp)
# LOCAL_EXPORT_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni
# Here you should add any native library you wish to depend on.
LOCAL_SHARED_LIBRARIES := \
libfabricjni \
libfbjni \
libfolly_runtime \
libglog \
libjsi \
libreact_codegen_rncore \
libreact_debug \
libreact_nativemodule_core \
libreact_render_componentregistry \
libreact_render_core \
libreact_render_debug \
libreact_render_graphics \
librrc_view \
libruntimeexecutor \
libturbomodulejsijni \
libyoga
LOCAL_CFLAGS := -DLOG_TAG=\"ReactNative\" -fexceptions -frtti -std=c++17 -Wall
include $(BUILD_SHARED_LIBRARY)

View File

@@ -0,0 +1,24 @@
#include "MainApplicationModuleProvider.h"
#include <rncore.h>
namespace facebook {
namespace react {
std::shared_ptr<TurboModule> MainApplicationModuleProvider(
const std::string moduleName,
const JavaTurboModule::InitParams &params) {
// Here you can provide your own module provider for TurboModules coming from
// either your application or from external libraries. The approach to follow
// is similar to the following (for a library called `samplelibrary`:
//
// auto module = samplelibrary_ModuleProvider(moduleName, params);
// if (module != nullptr) {
// return module;
// }
// return rncore_ModuleProvider(moduleName, params);
return rncore_ModuleProvider(moduleName, params);
}
} // namespace react
} // namespace facebook

View File

@@ -0,0 +1,16 @@
#pragma once
#include <memory>
#include <string>
#include <ReactCommon/JavaTurboModule.h>
namespace facebook {
namespace react {
std::shared_ptr<TurboModule> MainApplicationModuleProvider(
const std::string moduleName,
const JavaTurboModule::InitParams &params);
} // namespace react
} // namespace facebook

View File

@@ -0,0 +1,45 @@
#include "MainApplicationTurboModuleManagerDelegate.h"
#include "MainApplicationModuleProvider.h"
namespace facebook {
namespace react {
jni::local_ref<MainApplicationTurboModuleManagerDelegate::jhybriddata>
MainApplicationTurboModuleManagerDelegate::initHybrid(
jni::alias_ref<jhybridobject>) {
return makeCxxInstance();
}
void MainApplicationTurboModuleManagerDelegate::registerNatives() {
registerHybrid({
makeNativeMethod(
"initHybrid", MainApplicationTurboModuleManagerDelegate::initHybrid),
makeNativeMethod(
"canCreateTurboModule",
MainApplicationTurboModuleManagerDelegate::canCreateTurboModule),
});
}
std::shared_ptr<TurboModule>
MainApplicationTurboModuleManagerDelegate::getTurboModule(
const std::string name,
const std::shared_ptr<CallInvoker> jsInvoker) {
// Not implemented yet: provide pure-C++ NativeModules here.
return nullptr;
}
std::shared_ptr<TurboModule>
MainApplicationTurboModuleManagerDelegate::getTurboModule(
const std::string name,
const JavaTurboModule::InitParams &params) {
return MainApplicationModuleProvider(name, params);
}
bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule(
std::string name) {
return getTurboModule(name, nullptr) != nullptr ||
getTurboModule(name, {.moduleName = name}) != nullptr;
}
} // namespace react
} // namespace facebook

View File

@@ -0,0 +1,38 @@
#include <memory>
#include <string>
#include <ReactCommon/TurboModuleManagerDelegate.h>
#include <fbjni/fbjni.h>
namespace facebook {
namespace react {
class MainApplicationTurboModuleManagerDelegate
: public jni::HybridClass<
MainApplicationTurboModuleManagerDelegate,
TurboModuleManagerDelegate> {
public:
// Adapt it to the package you used for your Java class.
static constexpr auto kJavaDescriptor =
"Lcom/bigbluebuttontablet/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;";
static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject>);
static void registerNatives();
std::shared_ptr<TurboModule> getTurboModule(
const std::string name,
const std::shared_ptr<CallInvoker> jsInvoker) override;
std::shared_ptr<TurboModule> getTurboModule(
const std::string name,
const JavaTurboModule::InitParams &params) override;
/**
* Test-only method. Allows user to verify whether a TurboModule can be
* created by instances of this class.
*/
bool canCreateTurboModule(std::string name);
};
} // namespace react
} // namespace facebook

View File

@@ -0,0 +1,61 @@
#include "MainComponentsRegistry.h"
#include <CoreComponentsRegistry.h>
#include <fbjni/fbjni.h>
#include <react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h>
#include <react/renderer/components/rncore/ComponentDescriptors.h>
namespace facebook {
namespace react {
MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {}
std::shared_ptr<ComponentDescriptorProviderRegistry const>
MainComponentsRegistry::sharedProviderRegistry() {
auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry();
// Custom Fabric Components go here. You can register custom
// components coming from your App or from 3rd party libraries here.
//
// providerRegistry->add(concreteComponentDescriptorProvider<
// AocViewerComponentDescriptor>());
return providerRegistry;
}
jni::local_ref<MainComponentsRegistry::jhybriddata>
MainComponentsRegistry::initHybrid(
jni::alias_ref<jclass>,
ComponentFactory *delegate) {
auto instance = makeCxxInstance(delegate);
auto buildRegistryFunction =
[](EventDispatcher::Weak const &eventDispatcher,
ContextContainer::Shared const &contextContainer)
-> ComponentDescriptorRegistry::Shared {
auto registry = MainComponentsRegistry::sharedProviderRegistry()
->createComponentDescriptorRegistry(
{eventDispatcher, contextContainer});
auto mutableRegistry =
std::const_pointer_cast<ComponentDescriptorRegistry>(registry);
mutableRegistry->setFallbackComponentDescriptor(
std::make_shared<UnimplementedNativeViewComponentDescriptor>(
ComponentDescriptorParameters{
eventDispatcher, contextContainer, nullptr}));
return registry;
};
delegate->buildRegistryFunction = buildRegistryFunction;
return instance;
}
void MainComponentsRegistry::registerNatives() {
registerHybrid({
makeNativeMethod("initHybrid", MainComponentsRegistry::initHybrid),
});
}
} // namespace react
} // namespace facebook

View File

@@ -0,0 +1,32 @@
#pragma once
#include <ComponentFactory.h>
#include <fbjni/fbjni.h>
#include <react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h>
#include <react/renderer/componentregistry/ComponentDescriptorRegistry.h>
namespace facebook {
namespace react {
class MainComponentsRegistry
: public facebook::jni::HybridClass<MainComponentsRegistry> {
public:
// Adapt it to the package you used for your Java class.
constexpr static auto kJavaDescriptor =
"Lcom/bigbluebuttontablet/newarchitecture/components/MainComponentsRegistry;";
static void registerNatives();
MainComponentsRegistry(ComponentFactory *delegate);
private:
static std::shared_ptr<ComponentDescriptorProviderRegistry const>
sharedProviderRegistry();
static jni::local_ref<jhybriddata> initHybrid(
jni::alias_ref<jclass>,
ComponentFactory *delegate);
};
} // namespace react
} // namespace facebook

View File

@@ -0,0 +1,11 @@
#include <fbjni/fbjni.h>
#include "MainApplicationTurboModuleManagerDelegate.h"
#include "MainComponentsRegistry.h"
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {
return facebook::jni::initialize(vm, [] {
facebook::react::MainApplicationTurboModuleManagerDelegate::
registerNatives();
facebook::react::MainComponentsRegistry::registerNatives();
});
}

View File

@@ -1,9 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2014 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -15,15 +18,19 @@
android:insetRight="@dimen/abc_edit_text_inset_horizontal_material"
android:insetTop="@dimen/abc_edit_text_inset_top_material"
android:insetBottom="@dimen/abc_edit_text_inset_bottom_material">
<selector>
<!--
This file is a copy of abc_edit_text_material (https://bit.ly/3k8fX7I).
The item below with state_pressed="false" and state_focused="false" causes a NullPointerException.
NullPointerException:tempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable(android.content.res.Resources)'
<item android:state_pressed="false" android:state_focused="false" android:drawable="@drawable/abc_textfield_default_mtrl_alpha"/>
For more info, see https://bit.ly/3CdLStv (react-native/pull/29452) and https://bit.ly/3nxOMoR.
-->
<item android:state_enabled="false" android:drawable="@drawable/abc_textfield_default_mtrl_alpha"/>
<item android:drawable="@drawable/abc_textfield_activated_mtrl_alpha"/>
</selector>
</inset>
</inset>

View File

@@ -1,3 +1,3 @@
<resources>
<string name="app_name">BigBlueButton</string>
<string name="app_name">航通训练</string>
</resources>

View File

@@ -4,6 +4,12 @@
<style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
<!-- Customize your theme here. -->
<item name="android:editTextBackground">@drawable/rn_edit_text_material</item>
<item name="android:windowNoTitle" >true</item>
<item name="android:windowFullscreen" >true</item>
</style>
<style name="FullScreen">
<item name="android:windowNoTitle" >true</item>
<item name="android:windowFullscreen" >true</item>
</style>
</resources>

View File

@@ -1,19 +1,30 @@
import org.apache.tools.ant.taskdefs.condition.Os
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext {
buildToolsVersion = "30.0.2"
buildToolsVersion = "31.0.0"
minSdkVersion = 21
compileSdkVersion = 30
targetSdkVersion = 30
ndkVersion = "21.4.7075529"
compileSdkVersion = 31
targetSdkVersion = 31
if (System.properties['os.arch'] == "aarch64") {
// For M1 Users we need to use the NDK 24 which added support for aarch64
ndkVersion = "24.0.8215888"
} else {
// Otherwise we default to the side-by-side NDK version from AGP.
ndkVersion = "21.4.7075529"
}
}
repositories {
google()
mavenCentral()
}
dependencies {
classpath("com.android.tools.build:gradle:4.2.2")
classpath("com.android.tools.build:gradle:7.1.1")
classpath("com.facebook.react:react-native-gradle-plugin")
classpath("de.undercouch:gradle-download-task:5.0.1")
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}

View File

@@ -9,8 +9,8 @@
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx1024m -XX:MaxPermSize=256m
# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
# Default value: -Xmx512m -XX:MaxMetaspaceSize=256m
org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
@@ -25,4 +25,16 @@ android.useAndroidX=true
android.enableJetifier=true
# Version of flipper SDK to use with React Native
FLIPPER_VERSION=0.99.0
FLIPPER_VERSION=0.125.0
# Use this property to specify which architecture you want to build.
# You can also override it from the CLI using
# ./gradlew <task> -PreactNativeArchitectures=x86_64
reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64
# Use this property to enable support to the new architecture.
# This will allow you to use TurboModules and the Fabric render in
# your application. You should enable this flag either if you want
# to write custom TurboModules/Fabric components OR use libraries that
# are providing them.
newArchEnabled=false

Binary file not shown.

View File

@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

269
android/gradlew vendored
View File

@@ -1,7 +1,7 @@
#!/usr/bin/env sh
#!/bin/sh
#
# Copyright 2015 the original author or authors.
# Copyright © 2015-2021 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -17,67 +17,101 @@
#
##############################################################################
##
## Gradle start up script for UN*X
##
#
# Gradle start up script for POSIX generated by Gradle.
#
# Important for running:
#
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
# noncompliant, but you have some other compliant shell such as ksh or
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
# * functions;
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
# * compound commands having a testable exit status, especially «case»;
# * various built-in commands including «command», «set», and «ulimit».
#
# Important for patching:
#
# (2) This script targets any POSIX shell, so it avoids extensions provided
# by Bash, Ksh, etc; in particular arrays are avoided.
#
# The "traditional" practice of packing multiple parameters into a
# space-separated string is a well documented source of bugs and security
# problems, so this is (mostly) avoided, by progressively accumulating
# options in "$@", and eventually passing that to Java.
#
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
# see the in-line comments for details.
#
# There are tweaks for specific operating systems such as AIX, CygWin,
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
#
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
app_path=$0
# Need this for daisy-chained symlinks.
while
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
[ -h "$app_path" ]
do
ls=$( ls -ld "$app_path" )
link=${ls#*' -> '}
case $link in #(
/*) app_path=$link ;; #(
*) app_path=$APP_HOME$link ;;
esac
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
APP_BASE_NAME=${0##*/}
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
MAX_FD=maximum
warn () {
echo "$*"
}
} >&2
die () {
echo
echo "$*"
echo
exit 1
}
} >&2
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
NONSTOP* )
nonstop=true
;;
case "$( uname )" in #(
CYGWIN* ) cygwin=true ;; #(
Darwin* ) darwin=true ;; #(
MSYS* | MINGW* ) msys=true ;; #(
NONSTOP* ) nonstop=true ;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
@@ -87,9 +121,9 @@ CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
JAVACMD=$JAVA_HOME/jre/sh/java
else
JAVACMD="$JAVA_HOME/bin/java"
JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
@@ -98,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD="java"
JAVACMD=java
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
@@ -106,80 +140,95 @@ location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
# For Cygwin or MSYS, switch paths to Windows format before running java
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=`expr $i + 1`
done
case $i in
0) set -- ;;
1) set -- "$args0" ;;
2) set -- "$args0" "$args1" ;;
3) set -- "$args0" "$args1" "$args2" ;;
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
fi
# Escape application args
save () {
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " "
}
APP_ARGS=`save "$@"`
# Collect all arguments for the java command, stacking in reverse order:
# * args from the command line
# * the main class name
# * -classpath
# * -D...appname settings
# * --module-path (only if needed)
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
# Now convert the arguments - kludge to limit ourselves to /bin/sh
for arg do
if
case $arg in #(
-*) false ;; # don't mess with options #(
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
[ -e "$t" ] ;; #(
*) false ;;
esac
then
arg=$( cygpath --path --ignore --mixed "$arg" )
fi
# Roll the args list around exactly as many times as the number of
# args, so each arg winds up back in the position where it started, but
# possibly modified.
#
# NB: a `for` loop captures its iteration list before it begins, so
# changing the positional parameters here affects neither the number of
# iterations, nor the values presented in `arg`.
shift # remove old arg
set -- "$@" "$arg" # push replacement arg
done
fi
# Collect all arguments for the java command;
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
# shell script including quotes and variable substitutions, so put them in
# double quotes to make sure that they get re-expanded; and
# * put everything else in single quotes, so that it's not re-expanded.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
org.gradle.wrapper.GradleWrapperMain \
"$@"
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
# set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#
eval "set -- $(
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
xargs -n1 |
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
tr '\n' ' '
)" '"$@"'
exec "$JAVACMD" "$@"

View File

@@ -1,3 +1,11 @@
rootProject.name = 'BigBlueButton'
rootProject.name = 'BigBlueButtonTablet'
apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings)
include ':app'
includeBuild('../node_modules/react-native-gradle-plugin')
if (settings.hasProperty("newArchEnabled") && settings.newArchEnabled == "true") {
include(":ReactAndroid")
project(":ReactAndroid").projectDir = file('../node_modules/react-native/ReactAndroid')
include(":ReactAndroid:hermes-engine")
project(":ReactAndroid:hermes-engine").projectDir = file('../node_modules/react-native/ReactAndroid/hermes-engine')
}

View File

@@ -1,4 +1,4 @@
{
"name": "BigBlueButton",
"displayName": "BigBlueButton"
"name": "BigBlueButtonTablet",
"displayName": "BigBlueButton Tablet"
}

View File

@@ -1,3 +1,6 @@
module.exports = {
presets: ['module:metro-react-native-babel-preset'],
plugins: [
'react-native-reanimated/plugin',
]
};

1
bash-intel.sh Executable file
View File

@@ -0,0 +1 @@
env /usr/bin/arch -arm64 /bin/bash --login

11
ios/.xcode.env Normal file
View File

@@ -0,0 +1,11 @@
# This `.xcode.env` file is versioned and is used to source the environment
# used when running script phases inside Xcode.
# To customize your local environment, you can create an `.xcode.env.local`
# file that is not versioned.
# NODE_BINARY variable contains the PATH to the node executable.
#
# Customize the NODE_BINARY variable here.
# For example, to use nvm with brew, add the following line
# . "$(brew --prefix nvm)/nvm.sh" --no-use
export NODE_BINARY=$(command -v node)

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.application-groups</key>
<array>
<string>group.org.bigbluebutton.tablet</string>
</array>
</dict>
</plist>

View File

@@ -1,5 +1,16 @@
import bigbluebutton_mobile_sdk_common
//
// SampleHandler.swift
// BigBlueButton Broadcast
//
// Created by Tiago Daniel Jacobs on 22/08/22.
//
class SampleHandler: BBBSampleHandler {
import ReplayKit
import bigbluebutton_tablet_sdk_broadcast_upload_extension
class SampleHandler:BBBSampleHandler{
override func broadcastStarted(withSetupInfo setupInfo: [String : NSObject]?) {
super.setAppGroupName(appGroupName: Constants.appGroupName)
super.broadcastStarted(withSetupInfo: setupInfo)
}
}

View File

@@ -0,0 +1,11 @@
//
// Use this file to import your target's public headers that you would like to expose to Swift.
//
#import <React/RCTBridgeModule.h>
#import <React/RCTBridge.h>
#import <React/RCTEventDispatcher.h>
#import <React/RCTRootView.h>
#import <React/RCTUtils.h>
#import <React/RCTConvert.h>
#import <React/RCTBundleURLProvider.h>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.application-groups</key>
<array>
<string>group.org.bigbluebutton.tablet</string>
</array>
</dict>
</plist>

View File

@@ -15,9 +15,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
BuildableName = "BigBlueButton.app"
BlueprintName = "BigBlueButton"
ReferencedContainer = "container:BigBlueButton.xcodeproj">
BuildableName = "BigBlueButton Tablet.app"
BlueprintName = "BigBlueButton Tablet"
ReferencedContainer = "container:BigBlueButton Tablet.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
@@ -33,15 +33,15 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "00E356ED1AD99517003FC87E"
BuildableName = "BigBlueButtonTests.xctest"
BlueprintName = "BigBlueButtonTests"
ReferencedContainer = "container:BigBlueButton.xcodeproj">
BuildableName = "BigBlueButton TabletTests.xctest"
BlueprintName = "BigBlueButton TabletTests"
ReferencedContainer = "container:BigBlueButton Tablet.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
buildConfiguration = "Release"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
@@ -55,9 +55,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
BuildableName = "BigBlueButton.app"
BlueprintName = "BigBlueButton"
ReferencedContainer = "container:BigBlueButton.xcodeproj">
BuildableName = "BigBlueButton Tablet.app"
BlueprintName = "BigBlueButton Tablet"
ReferencedContainer = "container:BigBlueButton Tablet.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</LaunchAction>
@@ -72,9 +72,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
BuildableName = "BigBlueButton.app"
BlueprintName = "BigBlueButton"
ReferencedContainer = "container:BigBlueButton.xcodeproj">
BuildableName = "BigBlueButton Tablet.app"
BlueprintName = "BigBlueButton Tablet"
ReferencedContainer = "container:BigBlueButton Tablet.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>

View File

@@ -2,7 +2,7 @@
<Workspace
version = "1.0">
<FileRef
location = "group:BigBlueButton.xcodeproj">
location = "group:BigBlueButton Tablet.xcodeproj">
</FileRef>
<FileRef
location = "group:Pods/Pods.xcodeproj">

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

View File

@@ -1,8 +0,0 @@
#import <React/RCTBridgeDelegate.h>
#import <UIKit/UIKit.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate, RCTBridgeDelegate>
@property (nonatomic, strong) UIWindow *window;
@end

View File

@@ -1,62 +0,0 @@
#import "AppDelegate.h"
#import <React/RCTBridge.h>
#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>
#ifdef FB_SONARKIT_ENABLED
#import <FlipperKit/FlipperClient.h>
#import <FlipperKitLayoutPlugin/FlipperKitLayoutPlugin.h>
#import <FlipperKitUserDefaultsPlugin/FKUserDefaultsPlugin.h>
#import <FlipperKitNetworkPlugin/FlipperKitNetworkPlugin.h>
#import <SKIOSNetworkPlugin/SKIOSNetworkAdapter.h>
#import <FlipperKitReactPlugin/FlipperKitReactPlugin.h>
static void InitializeFlipper(UIApplication *application) {
FlipperClient *client = [FlipperClient sharedClient];
SKDescriptorMapper *layoutDescriptorMapper = [[SKDescriptorMapper alloc] initWithDefaults];
[client addPlugin:[[FlipperKitLayoutPlugin alloc] initWithRootNode:application withDescriptorMapper:layoutDescriptorMapper]];
[client addPlugin:[[FKUserDefaultsPlugin alloc] initWithSuiteName:nil]];
[client addPlugin:[FlipperKitReactPlugin new]];
[client addPlugin:[[FlipperKitNetworkPlugin alloc] initWithNetworkAdapter:[SKIOSNetworkAdapter new]]];
[client start];
}
#endif
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
#ifdef FB_SONARKIT_ENABLED
InitializeFlipper(application);
#endif
RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
moduleName:@"BigBlueButton"
initialProperties:nil];
if (@available(iOS 13.0, *)) {
rootView.backgroundColor = [UIColor systemBackgroundColor];
} else {
rootView.backgroundColor = [UIColor whiteColor];
}
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
UIViewController *rootViewController = [UIViewController new];
rootViewController.view = rootView;
self.window.rootViewController = rootViewController;
[self.window makeKeyAndVisible];
return YES;
}
- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
{
#if DEBUG
return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
#else
return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
#endif
}
@end

View File

@@ -1,38 +0,0 @@
{
"images" : [
{
"idiom" : "iphone",
"size" : "29x29",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "29x29",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "40x40",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "40x40",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "60x60",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "60x60",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

View File

@@ -1,6 +0,0 @@
{
"info" : {
"version" : 1,
"author" : "xcode"
}
}

View File

@@ -1,9 +0,0 @@
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
int main(int argc, char * argv[]) {
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}

View File

@@ -0,0 +1,55 @@
//
// AppDelegate.swift
//
// Created by Tiago Daniel Jacobs on 11/03/22.
//
import UIKit
import bigbluebutton_tablet_sdk
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, RCTBridgeDelegate {
var window: UIWindow?
var bridge: RCTBridge!
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
bridge = RCTBridge(delegate: self, launchOptions: launchOptions)
let rootView = RCTRootView(bridge: bridge!, moduleName: Bundle.main.infoDictionary![kCFBundleNameKey as String] as! String, initialProperties: nil)
if #available(iOS 13.0, *) {
rootView.backgroundColor = .systemBackground
} else {
rootView.backgroundColor = .white
}
let rootViewController = UIViewController()
rootViewController.view = rootView
self.window = UIWindow(frame: UIScreen.main.bounds)
self.window?.rootViewController = rootViewController
self.window?.makeKeyAndVisible()
BigBlueButtonSDK.initialize(broadcastExtensionBundleId: Constants.broadcastExtensionBundleId, appGroupName: Constants.appGroupName)
return true
}
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
BigBlueButtonSDK.handleDeepLink(app, open: url, options: options)
return true
}
func applicationWillTerminate(_ application: UIApplication) {
BigBlueButtonSDK.onAppTerminated()
}
func sourceURL(for bridge: RCTBridge!) -> URL! {
//#if DEBUG
return RCTBundleURLProvider.sharedSettings().jsBundleURL(forBundleRoot: "index")
//#else
// let mainBundle = Bundle.main
// return mainBundle.url(forResource: "main", withExtension: "jsbundle")!
//#endif
}
}

View File

@@ -0,0 +1,10 @@
import Foundation
class Constants {
// This is used to filter the list of broadcast applications offered to the user (it must match with bundle id of the broadcast extension target)
public static var broadcastExtensionBundleId="org.bigbluebutton.tablet.BigBlueButton-Broadcast";
// This is used to allow both applications (main and broadcast) to share information
public static var appGroupName="group.org.bigbluebutton.tablet";
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

View File

@@ -0,0 +1,158 @@
{
"images" : [
{
"filename" : "40.png",
"idiom" : "iphone",
"scale" : "2x",
"size" : "20x20"
},
{
"filename" : "60.png",
"idiom" : "iphone",
"scale" : "3x",
"size" : "20x20"
},
{
"filename" : "29.png",
"idiom" : "iphone",
"scale" : "1x",
"size" : "29x29"
},
{
"filename" : "58.png",
"idiom" : "iphone",
"scale" : "2x",
"size" : "29x29"
},
{
"filename" : "87.png",
"idiom" : "iphone",
"scale" : "3x",
"size" : "29x29"
},
{
"filename" : "80.png",
"idiom" : "iphone",
"scale" : "2x",
"size" : "40x40"
},
{
"filename" : "120.png",
"idiom" : "iphone",
"scale" : "3x",
"size" : "40x40"
},
{
"filename" : "57.png",
"idiom" : "iphone",
"scale" : "1x",
"size" : "57x57"
},
{
"filename" : "114.png",
"idiom" : "iphone",
"scale" : "2x",
"size" : "57x57"
},
{
"filename" : "120.png",
"idiom" : "iphone",
"scale" : "2x",
"size" : "60x60"
},
{
"filename" : "180.png",
"idiom" : "iphone",
"scale" : "3x",
"size" : "60x60"
},
{
"filename" : "20.png",
"idiom" : "ipad",
"scale" : "1x",
"size" : "20x20"
},
{
"filename" : "40.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "20x20"
},
{
"filename" : "29.png",
"idiom" : "ipad",
"scale" : "1x",
"size" : "29x29"
},
{
"filename" : "58.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "29x29"
},
{
"filename" : "40.png",
"idiom" : "ipad",
"scale" : "1x",
"size" : "40x40"
},
{
"filename" : "80.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "40x40"
},
{
"filename" : "50.png",
"idiom" : "ipad",
"scale" : "1x",
"size" : "50x50"
},
{
"filename" : "100.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "50x50"
},
{
"filename" : "72.png",
"idiom" : "ipad",
"scale" : "1x",
"size" : "72x72"
},
{
"filename" : "144.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "72x72"
},
{
"filename" : "76.png",
"idiom" : "ipad",
"scale" : "1x",
"size" : "76x76"
},
{
"filename" : "152.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "76x76"
},
{
"filename" : "167.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "83.5x83.5"
},
{
"filename" : "1024.png",
"idiom" : "ios-marketing",
"scale" : "1x",
"size" : "1024x1024"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -0,0 +1,44 @@
{
"images" : [
{
"filename" : "Icon-20x20@1x.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "Icon-20x20@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "Icon-20x20@3x.png",
"idiom" : "universal",
"scale" : "3x"
},
{
"filename" : "Icon-20x20@1x 1.png",
"idiom" : "universal",
"locale" : "pt-BR",
"scale" : "1x"
},
{
"filename" : "Icon-20x20@2x 1.png",
"idiom" : "universal",
"locale" : "pt-BR",
"scale" : "2x"
},
{
"filename" : "Icon-20x20@3x 1.png",
"idiom" : "universal",
"locale" : "pt-BR",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
},
"properties" : {
"localizable" : true
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

@@ -5,7 +5,7 @@
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleDisplayName</key>
<string>BigBlueButton</string>
<string>BigBlueButtonTablet</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
@@ -17,23 +17,38 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<string>$(MARKETING_VERSION)</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>CFBundleURLName</key>
<string>org.bigbluebutton.tablet</string>
<key>CFBundleURLSchemes</key>
<array>
<string>bigbluebutton-tablet</string>
</array>
</dict>
</array>
<key>CFBundleVersion</key>
<string>1</string>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<false/>
</dict>
</dict>
<key>NSLocationWhenInUseUsageDescription</key>
<string></string>
<dict/>
<key>NSCameraUsageDescription</key>
<string>BigBlueButton captures your camera if you share your webcam during a meeting</string>
<key>NSMicrophoneUsageDescription</key>
<string>BigBlueButton captures your microphone if you join in full audio mode</string>
<key>UIBackgroundModes</key>
<array>
<string>audio</string>
</array>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIRequiredDeviceCapabilities</key>
@@ -42,9 +57,10 @@
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>

View File

@@ -1,10 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15702" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<device id="retina4_7" orientation="portrait" appearance="light"/>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="21223" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15704"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21204"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="System colors in document resources" minToolsVersion="11.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
@@ -13,21 +12,22 @@
<objects>
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="BigBlueButton" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="GJd-Yh-RWb">
<rect key="frame" x="0.0" y="202" width="375" height="43"/>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="BigBlueButton Tablet" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="GJd-Yh-RWb">
<rect key="frame" x="0.0" y="180" width="600" height="43"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="36"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Powered by React Native" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="MN2-I3-ftu">
<rect key="frame" x="0.0" y="626" width="375" height="21"/>
<rect key="frame" x="0.0" y="559" width="600" height="21"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<viewLayoutGuide key="safeArea" id="Bcu-3y-fUS"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints>
<constraint firstItem="Bcu-3y-fUS" firstAttribute="bottom" secondItem="MN2-I3-ftu" secondAttribute="bottom" constant="20" id="OZV-Vh-mqD"/>
<constraint firstItem="Bcu-3y-fUS" firstAttribute="centerX" secondItem="GJd-Yh-RWb" secondAttribute="centerX" id="Q3B-4B-g5h"/>
@@ -36,7 +36,6 @@
<constraint firstItem="GJd-Yh-RWb" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="bottom" multiplier="1/3" constant="1" id="moa-c2-u7t"/>
<constraint firstItem="GJd-Yh-RWb" firstAttribute="leading" secondItem="Bcu-3y-fUS" secondAttribute="leading" symbolic="YES" id="x7j-FC-K8j"/>
</constraints>
<viewLayoutGuide key="safeArea" id="Bcu-3y-fUS"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
@@ -44,4 +43,9 @@
<point key="canvasLocation" x="52.173913043478265" y="375"/>
</scene>
</scenes>
<resources>
<systemColor name="systemBackgroundColor">
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</systemColor>
</resources>
</document>

View File

@@ -7,13 +7,13 @@
#define TIMEOUT_SECONDS 600
#define TEXT_TO_LOOK_FOR @"Welcome to React"
@interface BigBlueButtonTests : XCTestCase
@interface BigBlueButtonTabletTests : XCTestCase
@end
@implementation BigBlueButtonTests
@implementation BigBlueButtonTabletTests
- (BOOL)findSubviewInView:(UIView *)view matching:(BOOL(^)(UIView *view))test
- (BOOL)findSubviewInView:(UIView *)view matching:(BOOL (^)(UIView *view))test
{
if (test(view)) {
return YES;
@@ -34,23 +34,25 @@
__block NSString *redboxError = nil;
#ifdef DEBUG
RCTSetLogFunction(^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) {
if (level >= RCTLogLevelError) {
redboxError = message;
}
});
RCTSetLogFunction(
^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) {
if (level >= RCTLogLevelError) {
redboxError = message;
}
});
#endif
while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) {
[[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
[[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
foundElement = [self findSubviewInView:vc.view matching:^BOOL(UIView *view) {
if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) {
return YES;
}
return NO;
}];
foundElement = [self findSubviewInView:vc.view
matching:^BOOL(UIView *view) {
if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) {
return YES;
}
return NO;
}];
}
#ifdef DEBUG
@@ -61,5 +63,4 @@
XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS);
}
@end

View File

@@ -2,33 +2,69 @@ require_relative '../node_modules/react-native/scripts/react_native_pods'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
platform :ios, '14.7'
install! 'cocoapods', :deterministic_uuids => false
production = ENV["PRODUCTION"] == "1"
target 'BigBlueButton Broadcast' do
pod 'bigbluebutton-mobile-sdk-common', :path => '../node_modules/bigbluebutton-mobile-sdk/common'
pod 'bigbluebutton-tablet-sdk-common', :path => '../node_modules/bigbluebutton-tablet-sdk/ios-common'
pod 'bigbluebutton-tablet-sdk-broadcast-upload-extension', :path => '../node_modules/bigbluebutton-tablet-sdk/ios-broadcast-upload-extension'
end
target 'BigBlueButton' do
target 'BigBlueButton TabletTests' do
inherit! :complete
# Pods for testing
end
target 'BigBlueButton Tablet' do
pod 'bigbluebutton-tablet-sdk-common', :path => '../node_modules/bigbluebutton-tablet-sdk/ios-common'
config = use_native_modules!
# Flags change depending on the env values.
flags = get_default_flags()
use_react_native!(
:path => config[:reactNativePath],
# to enable hermes on iOS, change `false` to `true` and then install pods
:hermes_enabled => false
:production => production,
:hermes_enabled => flags[:hermes_enabled],
:fabric_enabled => flags[:fabric_enabled],
:flipper_configuration => FlipperConfiguration.enabled,
# An absolute path to your application root.
:app_path => "#{Pod::Config.instance.installation_root}/.."
)
target 'BigBlueButtonTests' do
inherit! :complete
# Pods for testing
end
# Enables Flipper.
#
# Note that if you have use_frameworks! enabled, Flipper will not work and
# you should disable the next line.
#use_flipper!()
post_install do |installer|
react_native_post_install(installer)
__apply_Xcode_12_5_M1_post_install_workaround(installer)
# https://github.com/CocoaPods/CocoaPods/issues/11402#issuecomment-1188774894
# Get main project development team id
dev_team = ""
project = installer.aggregate_targets[0].user_project
project.targets.each do |target|
target.build_configurations.each do |config|
if dev_team.empty? and !config.build_settings['DEVELOPMENT_TEAM'].nil?
dev_team = config.build_settings['DEVELOPMENT_TEAM']
end
end
end
# Fix bundle targets' 'Signing Certificate' to 'Sign to Run Locally'
installer.pods_project.targets.each do |target|
if target.respond_to?(:product_type) and target.product_type == "com.apple.product-type.bundle"
target.build_configurations.each do |config|
config.build_settings['DEVELOPMENT_TEAM'] = dev_team
end
end
end
#end of https://github.com/CocoaPods/CocoaPods/issues/11402#issuecomment-1188774894
# https://stackoverflow.com/a/32685434
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['ENABLE_BITCODE'] = 'NO'
end
end
# end of https://stackoverflow.com/a/32685434
end
end

View File

@@ -1,21 +1,88 @@
PODS:
- bigbluebutton-mobile-sdk (0.1.6):
- bigbluebutton-tablet-sdk (0.1.35):
- bigbluebutton-tablet-sdk-common
- React-Core
- bigbluebutton-tablet-sdk-broadcast-upload-extension (0.1.35):
- bigbluebutton-tablet-sdk-common
- WebRTC-lib
- bigbluebutton-mobile-sdk-common (0.1.6):
- bigbluebutton-tablet-sdk-common (0.1.35):
- WebRTC-lib
- boost (1.76.0)
- CocoaAsyncSocket (7.6.5)
- DoubleConversion (1.1.6)
- FBLazyVector (0.67.2)
- FBReactNativeSpec (0.67.2):
- FBLazyVector (0.69.4)
- FBReactNativeSpec (0.69.4):
- RCT-Folly (= 2021.06.28.00-v2)
- RCTRequired (= 0.67.2)
- RCTTypeSafety (= 0.67.2)
- React-Core (= 0.67.2)
- React-jsi (= 0.67.2)
- ReactCommon/turbomodule/core (= 0.67.2)
- RCTRequired (= 0.69.4)
- RCTTypeSafety (= 0.69.4)
- React-Core (= 0.69.4)
- React-jsi (= 0.69.4)
- ReactCommon/turbomodule/core (= 0.69.4)
- Flipper (0.125.0):
- Flipper-Folly (~> 2.6)
- Flipper-RSocket (~> 1.4)
- Flipper-Boost-iOSX (1.76.0.1.11)
- Flipper-DoubleConversion (3.2.0.1)
- Flipper-Fmt (7.1.7)
- Flipper-Folly (2.6.10):
- Flipper-Boost-iOSX
- Flipper-DoubleConversion
- Flipper-Fmt (= 7.1.7)
- Flipper-Glog
- libevent (~> 2.1.12)
- OpenSSL-Universal (= 1.1.1100)
- Flipper-Glog (0.5.0.5)
- Flipper-PeerTalk (0.0.4)
- Flipper-RSocket (1.4.3):
- Flipper-Folly (~> 2.6)
- FlipperKit (0.125.0):
- FlipperKit/Core (= 0.125.0)
- FlipperKit/Core (0.125.0):
- Flipper (~> 0.125.0)
- FlipperKit/CppBridge
- FlipperKit/FBCxxFollyDynamicConvert
- FlipperKit/FBDefines
- FlipperKit/FKPortForwarding
- SocketRocket (~> 0.6.0)
- FlipperKit/CppBridge (0.125.0):
- Flipper (~> 0.125.0)
- FlipperKit/FBCxxFollyDynamicConvert (0.125.0):
- Flipper-Folly (~> 2.6)
- FlipperKit/FBDefines (0.125.0)
- FlipperKit/FKPortForwarding (0.125.0):
- CocoaAsyncSocket (~> 7.6)
- Flipper-PeerTalk (~> 0.0.4)
- FlipperKit/FlipperKitHighlightOverlay (0.125.0)
- FlipperKit/FlipperKitLayoutHelpers (0.125.0):
- FlipperKit/Core
- FlipperKit/FlipperKitHighlightOverlay
- FlipperKit/FlipperKitLayoutTextSearchable
- FlipperKit/FlipperKitLayoutIOSDescriptors (0.125.0):
- FlipperKit/Core
- FlipperKit/FlipperKitHighlightOverlay
- FlipperKit/FlipperKitLayoutHelpers
- YogaKit (~> 1.18)
- FlipperKit/FlipperKitLayoutPlugin (0.125.0):
- FlipperKit/Core
- FlipperKit/FlipperKitHighlightOverlay
- FlipperKit/FlipperKitLayoutHelpers
- FlipperKit/FlipperKitLayoutIOSDescriptors
- FlipperKit/FlipperKitLayoutTextSearchable
- YogaKit (~> 1.18)
- FlipperKit/FlipperKitLayoutTextSearchable (0.125.0)
- FlipperKit/FlipperKitNetworkPlugin (0.125.0):
- FlipperKit/Core
- FlipperKit/FlipperKitReactPlugin (0.125.0):
- FlipperKit/Core
- FlipperKit/FlipperKitUserDefaultsPlugin (0.125.0):
- FlipperKit/Core
- FlipperKit/SKIOSNetworkPlugin (0.125.0):
- FlipperKit/Core
- FlipperKit/FlipperKitNetworkPlugin
- fmt (6.2.1)
- glog (0.3.5)
- libevent (2.1.12)
- OpenSSL-Universal (1.1.1100)
- RCT-Folly (2021.06.28.00-v2):
- boost
- DoubleConversion
@@ -27,276 +94,362 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- RCTRequired (0.67.2)
- RCTTypeSafety (0.67.2):
- FBLazyVector (= 0.67.2)
- RCTRequired (0.69.4)
- RCTTypeSafety (0.69.4):
- FBLazyVector (= 0.69.4)
- RCTRequired (= 0.69.4)
- React-Core (= 0.69.4)
- React (0.69.4):
- React-Core (= 0.69.4)
- React-Core/DevSupport (= 0.69.4)
- React-Core/RCTWebSocket (= 0.69.4)
- React-RCTActionSheet (= 0.69.4)
- React-RCTAnimation (= 0.69.4)
- React-RCTBlob (= 0.69.4)
- React-RCTImage (= 0.69.4)
- React-RCTLinking (= 0.69.4)
- React-RCTNetwork (= 0.69.4)
- React-RCTSettings (= 0.69.4)
- React-RCTText (= 0.69.4)
- React-RCTVibration (= 0.69.4)
- React-bridging (0.69.4):
- RCT-Folly (= 2021.06.28.00-v2)
- RCTRequired (= 0.67.2)
- React-Core (= 0.67.2)
- React (0.67.2):
- React-Core (= 0.67.2)
- React-Core/DevSupport (= 0.67.2)
- React-Core/RCTWebSocket (= 0.67.2)
- React-RCTActionSheet (= 0.67.2)
- React-RCTAnimation (= 0.67.2)
- React-RCTBlob (= 0.67.2)
- React-RCTImage (= 0.67.2)
- React-RCTLinking (= 0.67.2)
- React-RCTNetwork (= 0.67.2)
- React-RCTSettings (= 0.67.2)
- React-RCTText (= 0.67.2)
- React-RCTVibration (= 0.67.2)
- React-callinvoker (0.67.2)
- React-Core (0.67.2):
- React-jsi (= 0.69.4)
- React-callinvoker (0.69.4)
- React-Codegen (0.69.4):
- FBReactNativeSpec (= 0.69.4)
- RCT-Folly (= 2021.06.28.00-v2)
- RCTRequired (= 0.69.4)
- RCTTypeSafety (= 0.69.4)
- React-Core (= 0.69.4)
- React-jsi (= 0.69.4)
- React-jsiexecutor (= 0.69.4)
- ReactCommon/turbomodule/core (= 0.69.4)
- React-Core (0.69.4):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default (= 0.67.2)
- React-cxxreact (= 0.67.2)
- React-jsi (= 0.67.2)
- React-jsiexecutor (= 0.67.2)
- React-perflogger (= 0.67.2)
- React-Core/Default (= 0.69.4)
- React-cxxreact (= 0.69.4)
- React-jsi (= 0.69.4)
- React-jsiexecutor (= 0.69.4)
- React-perflogger (= 0.69.4)
- Yoga
- React-Core/CoreModulesHeaders (0.67.2):
- React-Core/CoreModulesHeaders (0.69.4):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default
- React-cxxreact (= 0.67.2)
- React-jsi (= 0.67.2)
- React-jsiexecutor (= 0.67.2)
- React-perflogger (= 0.67.2)
- React-cxxreact (= 0.69.4)
- React-jsi (= 0.69.4)
- React-jsiexecutor (= 0.69.4)
- React-perflogger (= 0.69.4)
- Yoga
- React-Core/Default (0.67.2):
- React-Core/Default (0.69.4):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-cxxreact (= 0.67.2)
- React-jsi (= 0.67.2)
- React-jsiexecutor (= 0.67.2)
- React-perflogger (= 0.67.2)
- React-cxxreact (= 0.69.4)
- React-jsi (= 0.69.4)
- React-jsiexecutor (= 0.69.4)
- React-perflogger (= 0.69.4)
- Yoga
- React-Core/DevSupport (0.67.2):
- React-Core/DevSupport (0.69.4):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default (= 0.67.2)
- React-Core/RCTWebSocket (= 0.67.2)
- React-cxxreact (= 0.67.2)
- React-jsi (= 0.67.2)
- React-jsiexecutor (= 0.67.2)
- React-jsinspector (= 0.67.2)
- React-perflogger (= 0.67.2)
- React-Core/Default (= 0.69.4)
- React-Core/RCTWebSocket (= 0.69.4)
- React-cxxreact (= 0.69.4)
- React-jsi (= 0.69.4)
- React-jsiexecutor (= 0.69.4)
- React-jsinspector (= 0.69.4)
- React-perflogger (= 0.69.4)
- Yoga
- React-Core/RCTActionSheetHeaders (0.67.2):
- React-Core/RCTActionSheetHeaders (0.69.4):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default
- React-cxxreact (= 0.67.2)
- React-jsi (= 0.67.2)
- React-jsiexecutor (= 0.67.2)
- React-perflogger (= 0.67.2)
- React-cxxreact (= 0.69.4)
- React-jsi (= 0.69.4)
- React-jsiexecutor (= 0.69.4)
- React-perflogger (= 0.69.4)
- Yoga
- React-Core/RCTAnimationHeaders (0.67.2):
- React-Core/RCTAnimationHeaders (0.69.4):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default
- React-cxxreact (= 0.67.2)
- React-jsi (= 0.67.2)
- React-jsiexecutor (= 0.67.2)
- React-perflogger (= 0.67.2)
- React-cxxreact (= 0.69.4)
- React-jsi (= 0.69.4)
- React-jsiexecutor (= 0.69.4)
- React-perflogger (= 0.69.4)
- Yoga
- React-Core/RCTBlobHeaders (0.67.2):
- React-Core/RCTBlobHeaders (0.69.4):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default
- React-cxxreact (= 0.67.2)
- React-jsi (= 0.67.2)
- React-jsiexecutor (= 0.67.2)
- React-perflogger (= 0.67.2)
- React-cxxreact (= 0.69.4)
- React-jsi (= 0.69.4)
- React-jsiexecutor (= 0.69.4)
- React-perflogger (= 0.69.4)
- Yoga
- React-Core/RCTImageHeaders (0.67.2):
- React-Core/RCTImageHeaders (0.69.4):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default
- React-cxxreact (= 0.67.2)
- React-jsi (= 0.67.2)
- React-jsiexecutor (= 0.67.2)
- React-perflogger (= 0.67.2)
- React-cxxreact (= 0.69.4)
- React-jsi (= 0.69.4)
- React-jsiexecutor (= 0.69.4)
- React-perflogger (= 0.69.4)
- Yoga
- React-Core/RCTLinkingHeaders (0.67.2):
- React-Core/RCTLinkingHeaders (0.69.4):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default
- React-cxxreact (= 0.67.2)
- React-jsi (= 0.67.2)
- React-jsiexecutor (= 0.67.2)
- React-perflogger (= 0.67.2)
- React-cxxreact (= 0.69.4)
- React-jsi (= 0.69.4)
- React-jsiexecutor (= 0.69.4)
- React-perflogger (= 0.69.4)
- Yoga
- React-Core/RCTNetworkHeaders (0.67.2):
- React-Core/RCTNetworkHeaders (0.69.4):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default
- React-cxxreact (= 0.67.2)
- React-jsi (= 0.67.2)
- React-jsiexecutor (= 0.67.2)
- React-perflogger (= 0.67.2)
- React-cxxreact (= 0.69.4)
- React-jsi (= 0.69.4)
- React-jsiexecutor (= 0.69.4)
- React-perflogger (= 0.69.4)
- Yoga
- React-Core/RCTSettingsHeaders (0.67.2):
- React-Core/RCTSettingsHeaders (0.69.4):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default
- React-cxxreact (= 0.67.2)
- React-jsi (= 0.67.2)
- React-jsiexecutor (= 0.67.2)
- React-perflogger (= 0.67.2)
- React-cxxreact (= 0.69.4)
- React-jsi (= 0.69.4)
- React-jsiexecutor (= 0.69.4)
- React-perflogger (= 0.69.4)
- Yoga
- React-Core/RCTTextHeaders (0.67.2):
- React-Core/RCTTextHeaders (0.69.4):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default
- React-cxxreact (= 0.67.2)
- React-jsi (= 0.67.2)
- React-jsiexecutor (= 0.67.2)
- React-perflogger (= 0.67.2)
- React-cxxreact (= 0.69.4)
- React-jsi (= 0.69.4)
- React-jsiexecutor (= 0.69.4)
- React-perflogger (= 0.69.4)
- Yoga
- React-Core/RCTVibrationHeaders (0.67.2):
- React-Core/RCTVibrationHeaders (0.69.4):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default
- React-cxxreact (= 0.67.2)
- React-jsi (= 0.67.2)
- React-jsiexecutor (= 0.67.2)
- React-perflogger (= 0.67.2)
- React-cxxreact (= 0.69.4)
- React-jsi (= 0.69.4)
- React-jsiexecutor (= 0.69.4)
- React-perflogger (= 0.69.4)
- Yoga
- React-Core/RCTWebSocket (0.67.2):
- React-Core/RCTWebSocket (0.69.4):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default (= 0.67.2)
- React-cxxreact (= 0.67.2)
- React-jsi (= 0.67.2)
- React-jsiexecutor (= 0.67.2)
- React-perflogger (= 0.67.2)
- React-Core/Default (= 0.69.4)
- React-cxxreact (= 0.69.4)
- React-jsi (= 0.69.4)
- React-jsiexecutor (= 0.69.4)
- React-perflogger (= 0.69.4)
- Yoga
- React-CoreModules (0.67.2):
- FBReactNativeSpec (= 0.67.2)
- React-CoreModules (0.69.4):
- RCT-Folly (= 2021.06.28.00-v2)
- RCTTypeSafety (= 0.67.2)
- React-Core/CoreModulesHeaders (= 0.67.2)
- React-jsi (= 0.67.2)
- React-RCTImage (= 0.67.2)
- ReactCommon/turbomodule/core (= 0.67.2)
- React-cxxreact (0.67.2):
- RCTTypeSafety (= 0.69.4)
- React-Codegen (= 0.69.4)
- React-Core/CoreModulesHeaders (= 0.69.4)
- React-jsi (= 0.69.4)
- React-RCTImage (= 0.69.4)
- ReactCommon/turbomodule/core (= 0.69.4)
- React-cxxreact (0.69.4):
- boost (= 1.76.0)
- DoubleConversion
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-callinvoker (= 0.67.2)
- React-jsi (= 0.67.2)
- React-jsinspector (= 0.67.2)
- React-logger (= 0.67.2)
- React-perflogger (= 0.67.2)
- React-runtimeexecutor (= 0.67.2)
- React-jsi (0.67.2):
- React-callinvoker (= 0.69.4)
- React-jsi (= 0.69.4)
- React-jsinspector (= 0.69.4)
- React-logger (= 0.69.4)
- React-perflogger (= 0.69.4)
- React-runtimeexecutor (= 0.69.4)
- React-jsi (0.69.4):
- boost (= 1.76.0)
- DoubleConversion
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-jsi/Default (= 0.67.2)
- React-jsi/Default (0.67.2):
- React-jsi/Default (= 0.69.4)
- React-jsi/Default (0.69.4):
- boost (= 1.76.0)
- DoubleConversion
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-jsiexecutor (0.67.2):
- React-jsiexecutor (0.69.4):
- DoubleConversion
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-cxxreact (= 0.67.2)
- React-jsi (= 0.67.2)
- React-perflogger (= 0.67.2)
- React-jsinspector (0.67.2)
- React-logger (0.67.2):
- React-cxxreact (= 0.69.4)
- React-jsi (= 0.69.4)
- React-perflogger (= 0.69.4)
- React-jsinspector (0.69.4)
- React-logger (0.69.4):
- glog
- react-native-webview (11.17.2):
- react-native-safe-area-context (4.3.3):
- RCT-Folly
- RCTRequired
- RCTTypeSafety
- React-Core
- React-perflogger (0.67.2)
- React-RCTActionSheet (0.67.2):
- React-Core/RCTActionSheetHeaders (= 0.67.2)
- React-RCTAnimation (0.67.2):
- FBReactNativeSpec (= 0.67.2)
- ReactCommon/turbomodule/core
- react-native-webview (11.23.0):
- React-Core
- React-perflogger (0.69.4)
- React-RCTActionSheet (0.69.4):
- React-Core/RCTActionSheetHeaders (= 0.69.4)
- React-RCTAnimation (0.69.4):
- RCT-Folly (= 2021.06.28.00-v2)
- RCTTypeSafety (= 0.67.2)
- React-Core/RCTAnimationHeaders (= 0.67.2)
- React-jsi (= 0.67.2)
- ReactCommon/turbomodule/core (= 0.67.2)
- React-RCTBlob (0.67.2):
- FBReactNativeSpec (= 0.67.2)
- RCTTypeSafety (= 0.69.4)
- React-Codegen (= 0.69.4)
- React-Core/RCTAnimationHeaders (= 0.69.4)
- React-jsi (= 0.69.4)
- ReactCommon/turbomodule/core (= 0.69.4)
- React-RCTBlob (0.69.4):
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/RCTBlobHeaders (= 0.67.2)
- React-Core/RCTWebSocket (= 0.67.2)
- React-jsi (= 0.67.2)
- React-RCTNetwork (= 0.67.2)
- ReactCommon/turbomodule/core (= 0.67.2)
- React-RCTImage (0.67.2):
- FBReactNativeSpec (= 0.67.2)
- React-Codegen (= 0.69.4)
- React-Core/RCTBlobHeaders (= 0.69.4)
- React-Core/RCTWebSocket (= 0.69.4)
- React-jsi (= 0.69.4)
- React-RCTNetwork (= 0.69.4)
- ReactCommon/turbomodule/core (= 0.69.4)
- React-RCTImage (0.69.4):
- RCT-Folly (= 2021.06.28.00-v2)
- RCTTypeSafety (= 0.67.2)
- React-Core/RCTImageHeaders (= 0.67.2)
- React-jsi (= 0.67.2)
- React-RCTNetwork (= 0.67.2)
- ReactCommon/turbomodule/core (= 0.67.2)
- React-RCTLinking (0.67.2):
- FBReactNativeSpec (= 0.67.2)
- React-Core/RCTLinkingHeaders (= 0.67.2)
- React-jsi (= 0.67.2)
- ReactCommon/turbomodule/core (= 0.67.2)
- React-RCTNetwork (0.67.2):
- FBReactNativeSpec (= 0.67.2)
- RCTTypeSafety (= 0.69.4)
- React-Codegen (= 0.69.4)
- React-Core/RCTImageHeaders (= 0.69.4)
- React-jsi (= 0.69.4)
- React-RCTNetwork (= 0.69.4)
- ReactCommon/turbomodule/core (= 0.69.4)
- React-RCTLinking (0.69.4):
- React-Codegen (= 0.69.4)
- React-Core/RCTLinkingHeaders (= 0.69.4)
- React-jsi (= 0.69.4)
- ReactCommon/turbomodule/core (= 0.69.4)
- React-RCTNetwork (0.69.4):
- RCT-Folly (= 2021.06.28.00-v2)
- RCTTypeSafety (= 0.67.2)
- React-Core/RCTNetworkHeaders (= 0.67.2)
- React-jsi (= 0.67.2)
- ReactCommon/turbomodule/core (= 0.67.2)
- React-RCTSettings (0.67.2):
- FBReactNativeSpec (= 0.67.2)
- RCTTypeSafety (= 0.69.4)
- React-Codegen (= 0.69.4)
- React-Core/RCTNetworkHeaders (= 0.69.4)
- React-jsi (= 0.69.4)
- ReactCommon/turbomodule/core (= 0.69.4)
- React-RCTSettings (0.69.4):
- RCT-Folly (= 2021.06.28.00-v2)
- RCTTypeSafety (= 0.67.2)
- React-Core/RCTSettingsHeaders (= 0.67.2)
- React-jsi (= 0.67.2)
- ReactCommon/turbomodule/core (= 0.67.2)
- React-RCTText (0.67.2):
- React-Core/RCTTextHeaders (= 0.67.2)
- React-RCTVibration (0.67.2):
- FBReactNativeSpec (= 0.67.2)
- RCTTypeSafety (= 0.69.4)
- React-Codegen (= 0.69.4)
- React-Core/RCTSettingsHeaders (= 0.69.4)
- React-jsi (= 0.69.4)
- ReactCommon/turbomodule/core (= 0.69.4)
- React-RCTText (0.69.4):
- React-Core/RCTTextHeaders (= 0.69.4)
- React-RCTVibration (0.69.4):
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/RCTVibrationHeaders (= 0.67.2)
- React-jsi (= 0.67.2)
- ReactCommon/turbomodule/core (= 0.67.2)
- React-runtimeexecutor (0.67.2):
- React-jsi (= 0.67.2)
- ReactCommon/turbomodule/core (0.67.2):
- React-Codegen (= 0.69.4)
- React-Core/RCTVibrationHeaders (= 0.69.4)
- React-jsi (= 0.69.4)
- ReactCommon/turbomodule/core (= 0.69.4)
- React-runtimeexecutor (0.69.4):
- React-jsi (= 0.69.4)
- ReactCommon/turbomodule/core (0.69.4):
- DoubleConversion
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-callinvoker (= 0.67.2)
- React-Core (= 0.67.2)
- React-cxxreact (= 0.67.2)
- React-jsi (= 0.67.2)
- React-logger (= 0.67.2)
- React-perflogger (= 0.67.2)
- WebRTC-lib (96.0.0)
- React-bridging (= 0.69.4)
- React-callinvoker (= 0.69.4)
- React-Core (= 0.69.4)
- React-cxxreact (= 0.69.4)
- React-jsi (= 0.69.4)
- React-logger (= 0.69.4)
- React-perflogger (= 0.69.4)
- RNCAsyncStorage (1.17.9):
- React-Core
- RNDeviceInfo (10.3.0):
- React-Core
- RNGestureHandler (2.5.0):
- React-Core
- RNLanguages (3.0.2):
- React
- RNReanimated (2.10.0):
- DoubleConversion
- FBLazyVector
- FBReactNativeSpec
- glog
- RCT-Folly
- RCTRequired
- RCTTypeSafety
- React-callinvoker
- React-Core
- React-Core/DevSupport
- React-Core/RCTWebSocket
- React-CoreModules
- React-cxxreact
- React-jsi
- React-jsiexecutor
- React-jsinspector
- React-RCTActionSheet
- React-RCTAnimation
- React-RCTBlob
- React-RCTImage
- React-RCTLinking
- React-RCTNetwork
- React-RCTSettings
- React-RCTText
- ReactCommon/turbomodule/core
- Yoga
- RNScreens (3.16.0):
- React-Core
- React-RCTImage
- RNVectorIcons (9.2.0):
- React-Core
- SocketRocket (0.6.0)
- WebRTC-lib (104.0.0)
- Yoga (1.14.0)
- YogaKit (1.18.1):
- Yoga (~> 1.14)
DEPENDENCIES:
- bigbluebutton-mobile-sdk (from `../node_modules/bigbluebutton-mobile-sdk`)
- bigbluebutton-mobile-sdk-common (from `../node_modules/bigbluebutton-mobile-sdk/common`)
- bigbluebutton-tablet-sdk (from `../node_modules/bigbluebutton-tablet-sdk`)
- bigbluebutton-tablet-sdk-broadcast-upload-extension (from `../node_modules/bigbluebutton-tablet-sdk/ios-broadcast-upload-extension`)
- bigbluebutton-tablet-sdk-common (from `../node_modules/bigbluebutton-tablet-sdk/ios-common`)
- boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`)
- DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
- FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
- FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`)
- Flipper (= 0.125.0)
- Flipper-Boost-iOSX (= 1.76.0.1.11)
- Flipper-DoubleConversion (= 3.2.0.1)
- Flipper-Fmt (= 7.1.7)
- Flipper-Folly (= 2.6.10)
- Flipper-Glog (= 0.5.0.5)
- Flipper-PeerTalk (= 0.0.4)
- Flipper-RSocket (= 1.4.3)
- FlipperKit (= 0.125.0)
- FlipperKit/Core (= 0.125.0)
- FlipperKit/CppBridge (= 0.125.0)
- FlipperKit/FBCxxFollyDynamicConvert (= 0.125.0)
- FlipperKit/FBDefines (= 0.125.0)
- FlipperKit/FKPortForwarding (= 0.125.0)
- FlipperKit/FlipperKitHighlightOverlay (= 0.125.0)
- FlipperKit/FlipperKitLayoutPlugin (= 0.125.0)
- FlipperKit/FlipperKitLayoutTextSearchable (= 0.125.0)
- FlipperKit/FlipperKitNetworkPlugin (= 0.125.0)
- FlipperKit/FlipperKitReactPlugin (= 0.125.0)
- FlipperKit/FlipperKitUserDefaultsPlugin (= 0.125.0)
- FlipperKit/SKIOSNetworkPlugin (= 0.125.0)
- glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
- OpenSSL-Universal (= 1.1.1100)
- RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
- RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`)
- RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`)
- React (from `../node_modules/react-native/`)
- React-bridging (from `../node_modules/react-native/ReactCommon`)
- React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`)
- React-Codegen (from `build/generated/ios`)
- React-Core (from `../node_modules/react-native/`)
- React-Core/DevSupport (from `../node_modules/react-native/`)
- React-Core/RCTWebSocket (from `../node_modules/react-native/`)
@@ -306,6 +459,7 @@ DEPENDENCIES:
- React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`)
- React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`)
- React-logger (from `../node_modules/react-native/ReactCommon/logger`)
- react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`)
- react-native-webview (from `../node_modules/react-native-webview`)
- React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`)
- React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`)
@@ -319,18 +473,41 @@ DEPENDENCIES:
- React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`)
- React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`)
- ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`)
- "RNCAsyncStorage (from `../node_modules/@react-native-async-storage/async-storage`)"
- RNDeviceInfo (from `../node_modules/react-native-device-info`)
- RNGestureHandler (from `../node_modules/react-native-gesture-handler`)
- RNLanguages (from `../node_modules/react-native-languages`)
- RNReanimated (from `../node_modules/react-native-reanimated`)
- RNScreens (from `../node_modules/react-native-screens`)
- RNVectorIcons (from `../node_modules/react-native-vector-icons`)
- Yoga (from `../node_modules/react-native/ReactCommon/yoga`)
SPEC REPOS:
trunk:
- CocoaAsyncSocket
- Flipper
- Flipper-Boost-iOSX
- Flipper-DoubleConversion
- Flipper-Fmt
- Flipper-Folly
- Flipper-Glog
- Flipper-PeerTalk
- Flipper-RSocket
- FlipperKit
- fmt
- libevent
- OpenSSL-Universal
- SocketRocket
- WebRTC-lib
- YogaKit
EXTERNAL SOURCES:
bigbluebutton-mobile-sdk:
:path: "../node_modules/bigbluebutton-mobile-sdk"
bigbluebutton-mobile-sdk-common:
:path: "../node_modules/bigbluebutton-mobile-sdk/common"
bigbluebutton-tablet-sdk:
:path: "../node_modules/bigbluebutton-tablet-sdk"
bigbluebutton-tablet-sdk-broadcast-upload-extension:
:path: "../node_modules/bigbluebutton-tablet-sdk/ios-broadcast-upload-extension"
bigbluebutton-tablet-sdk-common:
:path: "../node_modules/bigbluebutton-tablet-sdk/ios-common"
boost:
:podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec"
DoubleConversion:
@@ -349,8 +526,12 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native/Libraries/TypeSafety"
React:
:path: "../node_modules/react-native/"
React-bridging:
:path: "../node_modules/react-native/ReactCommon"
React-callinvoker:
:path: "../node_modules/react-native/ReactCommon/callinvoker"
React-Codegen:
:path: build/generated/ios
React-Core:
:path: "../node_modules/react-native/"
React-CoreModules:
@@ -365,6 +546,8 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native/ReactCommon/jsinspector"
React-logger:
:path: "../node_modules/react-native/ReactCommon/logger"
react-native-safe-area-context:
:path: "../node_modules/react-native-safe-area-context"
react-native-webview:
:path: "../node_modules/react-native-webview"
React-perflogger:
@@ -391,46 +574,85 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native/ReactCommon/runtimeexecutor"
ReactCommon:
:path: "../node_modules/react-native/ReactCommon"
RNCAsyncStorage:
:path: "../node_modules/@react-native-async-storage/async-storage"
RNDeviceInfo:
:path: "../node_modules/react-native-device-info"
RNGestureHandler:
:path: "../node_modules/react-native-gesture-handler"
RNLanguages:
:path: "../node_modules/react-native-languages"
RNReanimated:
:path: "../node_modules/react-native-reanimated"
RNScreens:
:path: "../node_modules/react-native-screens"
RNVectorIcons:
:path: "../node_modules/react-native-vector-icons"
Yoga:
:path: "../node_modules/react-native/ReactCommon/yoga"
SPEC CHECKSUMS:
bigbluebutton-mobile-sdk: 19663f45d1ad1aa508dcd602c98454d4a268d6bc
bigbluebutton-mobile-sdk-common: a19235b74cfb9ba83f83e23afbae7c8c400c2a5c
bigbluebutton-tablet-sdk: e48e7ea85581182a53cb568ae4da4a5003d406ce
bigbluebutton-tablet-sdk-broadcast-upload-extension: fd51015a4d172b44a3e4ccdd1ae22bf809660f30
bigbluebutton-tablet-sdk-common: 2e0b7452ca5e92722ee603601de9c2f4c9139e2b
boost: a7c83b31436843459a1961bfd74b96033dc77234
DoubleConversion: 831926d9b8bf8166fd87886c4abab286c2422662
FBLazyVector: 244195e30d63d7f564c55da4410b9a24e8fbceaa
FBReactNativeSpec: c94002c1d93da3658f4d5119c6994d19961e3d52
CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54
FBLazyVector: c71b8c429a8af2aff1013934a7152e9d9d0c937d
FBReactNativeSpec: cb0df4f0084281b394f76bb9b4d1d9540f35963f
Flipper: 26fc4b7382499f1281eb8cb921e5c3ad6de91fe0
Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c
Flipper-DoubleConversion: 2dc99b02f658daf147069aad9dbd29d8feb06d30
Flipper-Fmt: 60cbdd92fc254826e61d669a5d87ef7015396a9b
Flipper-Folly: 584845625005ff068a6ebf41f857f468decd26b3
Flipper-Glog: 70c50ce58ddaf67dc35180db05f191692570f446
Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9
Flipper-RSocket: d9d9ade67cbecf6ac10730304bf5607266dd2541
FlipperKit: cbdee19bdd4e7f05472a66ce290f1b729ba3cb86
fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9
glog: 85ecdd10ee8d8ec362ef519a6a45ff9aa27b2e85
RCT-Folly: 803a9cfd78114b2ec0f140cfa6fa2a6bafb2d685
RCTRequired: cd47794163052d2b8318c891a7a14fcfaccc75ab
RCTTypeSafety: 393bb40b3e357b224cde53d3fec26813c52428b1
React: dec6476bc27155b250eeadfc11ea779265f53ebf
React-callinvoker: e5047929e80aea942e6fdd96482504ef0189ca63
React-Core: e382655566b2b9a6e3b4f641d777b7bfdbe52358
React-CoreModules: cf262e82fa101c0aee022b6f90d1a5b612038b64
React-cxxreact: 69d53de3b30c7c161ba087ca1ecdffed9ccb1039
React-jsi: ce9a2d804adf75809ce2fe2374ba3fbbf5d59b03
React-jsiexecutor: 52beb652bbc61201bd70cbe4f0b8edb607e8da4f
React-jsinspector: 595f76eba2176ebd8817a1fffd47b84fbdab9383
React-logger: 23de8ea0f44fa00ee77e96060273225607fd4d78
react-native-webview: 380c1a03ec94b7ed764dac8db1e7c9952d08c93a
React-perflogger: 3c9bb7372493e49036f07a82c44c8cf65cbe88db
React-RCTActionSheet: 052606483045a408693aa7e864410b4a052f541a
React-RCTAnimation: 08d4cac13222bb1348c687a0158dfd3b577cdb63
React-RCTBlob: 928ad1df65219c3d9e2ac80983b943a75b5c3629
React-RCTImage: 524d7313b142a39ee0e20fa312b67277917fe076
React-RCTLinking: 44036ea6f13a2e46238be07a67566247fee35244
React-RCTNetwork: 9b6faacf1e0789253e319ca53b1f8d92c2ac5455
React-RCTSettings: ecd8094f831130a49581d5112a8607220e5d12a5
React-RCTText: 14ba976fb48ed283cfdb1a754a5d4276471e0152
React-RCTVibration: 99c7f67fba7a5ade46e98e870c6ff2444484f995
React-runtimeexecutor: 2450b43df7ffe8e805a0b3dcb2abd4282f1f1836
ReactCommon: d98c6c96b567f9b3a15f9fd4cc302c1eda8e3cf2
WebRTC-lib: 508fe02efa0c1a3a8867082a77d24c9be5d29aeb
Yoga: 9b6696970c3289e8dea34b3eda93f23e61fb8121
glog: 3d02b25ca00c2d456734d0bcff864cbc62f6ae1a
libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c
RCT-Folly: b9d9fe1fc70114b751c076104e52f3b1b5e5a95a
RCTRequired: bd9d2ab0fda10171fcbcf9ba61a7df4dc15a28f4
RCTTypeSafety: e44e139bf6ec8042db396201834fc2372f6a21cd
React: 482cd1ba23c471be1aed3800180be2427418d7be
React-bridging: c2ea4fed6fe4ed27c12fd71e88b5d5d3da107fde
React-callinvoker: d4d1f98163fb5e35545e910415ef6c04796bb188
React-Codegen: ff35fb9c7f6ec2ed34fb6de2e1099d88dfb25f2f
React-Core: 4d3443a45b67c71d74d7243ddde9569d1e4f4fad
React-CoreModules: 70be25399366b5632ab18ecf6fe444a8165a7bea
React-cxxreact: 822d3794fc0bf206f4691592f90e086dd4f92228
React-jsi: ffa51cbc9a78cc156cf61f79ed52ecb76dc6013b
React-jsiexecutor: a27badbbdbc0ff781813370736a2d1c7261181d4
React-jsinspector: 8a3d3f5dcd23a91e8c80b1bf0e96902cd1dca999
React-logger: 1088859f145b8f6dd0d3ed051a647ef0e3e80fad
react-native-safe-area-context: b456e1c40ec86f5593d58b275bd0e9603169daca
react-native-webview: e771bc375f789ebfa02a26939a57dbc6fa897336
React-perflogger: cb386fd44c97ec7f8199c04c12b22066b0f2e1e0
React-RCTActionSheet: f803a85e46cf5b4066c2ac5e122447f918e9c6e5
React-RCTAnimation: 19c80fa950ccce7f4db76a2a7f2cf79baae07fc7
React-RCTBlob: f36ab97e2d515c36df14a1571e50056be80413d5
React-RCTImage: 2c8f0a329a116248e82f8972ffe806e47c6d1cfa
React-RCTLinking: 670f0223075aff33be3b89714f1da4f5343fc4af
React-RCTNetwork: 09385b73f4ff1f46bd5d749540fb33f69a7e5908
React-RCTSettings: 33b12d3ac7a1f2eba069ec7bd1b84345263b3bbe
React-RCTText: a1a3ea902403bd9ae4cf6f7960551dc1d25711b5
React-RCTVibration: 9adb4a3cbb598d1bbd46a05256f445e4b8c70603
React-runtimeexecutor: 61ee22a8cdf8b6bb2a7fb7b4ba2cc763e5285196
ReactCommon: 8f67bd7e0a6afade0f20718f859dc8c2275f2e83
RNCAsyncStorage: b2489b49e38c85e10ed45a888d13a2a4c7b32ea1
RNDeviceInfo: 4701f0bf2a06b34654745053db0ce4cb0c53ada7
RNGestureHandler: bad495418bcbd3ab47017a38d93d290ebd406f50
RNLanguages: 962e562af0d34ab1958d89bcfdb64fafc37c513e
RNReanimated: 7faa787e8d4493fbc95fab2ad331fa7625828cfa
RNScreens: ee31ecdf23fe81e93c74feaa086cf173d758ab58
RNVectorIcons: fcc2f6cb32f5735b586e66d14103a74ce6ad61f8
SocketRocket: fccef3f9c5cedea1353a9ef6ada904fde10d6608
WebRTC-lib: 6c387d63a8d649e8171f548a67b740127cc299b3
Yoga: ff994563b2fd98c982ca58e8cd9db2cdaf4dda74
YogaKit: f782866e155069a2cca2517aafea43200b01fd5a
PODFILE CHECKSUM: e211f2ecd01f51058301ee830bb11c08f658741b
PODFILE CHECKSUM: 60c0727fe96eefac3de04d7ac4413254c1f48c34
COCOAPODS: 1.11.2
COCOAPODS: 1.11.3

19
ios/ci_scripts/ci_post_clone.sh Executable file
View File

@@ -0,0 +1,19 @@
#!/bin/sh
export HOMEBREW_NO_INSTALL_CLEANUP=TRUE
brew install cocoapods
# have to add node yourself
brew install node@16
# link it to the path
brew link node@16
brew install yarn
# Install dependencies you manage with CocoaPods.
yarn
pod install
# the sed command from RN cant find the file... so we have to run it ourselves
sed -i -e $'s/ && (__IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_10_0)//' /Volumes/workspace/repository/ios/Pods/RCT-Folly/folly/portability/Time.h
# Source: https://zach.codes/xcode-cloud-react-native-setup/#rn-664-update

View File

@@ -1,5 +1,5 @@
{
"name": "bigbluebutton",
"name": "BigBlueButtonTablet",
"version": "0.0.1",
"private": true,
"scripts": {
@@ -10,30 +10,47 @@
"lint": "eslint . --ext .js,.jsx,.ts,.tsx"
},
"dependencies": {
"bigbluebutton-mobile-sdk": "^0.1.6",
"react": "17.0.2",
"react-native": "0.67.2",
"react-native-webview": "^11.17.2"
"@react-native-async-storage/async-storage": "^1.17.9",
"@react-navigation/drawer": "^6.4.3",
"@react-navigation/native": "^6.0.11",
"@react-navigation/native-stack": "^6.7.0",
"@types/i18next": "^13.0.0",
"@types/react-native-vector-icons": "^6.4.11",
"@types/styled-components": "^5.1.26",
"@types/styled-components-react-native": "^5.1.3",
"bigbluebutton-tablet-sdk": "^0.1.35",
"i18next": "^21.9.1",
"react": "18.0.0",
"react-native": "0.69.4",
"react-native-device-info": "^10.3.0",
"react-native-gesture-handler": "^2.5.0",
"react-native-languages": "^3.0.2",
"react-native-modalize": "^2.1.1",
"react-native-reanimated": "^2.10.0",
"react-native-safe-area-context": "^4.3.3",
"react-native-screens": "^3.16.0",
"react-native-swipe-list-view": "^3.2.9",
"react-native-vector-icons": "^9.2.0",
"react-native-webview": "^11.23.0",
"styled-components": "^5.3.5"
},
"devDependencies": {
"@babel/core": "^7.12.9",
"@babel/runtime": "^7.12.5",
"@react-native-community/eslint-config": "^2.0.0",
"@tsconfig/react-native": "^2.0.2",
"@types/jest": "^26.0.23",
"@types/react-native": "^0.66.15",
"@types/react-test-renderer": "^17.0.1",
"@typescript-eslint/eslint-plugin": "^5.7.0",
"@typescript-eslint/parser": "^5.7.0",
"@types/react-native": "^0.69.3",
"@types/react-test-renderer": "^18.0.0",
"@typescript-eslint/eslint-plugin": "^5.29.0",
"@typescript-eslint/parser": "^5.29.0",
"babel-jest": "^26.6.3",
"eslint": "^7.14.0",
"eslint": "^7.32.0",
"jest": "^26.6.3",
"metro-react-native-babel-preset": "^0.66.2",
"react-test-renderer": "17.0.2",
"metro-react-native-babel-preset": "^0.70.3",
"react-test-renderer": "18.0.0",
"typescript": "^4.4.4"
},
"resolutions": {
"@types/react": "^17"
},
"jest": {
"preset": "react-native",
"moduleFileExtensions": [

View File

@@ -0,0 +1,16 @@
import React from 'react';
import {ButtonAppStyle, TextButton} from './styles';
type IButtonApp = {
children?: object;
onPress?: Function;
};
export const ButtonApp = ({children, onPress}: IButtonApp) => {
return (
<>
<ButtonAppStyle onPress={onPress}>
<TextButton>{children}</TextButton>
</ButtonAppStyle>
</>
);
};

View File

@@ -0,0 +1,17 @@
import styled from 'styled-components/native';
import {colors} from '../../styles/colors';
export const ButtonAppStyle = styled.TouchableHighlight`
height: 50px;
font-size: 22px;
background-color: ${colors.primary_light};
border-radius: 5px;
align-items: center;
justify-content: center;
`;
export const TextButton = styled.Text`
font-size: 22px;
font-weight: bold;
color: #fff;
`;

View File

@@ -0,0 +1,42 @@
import React from 'react';
import {LabelInput, WrapperInputText} from './styles';
type IInputText = {
children?: object;
placeholder: string;
label: string;
onChangeText?: any;
value?: any;
autoCapitalize?: 'none';
autoCorrect?: false | true;
autoComplete?: 'off';
allowFontScaling?: true | false;
};
export const InputText = (props: IInputText) => {
const {
children,
placeholder,
label,
onChangeText,
value,
autoCapitalize,
autoCorrect,
autoComplete,
allowFontScaling,
} = props;
return (
<>
<LabelInput>{label}</LabelInput>
<WrapperInputText
allowFontScaling={allowFontScaling}
autoComplete={autoComplete}
autoCorrect={autoCorrect}
autoCapitalize={autoCapitalize}
value={value}
onChangeText={onChangeText}
placeholder={placeholder}
/>
</>
);
};

View File

@@ -0,0 +1,16 @@
import styled from 'styled-components/native';
export const WrapperInputText = styled.TextInput`
background-color: #f2f2f2;
padding: 10px 20px 10px 20px;
border-radius: 5px
`
export const LabelInput = styled.Text`
color: #fff;
font-size: 20px;
font-weight: bold;
`

View File

@@ -0,0 +1,19 @@
import React from 'react'
import { PortalContext } from './context'
type IPortalContext = {
portals?: any
setPortals?: any
}
export const PortalContextContainer = ({children}: any)=>{
const [portals, setPortals] = React.useState(0)
const portalHook: IPortalContext = {portals, setPortals}
return (
<>
<PortalContext.Provider value={portalHook}>
{children}
</PortalContext.Provider>
</>
)
}

View File

@@ -0,0 +1,2 @@
import React, { createContext } from 'react'
export const PortalContext = createContext(false);

Some files were not shown because too many files have changed in this diff Show More