Commit Graph

311 Commits

Author SHA1 Message Date
Saúl Ibarra Corretgé 889644f7bd [iOS] Add support for Siri shortcuts
This is mostly implemented in the app, with the needed support in the SDK. Since
the app needs to donate intents and deal with creating NSUserActivity objects it
doesn't feel right to do this in a library. Instead, we donate the intents from
the app, but the SDK is ready to extract conference URLs from any intent which
was registered as a conference activity.

This also opens the door for eventually adding Handoff support.
2019-01-09 12:05:58 +01:00
Saúl Ibarra Corretgé 4898f81596 [iOS] Simplify code
Share the code for extracting the URL for conference from a NSUserActivity.
2019-01-09 12:05:58 +01:00
Saúl Ibarra Corretgé 148d4ebb90 rn: add Firebase integration
This is done at the app level, not the SDK.

Currently 2 Firebase services are used:

  - Crashlytics
  - Dynamic Links

They are enabled in tandem, if the appropriate Google services file
(GoogleService-Info.plist on iOS or google-services.json on Android) is found.

Each service needs to be individually enabled in the Firebase console.
2019-01-08 17:42:59 +01:00
Saúl Ibarra Corretgé 7e231c2826 ios: fix compilation warning 2019-01-08 17:42:59 +01:00
Saúl Ibarra Corretgé 5cbddb4874 ios: update SDK installation instructions
Mention the availability of CocoaPods.
2019-01-08 09:41:27 +01:00
Saúl Ibarra Corretgé 274b7148b0 ios: update development team
Also update the bundle ID since we don't release with that anyway.
2019-01-03 13:11:41 +01:00
Saúl Ibarra Corretgé fef47684d9 deps: update react-native-background-timer 2018-12-20 13:59:17 +01:00
Saúl Ibarra Corretgé 58887577b4 ios: fix compilation warning 2018-12-20 13:56:46 +01:00
Saúl Ibarra Corretgé 0469e5af5e deps: update react-native-calendar-events 2018-12-20 13:52:14 +01:00
Saúl Ibarra Corretgé f97869ffde deps: update react-native-keep-awake 2018-12-19 15:20:10 +01:00
Saúl Ibarra Corretgé e4b1e40cc6 deps: update react-native-google-signin 2018-12-19 15:15:21 +01:00
Saúl Ibarra Corretgé 1ff8d52b6b deps: update react-native to 0.57.8
Bumping React to 16.6.3 is a requirement for this update.
2018-12-19 10:28:28 +01:00
Saúl Ibarra Corretgé 65519ec926 rn: drop support for beta.meet.jit.si over HTTP
It doesn't add any value, by default HTTP is not supported unless an exception
is added, plus it doesn't work in browsers at all.
2018-12-18 16:18:08 +01:00
Saúl Ibarra Corretgé 342718f673 rn: drop support for no longer supported deployments 2018-12-18 16:18:08 +01:00
Saúl Ibarra Corretgé 0031fd2678 android, ios: update react-native-fast-image dependency 2018-12-18 09:05:50 +01:00
Saúl Ibarra Corretgé e5c9c69ec9 ios: drop iOS 9 support
WebRTC no longer actively fixes iOS 9 issues.
2018-12-06 10:47:44 +01:00
Saúl Ibarra Corretgé d48bef6c11 ios: set version to 1.21 2018-12-06 10:47:44 +01:00
Saúl Ibarra Corretgé 47830dfc3d ios: switch back to the "legacy" build system in Xcode
Xcode 10 introduced a new build system. Alas, it breaks a number of important
flows, such as creating an archive for the framework (ie SDK) target.

