Here is the list of the changes and features provided by the Rainbow-React-Native-SDK All notable changes to Rainbow-React-Native-SDK will be documented in this file.
Other Changes:
- Upgraded React Native to version 0.75.1 in both the library and the example app.
- Upgraded the Rainbow iOS SDK to the latest version.
- Replaced native-base with react-native-pager for improved performance and maintenance.
- Replaced react-native-simple-dialogs with the Dialog component from react-native-paper.
- Updated react-native-gifted-chat to the latest version and resolved breaking changes.
Fixes:
- Resolved an issue where the app logo was not displaying on iOS.
- Fixed the invalid date format returned by the React Native SDK native side.
- Addressed upstream dependency conflicts that occurred during npm install.
Fixes:
- Minor UI fixes.
Api Changes
- Removed the corporateId property fromIcontact
- Removed the conferenceInitiatorJid property from IConference in CallTypes
- Removed the IRoomConfEndPoint interface from IBubble
Other Changes:
- Upgraded Rainbow iOS SDK from version 2.4.0 to 2.8.0, addressing all breaking changes listed
- Improved overall Example app responsiveness by implementing a SafeArea component for better UI adaptation.
Fixes:
- [iOS] Fixed an issue where the remote video was not displaying correctly.
- [iOS] Resolved the issue where the active call banner remained after ending a call.
- Fixed an issue with mute/unmute functionality not working on iOS.
- Fixed the “Sort files by name” feature, which was not functioning as expected.
- [iOS] Fixed an issue where incoming WebRTC calls were not received after missing one.
Other Changes:
- Update Rainbow Android sdk from 2.42.0 to 2.55.0-beta.2.
- Upgrade some of third party libraries versions to latest version.
iOS
: Resolve dependency issue caused by the React Native version gap between Android and iOS.
Fixes:
- Fix issue where ringtone is still playing after a missed call.
Other Changes:
- Fix a dependency issue and Android API Compatibility regarding
androidx.core:core-ktx:+
New Features:
- Authentication Process Refactor
- Introduced AuthComponentsProvider to allow custom authentication components.
- Introduced AuthNavigator for handling authentication navigation flow.
- Provided default authentication components which can be overridden by consumer applications.
Improvements :
- Refactored state management to use useAppSelector for better type safety and cleaner code.
- Simplified state and actions export to make them more accessible for consumer applications.
Other Changes
- Enhanced documentation to include detailed instructions on customizing authentication components and integrating the new authentication process.
- Updated error handling to provide more descriptive messages during authentication and navigation processes.
Other Changes:
- Updated React Native version from 0.71.0 to 0.73.2, resolving all associated dependency issues.
- Updated Rainbow Android SDK to version 2.42.0.
- Updated example sample code on GitHub to align with the latest changes.
API Changes:
- Added a new property isRemoteVideoEnabled to the ICall object, allowing users to enable or disable remote video during call
Fixes:
- Fixed an issue where sharing a remote video call would encounter sharing problems.
- Resolved a bug that caused the delegated conference call to end and then reappear as a new incoming call after two seconds.
- Fix upstream dependency conflicts encountered when installing npm packages into the example app. With this update, there is no longer a need to use the "--force" or "--legacy-peer-deps" command to resolve such conflicts.
Other Changes:
- Updated Rainbow Android SDK to version 2.33-beta, addressing and fixing any associated breaking changes.
- Refactored the codebase to remove the dependency on the react-native-router-flux package and replaced it with react native navigation for improved navigation handling.
Please refer to the documentation available in the Rainbow API hub for more details on this update
.
Fixes:
Fixes in P2P webRtc calls:
- Fix mic/speaker issues in P2P webRtc calls.
- Fix remote and Local videos are not shown on the webRtc video calls.
Fixes in Conferences webRtc calls:
- Bubble Participants List is not updated when the user joins or leave a conference webRtc call.
- Fix for mute/unmute icon is not working properly.
- Fix for add/remove video icon is not working properly.
- Fix join conference banner appears again when the conference end.
API Changes:
ApplicationInfromation
- new property
onCancelPress?: () => void
to allow user customize the modal Cancel button. - new property
onOkPress?: () => void
to allow user customize the modal OK button. - new property
modalContent?: React.ReactNode
to allow user customize the modal content. - new property
modalOptions?: React.ReactNode
to allow user add new modal action buttons.
ContactCardView
- new property
leftItems?: React.ReactNode
to allow user customize the left section on contact card.
ConfernceVideoView
- new property
renderActionButtons?: () => React.ReactNode
to allow user to add any action buttons to the conference video view.
ParticipantsView
- new property
renderParticipantProfileView?: () => React.ReactNode
to allow user decide on how he want to render the conference attendees profile picture view.
P2PCallActions
- new property
style?: {actionsContainer: ViewStyle}
to allow user pass hos own style for the call buttons container.
P2PCallView
- Wrap RTCView for videos streams in a View component
PariticipantsListView
- new property
renderParticipantContainer?:(participant: IParticipant ) => React.ReactNode
to allow user to replace the default contact card view with his own view for render a contacts list .
ForwardedMessageView
- new property
messageTabStyle?: ViewStyle
to allow user to customize style of the message view tab button. - new property
participantsTabStyle?: ViewStyle
to allow user customize style of participant iew tab button. - new property
customView?: React.ReactNode
to allow user pass hiw own customize view for the whole forward message component
PresenceList
- new property
presenceItemView?:() => React.ReactNode
to allow decide how he want to render the presence icon view.
PresenceView
- new property
customView?: React.ReactNode;
to allow the user to pass his own custom view for presence icon(as an image, icon or button ..ets).
SearchBar
- new property
rightElement?: React.ReactElement
to allow user to add any component to the right section of the search bar (like a cancel button ). - new property
leftIcon?: React.ReactElement
to allow user to customize the left Icon inside search bar. - new property
rightIcon?: React.ReactElement
to allow user to customize the right Icon inside search bar.
Fixes:
- Fix missed Logs attachment when send logs via email.
Other Changes:
FileProvider Setup
- To fix the missed logs file issue we used the FileProvider for secure file sharing and accessing files with content URIs.
- Set up the FileProvider by adding the following code to the AndroidManifest.xml file:
<application>
...
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:grantUriPermissions="true"
android:exported="false">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
...
</application>
- Create a new file called file_paths.xml in the res/xml directory and added the necessary configuration. Check provider_paths.xml
API Changes:
- Add a new param to
Class mainActivity
to onPushMessageReceived in notificationHandler so you can pass your app mainActivity class to the RN library witch used for handling the push notification.
Fixes:
- fix wrong date format in messages rendered by gifted-chat lib.
- fix chat notification from bubble is not showing when the app is killed.
- fix issue that when receiving a chat message when app is killed, the app wil start silently.
Other Changes:
- update
react-native-gifted-chat
to the latest 2.1.0 - Update the
Android SDK
to version 2.29.0. - Handle push call notification when the app is fully stopped.
- View the contact name who is sending a message in the bubble on top of the message container, check method renderBubbleContainer
Fixes:
- Fix app crashing when ends an active conference call
API Changes:
- Add a new setter/getter
getChannelId()
andsetChannelId(String mChannelId)
method for notification channel ID in the notification handler class.
Fixes:
- Clear the notification counter on the app icon when reading the message from the conversation.
- Fix a null contact object returned when you receive the first message from a non-roster contact.
Other Changes:
- Customize notification channel to allow users to control and manage the notification they receive from the RN app
by creating a custom notification channel in their app MainActivity and setting the channel_id :
- Make sure to create your customize notification channel with your app-specified properties: see method createNotificationChannel
- We have added a new method to
setChannelId
to notificationHandler class so you can set your app channel ID. - Also make sure to set your channel ID in your
FirebaseService
class for your push notification.
- Upgrade Rainbow Android SDK to 2.26.0.
- Return the Licenses for the connected user as an array licenses: string[], the ["Essential", "Enterprise" and any other license the user might subscribe to ].
- Upgrade react-native-screens to latest version
3.20.0
. - Add new valuemanual_away to the presence enum that returns when the user changes his presence to away manually from the web.
API Changes:
- Add new param
mainActivity.class
toRainbowPackage.setApplication()
method in MainApplication class. - Remove
intent
param formNotificationHandler
constructor.
Fixes:
- Fix invalid date issue in bubble and P2P conversations.
- Fix typo error in authentication result event name in ios.
- Fix issue that notification is not clickable.
- Fix keyboard closed when tabbing on TextInput on login screen issue.
- Fix local video gets merged with the other video issue.
- Fix mute/unMute issue pn peer tp peer webrtc calls.
- Fix issue add/remove button is not synched with the invite/remove contact result.
- Fix user presence is not consistent when user changes his presence from web.
- Fix add contact to my network button is not working on conversation chat view.
Other Changes:
-
Update React-native version to 0.70.0 and solve the break changesReact Native Upgrade Helper
-
Add patch file for react-native-router-flux+4.3.1.patch to fix incompatibility issue with the new RN version :
-
Update node, npm and metro version.
-
update native-base version to 3.4.19.
API Changes:
- Add new boolean property
amIconnected
to IBubble to check if the connected user is connected to the active conference call.
Fixes:
- The contact's presence is not updated in the conversations list.
Other Changes:
- Upgrade the Rainbow Android SDK to version 2.22.0 and solve all the break changes.
- Upgrade all third-party libraries versions to the latest in sample code on GitHub.
Other Changes:
- Add new method
renderCustomMessageContainer = (messageProps: CustomMessageContainerProps<IMessage>)
to Messages component to custom the style of standard message container.
Other Changes:
- Add new props to Messages component to custom the background and container style of standard message date/Time .
- New method
renderCustomTime:(Props: MessageTimeProps<IMessage>)=>;
to custom container background and the text style for the message time. - New prop
renderCustomTime:TextStyle
to custom container background and the text style for the message date.
- New method
API Changes:
-
[user Profile Service]: adding new method
updateUserInfo(updateUserRequest: IUpdateUserQuery):void
to update the connected user information. check docs here managing profile.and sample code for more info. -
Adding new props to IUser obj:
isAllowedToModifyProfileInfo
: to check if the user is allowed to update his profile.isAllowedToChangePresence
: to check if the user is allowed to update his presence.IUpdateUserQuery
:interface for the query obj that contains the user profile info you want to update.IServicePlane
: enum for the account license type.
-
Add new
fileType
prop to IMessage interface to indicate the file type associated with a message. -
Break Changes:
- update all the buttons and make its icons customizable, by providing users the option to pass their own icon as png or any type they want.
Other Changes:
- Add a new
<Header />
common component, and expose the styles and content props to make it customizable. - Add new method
renderMessageText
to custom the standard message font style.SeeMessageComponent
API Changes:
- [SharedFile Services]: Android ONLY, adding new method
uploadFileToMyRainbowSharing
. - [Messages Services]: handle sending urgency, by replacing
sendMessage(message: IMessage, attachedFileUri:string[])
tosendMessage(message: IMessage, urgency: string, attachedFileUri: string[]): void
. - [Messages Services]: adding send message with additional content:
sendMessageWithAdditionalContentAndUrgency(conversationJid: string,text: string, additionalCont?: string,additionalContType?: string, urgency?: IUrgencyType): void
.
Break Changes:
- Refactor IMessage, by adding new props:
urgency
,alternativeContent
,isDeleted
,isForwarded
,isReplied
, remove:system
flag, changemsgType
contents types. - Refactor connected user type: IUser, by adding new props:
servicePlane
andlanguage
and replacing thename
,imageURL
,presence
with IContact object. - Move method
getConnectedUser
from theauthService
and added it touserProfileService
. - Remove
EventType.ConnectedUserPresenceUpdated
, and makeEventType.ConnectedUserUpdated
trigger for any changes occurs in the connected user, including the user presence. - adding new mandatory props to
<SharedFiles .../>
component:sharedFileArray: IFile[]
andisLoading: boolean
.
Other Changes:
- remove
mediaType
from IRoomConfEndPoint. - [iOS] sorting the conversation list according to the last update date.
- [Example App Side]: adding how to sort the shared files, either by date, name, size.
- Update the
Android SDK
version from 2.18.1 to 2.19.0. - [Fix Notification]: can't open the currently active call from the notification panner.
API Changes:
- Add new property
activeSpeaker?: IContact
to get the current active talker in IConference. - Add new method
fetchAllSharedFilesInPeer(peerJid: string, isBubble: boolean): void
to fetch all shared files (sent and received) in bubble and conversation. check Shared files. - Expose shared file info( name, size, and the file viewers ) in IFile
- Add a new property to the IConference object:
(isSharingEnabled: boolean, sharingParticipant?: IConferenceParticipants)
to get the sharing participant's updates. - Support previously unsupported features by the iOS Rainbow SDK including:
- custom data for the connected user [
userProfileService.updateCustomData(customData)
] - the screen sharing participant in IConference object [
conferenceCall.sharingParticipant
]
Fixed:
- Fix a crash when tapping on any contact from the search result list.
- Fix the iOS message menu picker crash.
Other Changes:
- Upgrade the Android SDK version from
2.16.0
to2.18.1
. - Upgrade iOS SDK from
2.3.0
to2.4.0
. - Handle push notifications.
- Refactor
DropDownMenu
component and make it customizable by adding new props:iconName
,onSelectItem
andrenderCustomItem
. - Expose a
renderSendButton
function to customize the "Send" text button with an icon to send messages. - Expose a style property for the presence icon.
- Make the iOS bubble Id in the
bubble.id
value similar to the Android value result.
API Changes:
- Expose new property
isBot
in IConversation object to identify one2one bot conversations.
Fixed:
- Fix app crash issue when tapping on any contact from the search result list
API Changes:
- Upgrade Android SDK version 2.15.0
- Export a couple of a common components used in react-native-rainbow-module :
Timer
andImageHolder
. - Update the example code to give more details on managing webrtc and Conference Calls. check Sample Code.
API Breaking changes:
Conference and Audio/Video webRTC calls:
- Adding customizable call components for all the call types (conference, peer-to-peer call). check retrieve calls.
- Provide a new
IP2P
,IConference
,IPBX
, and genericICall<T>
Interfaces types for webRTC, conference, and PBX calls. check CallTypes - Provide a new components that handle the Local video, screen-sharing, and remote video in webrtc calls. check managing webRTC calls.
- Add new props to webRTC call view component to allow the user to customize the incoming, outgoing, and active call view based on his app needs. check managing webRTC calls.
- Add new props to the WebrtcConference call view component to allow the user to customize the participant's view, and call view based on the call state( incoming, active, outgoing). check managing webRTC calls.
- Export
ParticipantConferenceView
component to allow user to customize the view of the conference participants. - Provide a reusable components buttons for all the call actions and allow the user to customize the button icon and style
Fixed:
- Fix issues with join conference.
- Fix issue with the speaker button.
- Fix issue when adding video to webRTCConference call.
API Changes:
- Add new API lock/ unlock conference, please check docs in Rainbow API HUB Managing Conferences.
API Changes:
- Show the incoming screen sharing for P2P and conference call.
- Show the screen sharing publisher in conference call [only Android].
- Add enable/disable local video in P2P call.
Fixed:
- Fixing crash occurs when switching mobile to the 'Landscape' position.
- Fixing wrong active conference call view, where its some time shows as incoming call, not active call!.
- Fixing not showing the participant video stream, while joining conference.
- Fixing time restart in [P2P, Conference] call, when peer call enable/disable his remote video [IOS].
Other Changes:
- Upgrade Android SDK version from
2.11.0-beta1
to2.12.0-beta2
. - Upgrade IOS SDK version from
2.2.0
to2.3.0
. - Adding
GetConferenceScreenSharingUpdate
event to listen for Conference Screen Sharing changes. - Adding props
wasInitiatedWithShare
,videoRemoteStreamCount
,isLocalVideoEnabled
in ICall, and removeisRemoteVideoCall
. - Create
ShareConferenceView
component.
Breaking Changes:
- Refactor the
Bubbles
component so it can be customizable easily by the user side, please check docs in Rainbow API HUB Bubbles Component. - Refactor the
Conversations
component so it can be customizable easily by the user side, please check docs in Rainbow API HUB Retrieve Conversation.
Added:
- Adding new item
WithBadge
for customized tab badges, where you can check how to use it by this example: BubbleInvitationBadge. - Adding ConversationCard.
Fixed:
- Fixing Can't Opening the downloaded files for Android version >= 11.
- Un mute participant get stuck.
- Fixing Contact Presence not synced in the call Logs.
- Fixing the Bubble Message View is not synced when edit bubble.
- Fixing edit bubble is not synced in both conversations and bubbles list.
Other Changes:
- Remove
getMyBubbles
with the associated eventMyBubblesUpdated
in Bubble Services, where you can usegetBubbles
instead and filter them byisMyUserOwner
flag. - Rename callback props
onBubbleCreationResult
From(actionName: string,creationResult: BubbleErrorCode)
to(creationResult: BubbleErrorCode)
in CreateBubble Component.
Breaking Changes:
- Refactor the
Message
component so it can be customizable easily by the user side, please check docs in Rainbow API HUB MAKE AN IM CONVERSATION.
Other Changes:
- Rename
sent
prop in IMessage toisSent
- Change
onItemClick: (actionName: string, data?: IBubble) => void
toonItemClick: (data?: IBubble) => void
in Bubbles component. - Adding Contact Services;
- Adding Message Services;
- Adding Conversation Services;
- Adding Conference Services;
API Changes:
-
Add new API
createAutoAcceptedBubble(name: string, topic: string)
to create an auto accept bubble, check docs in Rainbow API HUB BubbleServices. -
Add new API
inviteParticipantToBubble(bubbleId: string, contactJid: string, asModerator: string, withInvitation: string )
to invite a participant as a moderator or a member, with an option to send an invite or not, check docs in Rainbow API HUB BubbleParticipants. -
Add new API
getBubbleById(bubbleId: string)
to fetch a bubble using its Id, check docs in Rainbow API HUB BubbleServices. -
Add new API
delegateConference(conferenceRoomId: string, participantId: string)
to transfer the meeting control to another attendee, check docs in Rainbow API HUB Managing Conferences. -
Add new bubble event that fires whenever a bubble is updated. It contains only that bubble.
EventType.OnBubbleUpdated
check docs in Rainbow API HUB BubbleServices. Fixes: -
Fix bubble topic in conference object does not exist in IOS side.
Other Changes:
- Change bubbles list event name from
EventType.BubblesUpdated
toEventType.BubblesListUpdated
.
API Changes:
- Add new property
customData
for IBubble interface which includes customized data added by you to bubble. - Add new API
promoteContactFromBubble(bubbleId: string, contactJid: string)
to promote a member in a bubble(room) to be an organizer, check docs in Rainbow API HUB BubbleParticipants. - Add new API
demoteContactFromBubble(bubbleId: string, contactJid: string)
to demote an organizer in a bubble(room) to be a normal member, check docs in Rainbow API HUB BubbleParticipants. - IM: A new property IsTyping has been added in Im module which allows other contacts to know if the current user is composing or not.
Fixes:
- Fix organizer can't add participants.
- Fix 'is typing' users are not shown.
- Fix images are not shown on the .net server from IOS side.
Other Changes:
- change
promoteOwner(bubbleId: string, contactJid: string)
method name togiveOwnerShip(bubbleId: string, contactJid: string)
in BubbleParticipants.
-
API Changes:
-
Add new API
hangupParticipantFromConference(bubbleId: string, contactJid: string)
to hang up one of the participants during the conference call, check docs in Rainbow API HUB BubbleParticipants. -
Add new API
promoteOwner(bubbleId: string, contactJid: string)
to change one of the ownership of the bubble, check docs in Rainbow API HUB BubbleParticipants. -
Breaking Changes:
-
Upgrade Android ALE SDK version to 2.9.2.
-
Fixes:
-
Fix bugs in the conference incoming call.
-
Fix a bug in the Active call panner for P2P calls.
-
Fix a bug in showing permission when the first installation.
-
Fix a bug in messages.
-
API Changes:
-
Add new api
BubbleParticipants.removeContactFromBubble(bubbleId:string, contactJid:string)
for remove contact from a bubble, check docs in Rainbow API HUB BubbleParticipants. -
Add new property
roomEvent
for IMessage interface to indicate if the message contains a room event (new invitation, leave and join bubble). -
Add new property
conference
for IMessage interface to indicate if the message contains a webrtc conference event (someone add/remove conference call) -
Other Changes:
-
Fix for multiple notifications showing in the top navigation bar issue.
-
Handle upload files and show progress bar while uploading/downloading files.
-
Fix bug in load more messages.
-
API Changes:
-
Show conference call attendees and non attendees.
-
Enhancing the conference messages UI when conference is added/ended.
-
Fixing duplicate notification in Android side.
-
Handle load more messages.
-
show activity indicator until the messages is loaded.
-
API Changes:
-
Add new service
BubbleCustomData
for update/delete bubble custom data: all you need is to import this service which will provide the following method:updateCustomDataForBubble(bubbleId: string, customData: {})
deleteCustomDataForBubble(bubbleId: string)
getCustomDataFromBubble(bubbleId: string, key: string)
.
-
Other Changes:
-
Update the version of react native to 0.65.0 in the Sample app.
-
Fix null value for bubble profile pic when receiving new conference call.
-
Add new bubble topic in
IConference
call object. -
Fix the background color for default Contacts avatar.
- Update the version of react native to 0.65.0.
- Fixes for the invalid date in chat messages.
- Fixes on join conference when the user is not the owner of the bubbleAdd active Connected.
- UI fixes in conference call view.
- Add active Connected Call intimation on top of the application.
- Switch between cameras (front and back) during a call.
- Add mute all participants and un mute all participants.
- Make the local video in a conference as separate video;
- Handle sending files in the messages.
- Changing the host name.
- Fixing Bugs.
- Add the ability to change rainbow server host platform and pass platform specific AppId & AppSecret initialize the SDK module.
- Add the ability to add video into the conference.
- Add the ability to receive all videos from all publishers in an ongoing conference.
- Get connected conference bubble.
- Add joining conference.
- Add pending contact invitation counter flag.
- some UI fixes.
- Send conversation by email.
- Delete all conversation messages.
- Allow the connected to change his presence manually.
- Enhancement for attaching files.
- Launch camera for attaching the captured photo.
- Bug fixes.
- Update and refactor the documentation.
- Managing webRtc conference calls: start, join and end a conference call.
- retrieve the number of pending bubbles invitations.
- Accept/ decline an incoming invitation to a bubble.
- Bug Fixes
- Edit bubble information (change name, topics and change avatar)
- Handle leave bubbles.
- Handle delete bubbles.
- Handle archive bubbles.
- Add a new participants to an existing bubble.
- Handle the message options: forward,delete and reply.
- Send message with important and information type.
- refactor the processing of Rainbow conversations and bubbles in RN.
- Handle push notifications.
- update Github links in the npm package.
- Handle Back button pressed.
- Fixes for Call History component
- Docs: find alternative way to document interface in typescript
- Setup environment for Automation testing
- Fixes for exporting Bubbles and Conversation.
- Fixes for iOS >= 14 compatibility issues.
- search by name for a Rainbow contact.