In order to "fix" this, switch back to the former (Xcode 9) build system for the
time being.
2018-12-04 12:12:01 +01:00
Saúl Ibarra Corretgé 26ba974757 [RN] Drop react-native-locale-detector dependency
The upstream package has been unmaintained for 2 years now, and making the litle
changes needed as React Native needs them is getting old. The actual
funcionality is a couple of one-liners plus tons of boliterplate, which gets
reduced by quite a bit if we just embed it. So here it goes.
2018-12-03 11:48:44 +01:00
Guus der Kinderen 99542e29e6 [RN] Upgrade React Native to 0.57.6 2018-11-29 10:35:31 +00:00
Saúl Ibarra Corretgé 1ba66e4b65 ios: update CocoaPods dependencies 2018-11-28 16:59:37 +01:00
Leonard Kim d5fb2c2717 ref(sdk): update comments to exclude mention of componentWillReceiveProps 2018-11-21 08:08:45 -08:00
Saúl Ibarra Corretgé ae890dc093 deps: update react-native-webrtc (M69) 2018-10-16 16:32:26 +02:00
Saúl Ibarra Corretgé 9407f562f6 [iOS] Simplify dynamically loading fonts 2018-10-16 14:33:48 +02:00
Saúl Ibarra Corretgé 011a46ce2d [RN] Don't bundle fonts we don't use 2018-10-16 14:33:48 +02:00
Saúl Ibarra Corretgé 8e0bd36ece deps: update react-native-vector-icons 2018-10-16 14:33:48 +02:00
Saúl Ibarra Corretgé 8c97ce2ee9 deps: update react-native-google-signin 2018-10-12 13:08:20 +02:00
Saúl Ibarra Corretgé b2245729cc [iOS] Update Podfile.lock 2018-10-12 13:08:20 +02:00
Saúl Ibarra Corretgé b71adbdf70 deps: update React Native to version 0.57 2018-10-10 18:07:36 +02:00
Saúl Ibarra Corretgé 6f17988d17 [iOS] Fix warning (#3491)
When a native iOS module implements `constantsToExport` it must define
`requiresMainQueueSetup`. In this case we don't do any UI stuff so it doesn't
need to be initialized in the main thread.
2018-10-01 21:47:48 -05:00
Saúl Ibarra Corretgé c54db8337d [iOS] Unify openURL methods and mark the old one deprecated (#3489)
Make sure both methods offer the same behavior and mark the old one as
deprecated so SDK users get a warning.
2018-09-28 14:54:09 -05:00
hristoterezov 467452d110 fix(deeplinking): After braking it with the dropbox implementation. 2018-09-27 01:42:59 -05:00
hristoterezov 38517127c3 feat(dropbox): Implement react-native module. 2018-09-27 01:42:59 -05:00
paweldomas 9613755055 fix(Travis/iOS): use '-quiet' with 'xcodebuild' commands
This reduces 'xcodebuild' verbosity and fixed problem with exceeding 4MB
of logs size imposed by Travis CI.
2018-09-24 14:34:11 -05:00
Bettenbuk Zoltan d10d61fb7a [RN] Add Google Sign In to live streaming 2018-09-05 23:09:56 +02:00
Saúl Ibarra Corretgé a327a5d804 [RN] Drop the react-native-permissions dependency
It causes false positives when submitting the app to the Store. Use the new
permissions API in react-native-webrtc instead.
2018-09-05 14:56:00 -05:00
Saúl Ibarra Corretgé 3ca704d81d [RN] Update react-native-webrtc and remove no longer needed polyfills 2018-08-29 09:22:28 -05:00
Lyubo Marinov 3ad27961e5 [iOS] Fix Jitsi Meet v1.18.x "Missing Purpose String in Info.plist File" issues reported by App Store Connect
App Store Connect reported the following issues in (and rejected the binary
of) Jitsi Meet 1.18.x:

NSBluetoothPeripheralUsageDescription
NSAppleMusicUsageDescription
NSMotionUsageDescription
NSSpeechRecognitionUsageDescription

Starting spring 2019, all apps submitted to the App Store that access user
data will be required to include a purpose string for the following:

NSLocationAlwaysUsageDescription
NSLocationWhenInUseUsageDescription
2018-08-28 10:00:55 +02:00
Lyubo Marinov d62974b433 [RN] Update react-native-calendar-events (continued)
PR https://github.com/wmcmahan/react-native-calendar-events/pull/186 has
been merged upstream.
2018-08-26 21:53:42 -05:00
Saúl Ibarra Corretgé d92b720704 [RN] Update calendar-events dependency
Includes a fix for not running expensive operations on the main thread.
2018-08-10 15:11:37 +02:00
paweldomas 54a1853e60 fix(ios/Podfile.lock): bump SDWebImage/Core version 2018-07-31 14:07:17 -05:00
Saúl Ibarra Corretgé 27021ea271 [RN] Replace cached image implementation
Use react-native-fastimage, which uses 2 full-native image impleentations using
well known and mature (native) libraries.

This gets us rid of 2 libraries which were observerd as a source of bugs and
created trouble with dependencies: react-native-fetch-blob and
react-native-img-cache. They are also no longer well maintained.
2018-07-31 14:07:17 -05:00
paweldomas d3dd833f21 fix(ios/travis-ci) try pod update
With the fastimage lib Travis complains about:

CocoaPods could not find compatible versions for pod "SDWebImage/Core"
2018-07-31 12:54:01 -05:00
Saúl Ibarra Corretgé 467a5aaae3 ios: run audio mode operations on a dedicated thread
There is no reason for them to run on the main thread, it's safe to call
AVFoundation functions on threads other than the main thread.

The previous code made an incorrect claim about the thread in which the audio
route change notification selector is called: it's called on a secondary thread:
https://developer.apple.com/documentation/avfoundation/avaudiosessionroutechangenotification
2018-07-27 15:39:39 -05:00
Saúl Ibarra Corretgé 3154c6f936 [RN] Don't request camera permission on first launch
It will only be requested if a user joins a meeting or flips the switch from
video to audio and back, but never as the first thing when the welcome page is
mounted.
2018-07-19 09:03:22 -05:00
Saúl Ibarra Corretgé 535e5b4f64 [iOS] Update Podfile.lock
Syntax changed slightly with an update to CocoaPods.
2018-06-26 17:59:02 +02:00
Saúl Ibarra Corretgé 47aa14e9f6 [iOS] Fix syncing muted state with CallKit
Fix the "mute ping pong" for once and for all. This patch takes a new approach
to the problem: it keeps track of the user generated CallKit transaction ations
and avoids calling the delegate method in those cases.

This results in a much cleaner and easier to understand handling of the flow: if
the delegate method is called it means the user tapped on the mute button. When
we sync the muted state in JS with CallKit the delegate method won't be called
at all, thus avoiding the ping-pong altogether.

In addition, make sure all CallKit methods run in the UI thread. CallKit will
call our delegate methods in the UI thread too, thsu there is no need to
synchronize access to the listener / pending action sets.
2018-06-22 11:25:09 +02:00
Lyubo Marinov 0d3fac7c0f [RN] Change default WelcomeScreen tab and persist user choice (coding style) 2018-06-18 15:42:09 -05:00
Saúl Ibarra Corretgé c7fc26d864 [iOS] Fix crash on startup when fetching calendar entries
Turns out sometimes a calendar is missing the tile and it crashes because nil is
inserted into a NSDictionary. Fix it by applying this pending PR:
https://github.com/wmcmahan/react-native-calendar-events/pull/164
2018-06-12 20:38:50 -05:00
Saúl Ibarra Corretgé 90d2340609 [iOS] Fix React Native warnings
Fixes the following warning:

~~~
Module XXX requires main queue setup since it overrides `constantsToExport` but doesn't implement `requiresMainQueueSetup`. In a future release React Native will default to initializing all native modules on a background thread unless explicitly opted-out of.
~~~

For AppInfo and AuioMode, there is no need to initialize anything in the UI
thread, so just return NO.
2018-06-09 12:03:45 +02:00
virtuacoplenny 3e79926ad4 feat(recording): add sounds for when recording starts and stops (#3078)
* feat(recording): add sounds for when recording starts and stops

* squash: use constants, play sounds for file only

* squash: rename recordingStopped.mp3 -> recordingOff.mp3

* squash: flip var declaration for alpha order
2018-06-05 20:20:43 +02:00
Daniel Ornelas c62809d910 [iOS] Fix SDK deployment target to be able to compile with iOS 9.3
Fixes: https://github.com/jitsi/jitsi-meet/issues/3086
2018-06-05 11:35:25 +02:00
Daniel Ornelas de725404ef [iOS] Fix issue with Invite RNModule being nil
This happend after initialization and joining a conference for the first time
in JitsiMeetView.
2018-06-05 11:21:22 +02:00
Saúl Ibarra Corretgé 2b7976380e [RN] Update react-native to 0.55.4
Also bump React to 16.3.2, since it's required.
2018-06-04 16:05:33 -05:00
Saúl Ibarra Corretgé e93c9dde5d [iOS] Fix warning about RCTBatchedBridge deprecation
It's removed in RN >= 0.55. This aligns the project with the official
documentation: https://facebook.github.io/react-native/docs/integration-with-existing-apps.html#configuring-cocoapods-dependencies
2018-06-04 12:23:55 -05:00
Daniel Ornelas 4bb6e5aefd Implement a delegate of PiPViewCoordinator to notify when user exits Picture in Picture mode 2018-05-23 17:56:16 -05:00
hristoterezov d4d2c25499 [RN] Add rejected ringtone sound assets to build 2018-05-23 15:22:01 -05:00
Saúl Ibarra Corretgé 0d81e677bf [iOS] Fix running in Debug mode on a device
Thsi fixed a regression in 8f75c2e279

The bundler script doesn't do anything (it literally exits right at the top)
when skipping the bundle. This is arguably wrong, because it doesn't generate
"ip.txt", the file with the bundler IP address either!

So, generate that ourselves. While ding this, also drop the need for xip.io,
which has also been removed from RN, since it gives more trouble than it solves.
2018-05-21 14:05:58 +02:00
Lyubo Marinov 75c7cfd9e1 Coding style: comments, formatting, sorting order 2018-05-20 19:01:59 -05:00
Saúl Ibarra Corretgé ef7fb1a7b0 [RN] Make all delegate / listener methods run in the main / UI thread 2018-05-20 16:46:44 -05:00
Saúl Ibarra Corretgé 8f75c2e279 [iOS] Don't bundle the React resources in Debug mode
It significantly speeds up debug builds, putting them on par with Android, where
we also don't bundle the React resources.
2018-05-18 14:36:03 +02:00
Saúl Ibarra Corretgé 284d09eae7 [RN] Add ringtone sound assets to build 2018-05-17 08:31:46 -05:00
Lyubo Marinov f64b511682 Fix "objc[59448]: Cannot form weak reference to instance (0x60c000039440) of class RNCallKit. It is possible that this object was over-released, or is in the process of deallocation." 2018-05-15 17:29:20 +02:00
Paweł Domas b2ad8a95d4 fix(ios,build-ipa.sh): lib-jitsi-meet package sed escape (#2953)
It needs to be global and the old replace seems to escape only the first
occurrence.
2018-05-10 12:46:34 -07:00
paweldomas 740817fdcf chmod +x on build-ipa.sh 2018-05-07 17:04:40 -05:00
paweldomas 8ca836c922 feat(iOS): build .ipa for PRs in Travis CI 2018-05-07 15:31:23 -05:00
Lyubo Marinov 7ffdaf59c7 [RN] Add an example how to consume the public SDK invite API 2018-05-07 00:38:49 -05:00
Lyubo Marinov 85612b9ae1 [iOS] Namespace the public API of the feature invite 2018-05-06 22:42:32 -05:00
Daniel Ornelas 529e5e8938 [iOS] Fix nullability warnings/errors caused by the feature invite 2018-05-06 22:41:45 -05:00
Lyubo Marinov 5e79bbecef Codying style: naming, formatting, comments 2018-05-03 18:04:59 -05:00
Daniel Ornelas e5309a6482 [iOS] Proxy CallKit API to be a feature of the SDK
With this the RN component and the consumer app can share same CallKit
provider, configuration, and enable to be part of multiple listeners of
the CallKit flow events. The main driver of this is to enable the
consumer app to be able to report an incoming call to the OS before
loading the JitsiMeetView. Once the user answers the call, the app can
instantiate a JitsiMeetView, pass the CallKit call UUIID, and the Jitsi
Meet components will handle the connection and report back to CallKit
that the  call has been established.
2018-05-03 18:04:59 -05:00
Saúl Ibarra Corretgé 0bad2dffb4 [iOS] Dybamically enable addPeopleEnabled / dialOutEnabled
If the beginAddPeople delegate method is implemented, and they haven't been
explicitly set to NO, they willbe YES.
2018-05-02 10:56:41 -05:00
Saúl Ibarra Corretgé cf6dd98b02 [iOS] Document invite module methods 2018-05-02 10:56:41 -05:00
Saúl Ibarra Corretgé 6c602accae [iOS] Fixup style 2018-05-02 10:56:41 -05:00
Lyubo Marinov effd3728b6 [RN] add support for inviting participants during a call on mobile (2) 2018-05-02 12:54:02 +02:00
Ryan Peck f64c13d4b7 [RN] add support for inviting participants during a call on mobile
* Button conditionally shown based on if the feature is enabled and available
* Hooks for launching the invite UI (delegates to the native layer)
* Hooks for using the search and dial out checks from the native layer (calls back into JS)
* Hooks for handling sending invites and passing any failures back to the native layer
* Android and iOS handling for those hooks

Author: Ryan Peck <rpeck@atlassian.com>
Author: Eric Brynsvold <ebrynsvold@atlassian.com>
2018-04-25 18:58:06 +02:00
Shuai Li ff9820a61b [react-native-webrtc] ios: fix build when using `use_frameworks!` 2018-04-19 16:32:42 -05:00
zbettenbuk 1ab107b238 [react-native-calendar-events] Null check empty cursor 2018-04-19 15:35:57 -05:00
zbettenbuk 6586be9a8e Fix plist file formatting 2018-04-15 23:16:44 -05:00
zbettenbuk 56d8210e35 Add ability to detect calendar permission description in the plist file (iOS) 2018-04-15 23:16:44 -05:00
Daniel Ornelas fd44721bac Clean up PiP mode for iOS 2018-04-13 16:04:51 -05:00
Saúl Ibarra Corretgé 95927c4804 [iOS] Add new file created by Xcode 9.3
Looks like it's a good idea to check it in: https://stackoverflow.com/a/49564624
2018-04-11 10:47:26 +02:00
paweldomas 8b2ce21e1a fix(RN): bundle sound files in release build
On Android the files will be copied to the assets/sounds directory of
the SDK bundle on build time. To play the "asset:/" prefix has to be
used to locate the files correctly.

On iOS each sound file must be added to the SDK's Xcode project in order
to be bundled correctly. To playback we need to know the path of the SDK
bundle which is now exposed by the AppInfo iOS module.
2018-04-10 10:59:52 +02:00
Shuai Li 962df14382 [iOS] Fix launching the app after the introduction of Swift in sdk 2018-03-26 23:14:45 -05:00
Daniel Ornelas fd787abf85 Change deployment target of JitsiMeet iOS SDK to 10.0 2018-03-22 16:40:46 -04:00
Daniel Ornelas 7822155e5e Fix iPad rotation related issue when in PiP 2018-03-22 16:40:17 -04:00
Daniel Ornelas de0a7bfcd3 Some improvements for handling completion of transitions. Fixed a wrong conferenceEnded value when user left the conversation. 2018-03-22 00:04:25 -04:00
Daniel Ornelas 5858859838 Addressing feedback from PR 2018-03-22 00:04:25 -04:00
Daniel Ornelas 8428dd95c2 Implement Exit PiP mode in PiPWindow 2018-03-21 22:00:43 -04:00
Daniel Ornelas a26ccf195e Added initialization of JitsiMeetManager components 2018-03-21 22:00:43 -04:00
Daniel Ornelas 0a5f60c637 Refactor PiP code into its own components 2018-03-21 22:00:43 -04:00
Daniel Ornelas f8163de765 Implement Jitsi meet presentation interface that supports custom PiP solution 2018-03-21 22:00:43 -04:00
Daniel Ornelas 181580871f Initial work for testing PiP mode 2018-03-21 22:00:43 -04:00
zbettenbuk bba480f329 Add calendar-sync feature 2018-03-13 18:04:14 -05:00
paweldomas 60e03e3dec feat: add join/leave sounds on mobile
Adds base/sounds feature which allows other features to register a sound
source under specified id. A new SoundsCollection component will then
render corresponding HTMLAudioElement for each such sound. Once "setRef"
callback is called by the HTMLAudioElement, this element will be added
to the Redux store. When that happens sound can be played through the
new 'playSound' action which will call play() method on the stored
HTMLAudioElement instance.
2018-03-13 16:57:28 -05:00
Lyubo Marinov b8de5bbfc3 [RN] Add Picture-in-Picture support (Coding style: naming, consistency) 2018-02-23 11:21:26 -06:00
Saúl Ibarra Corretgé b3683068d4 [RN] Add Picture-in-Picture support
This only works automatically on Android >= 8. On other platforms / versions, it
relies on the SDK user on implementing a "reduced UI" mode and reacting to the
"request PIP" delegate method.
2018-02-23 11:21:25 -06:00
Saúl Ibarra Corretgé bd301403c4 [RN] Fix app startup from a CallKit intent
Story time.  Currently the app can be started in 4 ways:

- just tapping on the icon
- via a deep link
- via a universal link
- via the phone's recent calls list

The last 3 options will make the app join the specified room upon launch. React
Native's Linking module implements the necessary bits to handle deep or
universal linking, but CallKit is out of its scope.

In order to blend any type of app startup mode, a new LaunchOptions module (iOS
only) exports a getInitialURL function, akin to the one in the Linking module,
but taking CallKit instents into consideration. This function is then used to
make app startup with a URL consistent across all different modes.
2018-02-07 10:12:10 -06:00
Piérre Reimertz 6f8f64ba48 [iOS] Fix crash if the app display name is not set
Fixes: #2377 #2267 #2158
2018-01-29 10:34:01 +01:00
Lyubo Marinov bdf2ecfe4b [iOS] CocoaPods 1.4.0 2018-01-19 15:00:18 -06:00
Saúl Ibarra Corretgé 41aa704e1f [RN] Update React Native to version 0.51.0 2018-01-11 11:04:28 -06:00
Lyubo Marinov 9591cb54a2 [iOS] 1024x1024 AppIcon required by Apple 2017-12-20 12:38:11 -06:00
Lyubo Marinov 65abd5efd4 [iOS] Synthesize IPv6 addresses closer to Apple's recommendation 2017-12-19 19:15:34 -06:00
Lyubo Marinov 05de599739 [iOS] Update projects to Xcode recommended settings 2017-12-19 19:15:34 -06:00
Saúl Ibarra Corretgé 57206cc36a [RN] Build react-native-locale-detector
Upstream lacked a CocoaPods podspec file, PR:
https://github.com/DylanVann/react-native-locale-detector/pull/3
2017-12-13 10:17:05 +01:00
Saúl Ibarra Corretgé 63d661ad5e ios: remove needless method
We just call the parent class' method, so just get rid of it.
2017-12-12 11:57:18 +01:00
Lyubo Marinov 569b3547c8 Upgrade NPM dependencies/packages: react-native 0.50 2017-12-04 00:45:18 -06:00
Saúl Ibarra Corretgé 90e4291751 [iOS] Update Podfile.lock 2017-11-21 11:46:35 +01:00
Lyubo Marinov 713700456e [iOS] Configuration-specific AppIcons
While having configuration-specific AppIcons may be of questionable use,
I'm more interested in using the Debug version for enterprise
distribution and the Release version for AppStore distribution.
2017-11-15 16:07:36 -06:00
Saúl Ibarra Corretgé f973a695d8 [RN] Add audio route picker
Due to the difference in nature, the iOS and Android implementations are
completely different:

iOS: MPVolumeView is used, which allows us to place a button which will launch a
native route picker provided by iOS itself. This view is different depending on
the iOS version, with the iOS 11 version being more complete.

Android: A completely custom component is used, which displays a bottom sheet
with the device categories, not devices individually. This is akin to the sheet
in the builtin dialer.
2017-11-15 09:31:40 -06:00
Lyubo Marinov fc3bc21eea [RN] Reproducible (CocoaPods) builds
Now that we have package-log.json for the sake of reproducible builds,
we should lock CocoaPods as well.
2017-11-15 09:25:56 -06:00
paweldomas cbd2bb0140 fix(JitsiMeetView): fix rotation on iOS
The root view was not adjusting it's bounds after device rotation.
2017-11-02 14:32:35 +01:00
paweldomas b74bede0e7 feat(web/RN): update React to v16 and React Native to 0.49 2017-11-02 14:32:35 +01:00
Saúl Ibarra Corretgé b4b2d6f630 [iOS] Remove unneeded imports 2017-10-30 14:06:20 +01:00
Saúl Ibarra Corretgé 84fd7825c1 [iOS] Import React headers in a consistent way 2017-10-25 14:53:45 -05:00
Lyubo Marinov af53a5c48c [iOS] Fix iOS 9 after CallKit
Revert "[RN] Remove unnecessary source code" (commit
a3441030a3). But since the project file
needs to explicitly mention the CallKit and Intents framework, do not
use the semantic @import as that's confusing in the case.
2017-10-11 12:20:11 -05:00
Saúl Ibarra Corretgé 20a6a61b45 [iOS] Add icon for CallKit in-call UI 2017-10-11 09:15:44 -05:00
Saúl Ibarra Corretgé 8e59660f33 [iOS] Update Xcode project file
CocoaPods has made some updates to the bundled resource files.
2017-10-09 15:38:31 -05:00
Lyubo Marinov 4bf19d73fd [RN] Fix documentation comments
* Javadoc introduced @code as a replacement of <code> and <tt> which is
  better aligned with other javadoc tags such as @link. Use it in the
  Java source code. If we switch to Kotlin, then we'll definitely use
  Markdown.

* There are more uses of @code in the JavaScript source code than <tt>
  so use @code for the sake of consistency. Eventually, I'd rather we
  switch to Markdown because it's easier on my eyes.

* Xcode is plain confused by @code and @link. The Internet says that
  Xcode supports the backquote character to denote the beginning and end
  of a string of characters which should be formatted for display as
  code but it doesn't work for me. <tt> is not rendered at all. So use
  the backquote which is rendered itself. Hopefully, if we switch to
  Markdown, then it'll be common between JavaScript and Objective-C
  source code.
2017-10-01 01:35:19 -05:00
Lyubo Marinov a3441030a3 [RN] Remove unnecessary source code 2017-09-29 12:43:42 -05:00
Lyubo Marinov 3b5ee2d4c6 [iOS] Add initial CallKit support 2017-09-29 12:00:13 -05:00
Saúl Ibarra Corretgé 8d11b3024e [iOS] Add initial CallKit support
This commit adds initial support for CallKit on supported platforms: iOS >= 10.

Since the call flow in Jitsi Meet is basically making outgoing calls, only
outgoing call support is currently handled via CallKit.

Features:
 - "Green bar" when in a call.
 - Native CallKit view when tapping on the call label on the lock screen.
 - Support for audio muting from the native CallKit view.
 - Support for recent calls (audio-only calls logged as Audio calls, others show
   as Video calls).
 - Call display name is room name.
 - Graceful downgrade on systems without CallKit support.

Limitations:
 - Native CallKit view cannot be shown for audio-only calls (this is a CallKit
   limitaion).
 - The video button in the CallKit view will start a new video call to the same
   room, and terminate the previous one.
 - No support for call hold.
2017-09-28 16:36:39 -05:00
Lyubo Marinov e1222e947b [RN] Documentation, comments 2017-09-27 13:08:37 -05:00
Saúl Ibarra Corretgé 341e7e01aa [RN] Add the ability to set the default URL in the SDK 2017-09-27 11:59:00 -05:00
Lyubo Marinov b55faab33e Coding style 2017-09-27 11:01:27 -05:00
Saúl Ibarra Corretgé 3fdffa7497 [RN] Add AppInfo module
It provides access to the app's display name and version.
2017-09-27 10:32:07 -05:00
Lyubo Marinov 72c9933e73 [RN] SDK building, installing, and publishing
Based on work authored by Shuai Li <sli@atlassian.com>, Daniel Ornelas
<dornelas@atlassian.com>, and Lyubo Marinov <lmarinov@atlassian.com>.
2017-09-11 20:12:56 -05:00
Lyubo Marinov fce0e4c22c [RN] Report loadConfigError with locationURL to the SDK consumers 2017-09-06 20:34:46 -05:00
Lyubo Marinov 4dc78ce458 [RN] Increase the coverage of JitsiMeetViewListener
JitsiMeetViewListener is an integral part of the public API of Jitsi
Meet SDK for Android. Utilize it in the Debug configuration of the Jitsi
Meet app for Android in order to increase (1) awareness of API breakages
and (2) API coverage.

The same goes for JitsiMeetViewDelegate in Jitsi Meet SDK and app for
iOS.
2017-09-06 16:31:15 -05:00
Lyubo Marinov 67edaac1c9 [RN] Coding style 2017-09-06 16:31:15 -05:00
Lyubo Marinov e830b80b6b [RN] Fix documentation 2017-09-06 16:31:15 -05:00
Saúl Ibarra Corretgé 284e4e543e [RN] Detect errors when loading the configuration
The error is stored in the redux store in base/config so other components can
consult it. It is also broadcasted as a new event in the external API for the
SDK.
2017-09-06 16:31:14 -05:00
Lyubo Marinov 1d8ee9d32f [RN] Reduce maintenance
JitsiMeetViewListener currently has methods of one and the same pattern
so adding new methods i.e. events i.e. redux action types is a question
of repetition in the Java source code. Speed up the support of new
events by trying to deal with them in a generic way.

The same goes for JitsiMeetViewDelegate.
2017-09-06 15:57:00 -05:00
Lyubo Marinov 6003b560ae [RN] Fix opening the same URL multiple times
Deep/universal linking now utilizes loadURL (when possible). But loadURL
is imperative in the native source code while its JavaScript counterpart
i.e. React App Component prop url is declarative. So there's the
following bug: open a URL, leave the conference (by tapping the hangup
button, for example), and then opening the same URL actually leaves you
on the Welcome page (if enabled; otherwise, a black screen).

The implementation has a flow though: opening the same URL twice in a
row without an intervening leave will leave the first opening and join
the new opening. Which can be improved by not leaving and joining if the
conference is joined, joining, an not leaving. But that can be done
separately as an improvement independent of the current implementation
details.
2017-08-15 17:32:37 -05:00
Lyubo Marinov 207393d98e [RN] Coding style 2017-08-15 17:32:37 -05:00
Saúl Ibarra Corretgé 122ebe48c7 [RN] Cache avatars and provide a default in case load fails
Avatars are cached to the filesystem and loaded from there when requested again.
The cache is cleaned after a conference ends and on application startup
(defensive move).

In addition, implement a fully local avatar system, which is used as a fallback
when loading a remote avatar fails. It can also be forced using a prop.

The fully local avatars use a user icon as a mask and apply a background color
qhich is picked by hashing the URI passed to the avatar. If no URI is passed a
random color is chosen.

A grace period of 1 second is also implemented so a default local avatar will be
rendered if an Avatar component is mounted but has no URI. If a URI is specified
later on, it will be loaded and displayed. In case loading the remote avatar
fails, the locally generated one will be used.
2017-08-03 13:45:41 -05:00
Lyubo Marinov 1ad8436cb5 [Android] Use loadURL in the app 2017-08-01 12:07:22 -05:00
Lyubo Marinov 6b2a93909b [iOS] Use loadURL in the app 2017-08-01 06:31:03 -05:00
Saúl Ibarra Corretgé aaf5dd75fa [iOS] Fix loading initial URL when app is closed
We must not pass nil as the URL, that will translate to null and we won't be
able to load the initial URL which is passed as the launch parameters.
2017-07-28 09:18:35 -05:00
Saúl Ibarra Corretgé 1fb31b6773 [iOS] Fix crash when a nil URL is loaded
NSDictionary doesn't support nil values, they must be objects, so use NSNull
instead, which is the kosher way to do it.
2017-07-27 11:33:56 +02:00
Lyubo Marinov 9871580e6d [iOS] Completeness (maybe) 2017-07-26 15:54:58 -05:00
Lyubo Marinov 3546cf4915 Fixes jsdocs, formatting 2017-07-26 15:54:57 -05:00
Lyubo Marinov a2c2d3bee1 [RN] Alternative to JitsiMeetView.loadURL w/o URL
Introduces loadURLObject in JitsiMeetView on Android and iOS which
accepts a Bundle and NSDictionary, respectively, similar in structure to
the JS object accepted by the constructor of Web's ExternalAPI. At this
time, only the property url of the bundle/dictionary is supported.
However, it allows the public API of loadURLObject to be consumed. The
property url will be made optional in the future and other properties
will be supported from which a URL will be constructed.
2017-07-26 15:53:35 -05:00
Lyubo Marinov f0ab835b46 [RN] Add loadURLString to JitsiMeetView
Initializing a new URL/NSURL instance is a chore especially when one
takes into account that the JavaScript side (1) is loading the URL
asynchronously and (2) is capable of parsing strings that may or may not
be represented as URL/NSURL.

The Android method loadURLString(String) may have been called
loadURL(String) to overload loadURL(URL) but I didn't want to do that
because:

1. It would not be compatible with existing source code such as
loadURL(null) which would have become ambiguous.

2. I wanted to achieve better convergence with the iOS API.
2017-07-25 19:07:01 -05:00
Saúl Ibarra Corretgé 99b856233d [iOS] Fix joining initial URL if app was closed
On iOS, if the app is closed the startup options are only passed as the
`launchOptions` dictionary of `applicationDidFinishLaunching`. Thus add a helper
method to be called from there by embedding applications so we can copy that
dictionary.
2017-07-07 08:57:49 -05:00
Saúl Ibarra Corretgé 82e10e1a00 [iOS] Don't bring the packager to the foreground upon launch 2017-07-06 14:07:20 +02:00
Daniel Ornelas 8a01067b62 Added post-script to the Release configuraiton to build iOS SDK as Universal framework 2017-06-23 19:39:53 -05:00
Daniel Ornelas 7c2d59033b Fixed nullable pointer warnings in iOS SDK 2017-06-23 19:39:41 -05:00
Saúl Ibarra Corretgé be30dd09e9 [iOS] Add scheme for building only the SDK 2017-06-19 16:08:30 -05:00
Saúl Ibarra Corretgé d7818be067 [iOS] Link with WebRTC.framework at the top level
Before, Jitsi Meet (the app) would only link with JitsiMeet.framework, which in
turn embedded WebRTC.framework. While possible, Apple doesn't allow apps with
nested frameworks to be submitted to the store. Now the app will link with
WebRTC.framework directly so there is no framework nesting.

A potential improvement here is to build WebRTC as a static library so it can
then be embedded in JitsiMeet.framework and completely hidden from the app.
2017-06-19 11:03:13 -05:00