From 0d602260be3c8806cd021406e1d3b962416227bc Mon Sep 17 00:00:00 2001 From: QuentinArguillere Date: Fri, 7 Jul 2023 15:07:44 +0200 Subject: [PATCH] Merge release/5.1 into master. This includes the rework of the chat conversation in Swift, and every fixes since the 5.0 release. --- .gitlab-ci.yml | 131 +- CHANGELOG.md | 56 +- Classes/AssistantView.m | 25 +- .../Base.lproj/ChatConversationCreateView.xib | 8 +- .../Base.lproj/ChatConversationInfoView.xib | 6 +- Classes/Base.lproj/ChatConversationView.xib | 131 +- Classes/Base.lproj/ChatsListView.xib | 5 +- Classes/Base.lproj/ContactDetailsView.xib | 65 +- Classes/Base.lproj/ContactsListView.xib | 19 +- Classes/Base.lproj/HistoryDetailsView.xib | 303 +-- Classes/ChatConversationCreateTableView.m | 137 +- Classes/ChatConversationCreateView.m | 62 +- Classes/ChatConversationImdnView.h | 2 +- Classes/ChatConversationImdnView.m | 44 +- Classes/ChatConversationInfoView.h | 1 + Classes/ChatConversationInfoView.m | 50 +- Classes/ChatConversationTableView.h | 3 + Classes/ChatConversationTableView.m | 69 +- Classes/ChatConversationView.h | 2 + Classes/ChatConversationView.m | 375 +-- Classes/ChatsListTableView.h | 1 + Classes/ChatsListTableView.m | 72 +- Classes/ChatsListView.h | 3 + Classes/ChatsListView.m | 58 +- Classes/Contact.h | 5 +- Classes/Contact.m | 49 +- Classes/ContactDetailsTableView.h | 1 + Classes/ContactDetailsTableView.m | 35 +- Classes/ContactDetailsView.h | 3 +- Classes/ContactDetailsView.m | 100 +- Classes/ContactsListTableView.m | 56 +- Classes/ContactsListView.h | 3 + Classes/ContactsListView.m | 42 +- Classes/DevicesListView.m | 2 +- Classes/DialerView.m | 95 +- Classes/EphemeralSettingsView.m | 5 +- Classes/FirstLoginView.m | 5 +- Classes/FloatingScrollDownButton.swift | 80 +- Classes/HistoryDetailsView.h | 3 +- Classes/HistoryDetailsView.m | 27 +- Classes/HistoryListTableView.m | 36 +- Classes/HistoryListView.m | 9 + Classes/LinphoneAppDelegate.m | 171 +- Classes/LinphoneCoreSettingsStore.m | 103 +- Classes/LinphoneManager.h | 5 + Classes/LinphoneManager.m | 195 +- .../Base.lproj/UIChatBubblePhotoCell.xib | 38 +- .../Base.lproj/UIChatBubbleTextCell.xib | 12 +- Classes/LinphoneUI/Base.lproj/UIChatCell.xib | 19 +- .../UIChatConversationImdnTableViewCell.xib | 6 +- .../UIChatConversationInfoTableViewCell.xib | 6 +- .../Base.lproj/UIChatCreateCell.xib | 8 +- .../UIChatCreateCollectionViewCell.xib | 41 - .../Base.lproj/UIConfirmationDialog.xib | 60 +- .../LinphoneUI/Base.lproj/UIContactCell.xib | 36 +- .../Base.lproj/UIContactDetailsCell.xib | 6 +- .../LinphoneUI/Base.lproj/UIHistoryCell.xib | 37 +- Classes/LinphoneUI/StatusBarView.m | 34 +- Classes/LinphoneUI/TabBarView.m | 36 +- Classes/LinphoneUI/UIBackToCallButton.m | 2 +- Classes/LinphoneUI/UIChatBubblePhotoCell.m | 12 +- Classes/LinphoneUI/UIChatBubbleTextCell.h | 2 +- Classes/LinphoneUI/UIChatBubbleTextCell.m | 105 +- Classes/LinphoneUI/UIChatCell.h | 3 +- Classes/LinphoneUI/UIChatCell.m | 42 +- .../UIChatConversationImdnTableViewCell.h | 2 +- .../UIChatConversationInfoTableViewCell.h | 2 +- Classes/LinphoneUI/UIChatCreateCell.h | 2 +- .../UIChatCreateCollectionViewCell.h | 3 +- .../UIChatCreateCollectionViewCell.m | 38 +- Classes/LinphoneUI/UICheckBoxTableView.m | 2 +- Classes/LinphoneUI/UICompositeView.h | 1 + Classes/LinphoneUI/UICompositeView.m | 10 +- Classes/LinphoneUI/UIConfirmationDialog.h | 12 +- Classes/LinphoneUI/UIConfirmationDialog.m | 24 +- Classes/LinphoneUI/UIContactCell.h | 3 +- Classes/LinphoneUI/UIContactCell.m | 1 + Classes/LinphoneUI/UIContactDetailsCell.m | 28 +- Classes/LinphoneUI/UIDigitButton.m | 1 - Classes/LinphoneUI/UIHistoryCell.h | 2 +- Classes/LinphoneUI/UIHistoryCell.m | 4 +- Classes/LinphoneUI/UILinphoneAudioPlayer.m | 12 +- Classes/LinphoneUI/UIRecordingCell.h | 2 - Classes/LinphoneUI/UIRecordingCell.m | 13 +- .../UIChatCreateCollectionViewCell.strings | Bin 206 -> 0 bytes .../UIChatCreateCollectionViewCell.strings | Bin 214 -> 0 bytes Classes/MagicSearch.swift | 36 +- Classes/PhoneMainView.h | 3 + Classes/PhoneMainView.m | 93 +- Classes/RecordingsListTableView.m | 2 - Classes/SettingsView.m | 137 +- Classes/SideMenuTableView.m | 34 +- Classes/SideMenuView.m | 4 +- Classes/Swift/AppManager.swift | 2 +- Classes/Swift/CallManager.swift | 453 ++-- Classes/Swift/Chat/Data/FileType.swift | 106 + .../ChatConversationTableViewModel.swift | 133 + .../ChatConversationViewModel.swift | 584 +++++ .../ChatConversationTableViewSwift.swift | 725 ++++++ .../Views/ChatConversationViewSwift.swift | 1592 ++++++++++++ .../Chat/Views/CircularProgressBarView.swift | 66 + .../Chat/Views/DownloadMessageCell.swift | 96 + Classes/Swift/Chat/Views/DropDownCell.swift | 38 + Classes/Swift/Chat/Views/DropDownCell.xib | 53 + Classes/Swift/Chat/Views/MessageView.swift | 152 ++ .../Chat/Views/MultilineMessageCell.swift | 2249 +++++++++++++++++ .../Swift/Chat/Views/UploadMessageCell.swift | 53 + .../Data/ScheduledConferenceData.swift | 10 +- .../ConferenceSchedulingViewModel.swift | 32 +- .../ConferenceWaitingRoomViewModel.swift | 2 +- .../Views/ConferenceHistoryDetailsView.swift | 12 +- .../ConferenceSchedulingSummaryView.swift | 54 +- .../Views/ConferenceSchedulingView.swift | 20 +- ....swift => ConferenceWaitingRoomView.swift} | 25 +- .../Conference/Views/ICSBubbleView.swift | 34 +- .../Views/ScheduledConferencesCell.swift | 48 +- .../Views/ScheduledConferencesView.swift | 25 +- .../Swift/Extensions/IOS/CopyableLabel.swift | 54 + .../Swift/Extensions/IOS/SnapkitBridge.swift | 54 + .../Extensions/IOS/UIButtonExtensions.swift | 4 +- .../Extensions/IOS/UIDeviceExtensions.swift | 25 +- .../Extensions/IOS/UIVIewExtensions.swift | 35 + .../LinphoneCore/AddressExtensions.swift | 7 +- .../LinphoneCore/CallExtensions.swift | 9 +- Classes/Swift/FileUtil.swift | 18 +- Classes/Swift/ProviderDelegate.swift | 61 +- Classes/Swift/Util/AudioPlayer.swift | 84 + .../Util/BackActionsNavigationView.swift | 431 ++++ .../Swift/Util/BackNextNavigationView.swift | 11 +- .../Swift/Util/CustomAlertController.swift | 172 ++ Classes/Swift/Util/TimestampUtils.swift | 5 +- Classes/Swift/Util/UIImageExtension.swift | 34 + Classes/Swift/Util/Viewers/ImageViewer.swift | 157 ++ Classes/Swift/Util/Viewers/MediaViewer.swift | 260 ++ Classes/Swift/Util/Viewers/TextViewer.swift | 79 + Classes/Swift/Voip/Theme/LightDarkColor.swift | 4 +- Classes/Swift/Voip/Theme/TextStyle.swift | 16 +- Classes/Swift/Voip/Theme/VoipTexts.swift | 74 +- Classes/Swift/Voip/Theme/VoipTheme.swift | 92 +- Classes/Swift/Voip/ViewModels/CallData.swift | 20 +- .../Voip/ViewModels/CallStatisticsData.swift | 9 +- .../Voip/ViewModels/CallsViewModel.swift | 75 +- .../ConferenceParticipantDeviceData.swift | 24 +- .../Voip/ViewModels/ConferenceViewModel.swift | 49 +- .../Voip/ViewModels/ControlsViewModel.swift | 28 +- .../AbstractCallView.swift | 203 ++ .../AbstractIncomingOutgoingCallView.swift} | 21 +- .../ActiveCallOrConferenceView.swift | 424 ---- .../ConferenceCallView.swift | 185 ++ .../IncomingCallView.swift | 6 +- .../OutgoingCallView.swift | 7 +- .../SingleCallView.swift | 114 + .../Fragments/ActiveCall/ActiveCallView.swift | 27 +- .../Voip/Views/Fragments/CallStatsView.swift | 45 +- .../Fragments/CallsList/CallsListView.swift | 10 +- .../CallsList/VoipCallContextMenu.swift | 4 +- .../VoipConferenceActiveSpeakerView.swift | 79 +- .../VoipConferenceAudioOnlyView.swift | 11 +- ...ipConferenceDisplayModeSelectionView.swift | 16 +- .../Conference/VoipConferenceGridView.swift | 28 +- .../Voip/Views/Fragments/ControlsView.swift | 8 +- .../Views/Fragments/DismissableView.swift | 4 + .../Voip/Views/Fragments/LocalVideoView.swift | 14 +- .../Voip/Views/Fragments/NumpadView.swift | 6 +- .../ParticipantsListView.swift | 8 +- .../VoipParticipantCell.swift | 3 +- .../PausedCallOrConferenceView.swift | 7 +- .../Fragments/VoipExtraButtonsView.swift | 63 +- .../Voip/Views/SharedLayoutConstants.swift | 2 +- Classes/Swift/Voip/Widgets/Avatar.swift | 250 +- .../Voip/Widgets/CallControlButton.swift | 3 + Classes/Swift/Voip/Widgets/FormButton.swift | 4 +- .../Swift/Voip/Widgets/RotatingSpinner.swift | 4 +- .../Swift/Voip/Widgets/StyledDatePicker.swift | 83 +- Classes/Swift/Voip/Widgets/StyledLabel.swift | 3 + .../Swift/Voip/Widgets/StyledTextView.swift | 15 +- .../Voip/Widgets/StyledValuePicker.swift | 29 +- Classes/Utils/FastAddressBook.h | 3 +- Classes/Utils/FastAddressBook.m | 231 +- Classes/Utils/FileTransferDelegate.h | 1 + Classes/Utils/FileTransferDelegate.m | 70 +- .../IASKAppSettingsViewController.m | 7 +- .../IASKSpecifierValuesViewController.m | 6 +- .../Views/IASKPSTitleValueSpecifierViewCell.h | 22 - .../Views/IASKPSTitleValueSpecifierViewCell.m | 53 - Classes/Utils/Utils.h | 6 +- Classes/Utils/Utils.m | 12 +- Classes/linphone-Bridging-Header.h | 3 +- Podfile | 18 +- Resources/ar.lproj/Localizable.strings | Bin 74146 -> 74662 bytes Resources/assistant_external_sip.rc | 9 + Resources/assistant_linphone_create.rc | 5 +- Resources/assistant_linphone_existing.rc | 10 +- Resources/de.lproj/Localizable.strings | Bin 81676 -> 82190 bytes Resources/en.lproj/Localizable.strings | Bin 52874 -> 54662 bytes Resources/fr.lproj/Localizable.strings | Bin 72370 -> 77768 bytes Resources/images/emoji.png | Bin 0 -> 817 bytes Resources/images/menu_notifications_off.png | Bin 3511 -> 7135 bytes Resources/images/menu_notifications_on.png | Bin 2758 -> 3913 bytes .../images/menu_voip_meeting_schedule.png | Bin 10032 -> 6569 bytes .../images/new_chat_attachment_default.png | Bin 0 -> 1401 bytes Resources/images/new_chat_send_default.png | Bin 0 -> 1161 bytes Resources/images/new_vr_off.png | Bin 0 -> 1297 bytes Resources/images/post_quantum_secure@3x.png | Bin 0 -> 14135 bytes .../side_menu_voip_meeting_schedule.png | Bin 0 -> 1871 bytes .../side_menu_voip_meeting_schedule@2x.png | Bin 0 -> 3189 bytes Resources/ja.lproj/Localizable.strings | Bin 72318 -> 72816 bytes Resources/linphonerc | 11 + Resources/linphonerc-factory | 13 + Resources/linphonerc~ipad | 1 + Resources/nl.lproj/Localizable.strings | Bin 78516 -> 79030 bytes Resources/ru.lproj/Localizable.strings | Bin 87374 -> 87894 bytes Settings/InAppSettings.bundle/Account.plist | 20 + Settings/InAppSettings.bundle/Advanced.plist | 28 + Settings/InAppSettings.bundle/Call.plist | 24 + Settings/InAppSettings.bundle/Chat.plist | 10 - Settings/InAppSettings.bundle/Contacts.plist | 10 + Settings/InAppSettings.bundle/LDAP.plist | 2 +- .../en.lproj/Account.strings | Bin 1278 -> 1378 bytes .../en.lproj/Audio.strings | Bin 1528 -> 1524 bytes .../fr.lproj/Account.strings | Bin 1414 -> 1496 bytes .../fr.lproj/Advanced.strings | Bin 1248 -> 1702 bytes linphone.xcodeproj/project.pbxproj | 613 ++--- .../NotificationService.swift | 180 +- .../msgNotificationService.entitlements | 2 + 225 files changed, 12199 insertions(+), 2946 deletions(-) delete mode 100644 Classes/LinphoneUI/Base.lproj/UIChatCreateCollectionViewCell.xib delete mode 100644 Classes/LinphoneUI/fr.lproj/UIChatCreateCollectionViewCell.strings delete mode 100644 Classes/LinphoneUI/hu.lproj/UIChatCreateCollectionViewCell.strings create mode 100644 Classes/Swift/Chat/Data/FileType.swift create mode 100644 Classes/Swift/Chat/ViewModels/ChatConversationTableViewModel.swift create mode 100644 Classes/Swift/Chat/ViewModels/ChatConversationViewModel.swift create mode 100644 Classes/Swift/Chat/Views/ChatConversationTableViewSwift.swift create mode 100644 Classes/Swift/Chat/Views/ChatConversationViewSwift.swift create mode 100644 Classes/Swift/Chat/Views/CircularProgressBarView.swift create mode 100644 Classes/Swift/Chat/Views/DownloadMessageCell.swift create mode 100644 Classes/Swift/Chat/Views/DropDownCell.swift create mode 100644 Classes/Swift/Chat/Views/DropDownCell.xib create mode 100644 Classes/Swift/Chat/Views/MessageView.swift create mode 100644 Classes/Swift/Chat/Views/MultilineMessageCell.swift create mode 100644 Classes/Swift/Chat/Views/UploadMessageCell.swift rename Classes/Swift/Conference/Views/{ConferenceWaitingRoomFragment.swift => ConferenceWaitingRoomView.swift} (90%) create mode 100644 Classes/Swift/Extensions/IOS/CopyableLabel.swift create mode 100644 Classes/Swift/Extensions/IOS/SnapkitBridge.swift create mode 100644 Classes/Swift/Util/AudioPlayer.swift create mode 100644 Classes/Swift/Util/BackActionsNavigationView.swift create mode 100644 Classes/Swift/Util/CustomAlertController.swift create mode 100644 Classes/Swift/Util/UIImageExtension.swift create mode 100644 Classes/Swift/Util/Viewers/ImageViewer.swift create mode 100644 Classes/Swift/Util/Viewers/MediaViewer.swift create mode 100644 Classes/Swift/Util/Viewers/TextViewer.swift create mode 100644 Classes/Swift/Voip/Views/CompositeViewControllers/AbstractCallView.swift rename Classes/Swift/Voip/Views/{Fragments/IncomingOuntgoingCommonView.swift => CompositeViewControllers/AbstractIncomingOutgoingCallView.swift} (74%) delete mode 100644 Classes/Swift/Voip/Views/CompositeViewControllers/ActiveCallOrConferenceView.swift create mode 100644 Classes/Swift/Voip/Views/CompositeViewControllers/ConferenceCallView.swift create mode 100644 Classes/Swift/Voip/Views/CompositeViewControllers/SingleCallView.swift delete mode 100755 Classes/Utils/InAppSettingsKit/Views/IASKPSTitleValueSpecifierViewCell.h delete mode 100755 Classes/Utils/InAppSettingsKit/Views/IASKPSTitleValueSpecifierViewCell.m create mode 100644 Resources/images/emoji.png create mode 100644 Resources/images/new_chat_attachment_default.png create mode 100644 Resources/images/new_chat_send_default.png create mode 100644 Resources/images/new_vr_off.png create mode 100644 Resources/images/post_quantum_secure@3x.png create mode 100644 Resources/images/side_menu_voip_meeting_schedule.png create mode 100644 Resources/images/side_menu_voip_meeting_schedule@2x.png diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e7cec4238..24585ba93 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,55 +1,98 @@ -variables: - workspace: linphone.xcworkspace - scheme: linphone - destination: name=iPhone 13 Pro - testResult_path: derivedData/Logs/Test +# COMMENTED FOR NOW - TODO : ENABLE CALLUI TESTS IN THE CI +# USE ONLY THE release/5.1 VERSION OF THIS FILE FOR NOW +# +# +# +#variables: +# workspace: linphone.xcworkspace +# scheme: linphone +# destination: name=iPhone 13 Pro +# testResult_path: derivedData/Logs/Test -stages: - - Build - - UITests +#stages: + # - Build + # - UITests -before_script: - - pod install - - pwd - - sed 's/fileprivate let tableView =/public let tableView =/g' ./Pods/DropDown/DropDown/src/DropDown.swift > tmp.swift && mv -f tmp.swift ./Pods/DropDown/DropDown/src/DropDown.swift +#before_script: +# - pod install +# - pwd +# - sed 's/fileprivate let tableView =/public let tableView =/g' ./Pods/DropDown/DropDown/src/DropDown.swift > tmp.swift && mv -f tmp.swift ./Pods/DropDown/DropDown/src/DropDown.swift -Compile & Build: - stage: Build - tags: ["macmini-m1-xcode13"] - before_script: +#Compile & Build: +# stage: Build +# tags: ["macmini-m1-xcode13"] +# before_script: +# - pod install --repo-update +# - pwd +# - sed 's/fileprivate let tableView =/public let tableView =/g' ./Pods/DropDown/DropDown/src/DropDown.swift > tmp.swift && mv -f tmp.swift ./Pods/DropDown/DropDown/src/DropDown.swift +# - xcrun simctl shutdown "$destination" && xcrun simctl erase "$destination" +# script: +# - xcodebuild -workspace $workspace -scheme $scheme -UseModernBuildSystem=YES -destination "$destination" -derivedDataPath derivedData +# after_script: [] +# +# stage: build +# tags: [ "macos-xcode13" ] + +# script: +# - pod install --repo-update +# - pwd +# - sed 's/fileprivate let tableView =/public let tableView =/g' ./Pods/DropDown/DropDown/src/DropDown.swift > tmp.swift && mv -f tmp.swift ./Pods/DropDown/DropDown/src/DropDown.swift +# - xcodebuild archive -scheme $archive_scheme -archivePath ./$archive_path -configuration Release -workspace ./linphone.xcworkspace -UseModernBuildSystem=YES -destination 'generic/platform=iOS' +# - xcodebuild -exportArchive -archivePath ./$archive_path -exportPath ./$export_path -exportOptionsPlist ./$export_options_plist -allowProvisioningUpdates -UseModernBuildSystem=YES -destination 'generic/platform=iOS' + +# artifacts: +# paths: +# - derivedData/Build +# when: always +# expire_in: 2 hour + + + +#after_script: +# - ${TRAINER_EXE} -p $testResult_path/*.xcresult -o $testResult_path/ +# - ${XCPARSE_EXE} attachments $testResult_path/*.xcresult results --uti public.image +# - mv $testResult_path/*.xcresult results && mv derivedData/logs.txt results + +#Call Views: +# stage: UITests +# tags: ["macmini-m1-xcode13"] +# dependencies: ["Compile & Build"] +# script: +# - xcodebuild test -workspace $workspace -scheme $scheme -sdk iphonesimulator -destination "$destination" -UseModernBuildSystem=YES -testPlan Default -derivedDataPath derivedData | tee derivedData/logs.txt + +# artifacts: +# paths: +# - results/* +# when: always +# reports: +# junit: +# - $testResult_path/*.xml +# expire_in: 4 week + + +variables: + archive_scheme: linphone + archive_path: linphone.xcarchive + export_path: linphone-adhoc-ipa + export_options_plist: linphone-adhoc.plist + +job-ios: + + stage: build + tags: [ "macos-xcode13" ] + + script: - pod install --repo-update - pwd - sed 's/fileprivate let tableView =/public let tableView =/g' ./Pods/DropDown/DropDown/src/DropDown.swift > tmp.swift && mv -f tmp.swift ./Pods/DropDown/DropDown/src/DropDown.swift - - xcrun simctl shutdown "$destination" && xcrun simctl erase "$destination" - script: - - xcodebuild -workspace $workspace -scheme $scheme -UseModernBuildSystem=YES -destination "$destination" -derivedDataPath derivedData - after_script: [] + - xcodebuild archive -scheme $archive_scheme -archivePath ./$archive_path -configuration Release -workspace ./linphone.xcworkspace -UseModernBuildSystem=YES -destination 'generic/platform=iOS' + - xcodebuild -exportArchive -archivePath ./$archive_path -exportPath ./$export_path -exportOptionsPlist ./$export_options_plist -allowProvisioningUpdates -UseModernBuildSystem=YES -destination 'generic/platform=iOS' + artifacts: paths: - - derivedData/Build + - $archive_path + - $export_path when: always - expire_in: 2 hour + expire_in: 1 week - - -after_script: - - ${TRAINER_EXE} -p $testResult_path/*.xcresult -o $testResult_path/ - - ${XCPARSE_EXE} attachments $testResult_path/*.xcresult results --uti public.image - - mv $testResult_path/*.xcresult results && mv derivedData/logs.txt results - -Call Views: - stage: UITests - tags: ["macmini-m1-xcode13"] - dependencies: ["Compile & Build"] - script: - - xcodebuild test -workspace $workspace -scheme $scheme -sdk iphonesimulator -destination "$destination" -UseModernBuildSystem=YES -testPlan Default -derivedDataPath derivedData | tee derivedData/logs.txt - - artifacts: - paths: - - results/* - when: always - reports: - junit: - - $testResult_path/*.xml - expire_in: 4 week diff --git a/CHANGELOG.md b/CHANGELOG.md index 533447c1c..c00227ebc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,15 +10,61 @@ Group changes to describe their impact on the project, as follows: Fixed for any bug fixes. Security to invite users to upgrade in case of vulnerabilities. +## [5.0.2] - 2023-16-03 + +### Changed +- Update linphone SDK to 5.2.32 + +### Fixed +- Performance issue causing a global slowing of the app, especially at launch +- Fix several memory leaks and crashes + +## [5.0.1] - 2023-10-01 + +### Changed +- Update linphone SDK to 5.2.11 + +### Fixed +- Makes sure sip.linphone.org accounts have a LIME X3DH server URL for E2E chat messages encryption +- Fix potential crash when displaying images received in a chatroom +- Fix bug that would cause the previous call to be terminated when resuming another call that was paused +- Fix participant video display in conferences when a second participant joined with video enabled + +## [5.0.0] - 2022-12-06 + +### Added +- Post Quantum encryption when using ZRTP +- Conference creation with scheduling, video, different layouts, showing who is speaking and who is muted, etc... +- Group calls directly from group chat rooms +- Chat rooms can be individually muted (no notification when receiving a chat message) +- Outgoing call video in early-media if requested by callee +- Call recordings can be exported +- Setting to prevent international prefix from account to be applied to call & chat +- Add a "Never ask again" option to the "Link my account" pop-up when starting the app + +### Changed +- In-call views have been re-designed +- Improved how contact avatars are generated +- 3-dots menu even for basic chat rooms with more options +- Update linphone SDK to 5.2.0 + +### Fixed +- Chatroom appearing as empty when being logged on multiple accounts +- Chatroom appearing as empty after playing a video file inside it +- Fix potential crash when entering a chatroom +- Fix potential crash when accessing to the delivery infos of a message in a group chat. +- IMDN logo not properly displayed when transfering or replying to a message with media (voice message, photo...) +- Clarified view when sending an image from the galery +- Various audio route fixes for CallKit and IOS 16 -## [4.6.4] - 2021-08-06 +## [4.6.4] - 2022-08-06 ### Changed - Update linphone SDK to 5.1.42 ### Fixed - Prevent possible application freeze and crash when creating a new chatroom, depending on the phone's contacts. -## [4.6.3] - 2021-02-06 +## [4.6.3] - 2022-02-06 ### Added - New "Contacts" menu in the settings, which allows the use of LDAP configurations @@ -33,7 +79,7 @@ Group changes to describe their impact on the project, as follows: - Display bug when changing audio device -## [4.6.2] - 2021-07-03 +## [4.6.2] - 2022-07-03 ### Fixed - Bug preventing the activation of the phone speaker during calls @@ -41,7 +87,7 @@ Group changes to describe their impact on the project, as follows: - Bug causing IMDNs to be missing in some chatrooms - Update linphone SDK to 5.1.7 -## [4.6.1] - 2021-04-03 +## [4.6.1] - 2022-04-03 ### Fixed - Crash in chatroom info view after entering background and re-entering foreground @@ -49,7 +95,7 @@ Group changes to describe their impact on the project, as follows: - Hard to see text (written in black) on dark mode - Removed duplicate push authorization request pop up on install -## [4.6.0] - 2021-31-02 +## [4.6.0] - 2022-31-02 ### Added - Reply to chat message feature (with original message preview) diff --git a/Classes/AssistantView.m b/Classes/AssistantView.m index dcde898a8..6812f782d 100644 --- a/Classes/AssistantView.m +++ b/Classes/AssistantView.m @@ -127,7 +127,9 @@ static UICompositeViewDescription *compositeDescription = nil; if (!mustRestoreView) { new_account = NULL; - number_of_accounts_before = bctbx_list_size(linphone_core_get_account_list(LC)); + MSList *accounts = [LinphoneManager.instance createAccountsNotHiddenList]; + number_of_accounts_before = bctbx_list_size(accounts); + bctbx_free(accounts); [self resetTextFields]; [self changeView:_welcomeView back:FALSE animation:FALSE]; } @@ -519,6 +521,10 @@ static UICompositeViewDescription *compositeDescription = nil; #endif linphone_push_notification_config_set_provider(pushConfig, PROVIDER_NAME); + if (strcmp(creatorDomain, "sip.linphone.org")==0) { + linphone_core_set_media_encryption(LC, LinphoneMediaEncryptionSRTP); + } + new_account = linphone_core_create_account(LC, accountParams); linphone_account_params_unref(accountParams); @@ -705,7 +711,7 @@ static UICompositeViewDescription *compositeDescription = nil; LinphoneAccount *default_account = linphone_core_create_account(LC, default_account_params); const char *identity = linphone_account_params_get_identity(linphone_account_get_params(default_account)); if (identity) { - LinphoneAddress *default_addr = linphone_core_interpret_url(LC, identity); + LinphoneAddress *default_addr = linphone_core_interpret_url_2(LC, identity, false); if (default_addr) { const char *domain = linphone_address_get_domain(default_addr); const char *username = linphone_address_get_username(default_addr); @@ -1011,10 +1017,13 @@ static UICompositeViewDescription *compositeDescription = nil; [LinphoneManager.instance lpConfigSetInt:[NSDate new].timeIntervalSince1970 forKey:@"must_link_account_time"]; [LinphoneManager.instance configurePushProviderForAccounts]; - if (number_of_accounts_before < bctbx_list_size(linphone_core_get_account_list(LC))) { + + MSList *accounts = [LinphoneManager.instance createAccountsNotHiddenList]; + if (number_of_accounts_before < bctbx_list_size(accounts)) { LOGI(@"A proxy config was set up with the remote provisioning, skip assistant"); [self onDialerClick:nil]; } + bctbx_free(accounts); _waitView.hidden = true; if (nextView == nil) { @@ -1149,7 +1158,11 @@ static UICompositeViewDescription *compositeDescription = nil; _outgoingView = DialerView.compositeViewDescription; [self configureAccount]; } else if (status == LinphoneAccountCreatorStatusAccountExist) { - _outgoingView = AssistantLinkView.compositeViewDescription; + if([LinphoneManager.instance lpConfigIntForKey:@"hide_link_phone_number"]){ + _outgoingView = DialerView.compositeViewDescription; + }else{ + _outgoingView = AssistantLinkView.compositeViewDescription; + } [self configureAccount]; } else { if (resp) { @@ -1568,7 +1581,6 @@ UIColor *previousColor = (UIColor*)[sender backgroundColor]; \ - (IBAction)onRemoteProvisioningLoginClick:(id)sender { ONCLICKBUTTON(sender, 100, { _waitView.hidden = NO; - [LinphoneManager.instance lpConfigSetInt:1 forKey:@"transient_provisioning" inSection:@"misc"]; [self configureAccount]; }); } @@ -1584,10 +1596,11 @@ UIColor *previousColor = (UIColor*)[sender backgroundColor]; \ UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault - handler:^(UIAlertAction * action) {}]; + handler:^(UIAlertAction * action) {}]; [errView addAction:defaultAction]; [self presentViewController:errView animated:YES completion:nil]; + _waitView.hidden = TRUE; } else { linphone_core_set_provisioning_uri(LC, [self addSchemeToProvisiionninUriIMissing:[self findTextField:ViewElement_URL].text].UTF8String); [self resetLiblinphone:TRUE]; diff --git a/Classes/Base.lproj/ChatConversationCreateView.xib b/Classes/Base.lproj/ChatConversationCreateView.xib index a3a8d83cd..bbf38c238 100644 --- a/Classes/Base.lproj/ChatConversationCreateView.xib +++ b/Classes/Base.lproj/ChatConversationCreateView.xib @@ -1,9 +1,9 @@ - + - + @@ -175,13 +175,13 @@ - + - + diff --git a/Classes/Base.lproj/ChatConversationInfoView.xib b/Classes/Base.lproj/ChatConversationInfoView.xib index 75d87f5cf..083f7064f 100644 --- a/Classes/Base.lproj/ChatConversationInfoView.xib +++ b/Classes/Base.lproj/ChatConversationInfoView.xib @@ -1,9 +1,9 @@ - + - + @@ -97,7 +97,7 @@ + - diff --git a/Classes/Base.lproj/HistoryDetailsView.xib b/Classes/Base.lproj/HistoryDetailsView.xib index 215cecdd4..63116312d 100644 --- a/Classes/Base.lproj/HistoryDetailsView.xib +++ b/Classes/Base.lproj/HistoryDetailsView.xib @@ -1,7 +1,10 @@ - + + - + + + @@ -11,6 +14,7 @@ + @@ -26,19 +30,19 @@ - + - + - + - + - + - - + + - diff --git a/Classes/LinphoneUI/Base.lproj/UIContactCell.xib b/Classes/LinphoneUI/Base.lproj/UIContactCell.xib index 7b39d696e..1f68f7212 100644 --- a/Classes/LinphoneUI/Base.lproj/UIContactCell.xib +++ b/Classes/LinphoneUI/Base.lproj/UIContactCell.xib @@ -1,11 +1,9 @@ - - - - + + - + @@ -14,37 +12,47 @@ + - + - - + + - + - - + + diff --git a/Classes/LinphoneUI/Base.lproj/UIContactDetailsCell.xib b/Classes/LinphoneUI/Base.lproj/UIContactDetailsCell.xib index 3fd4cc6d0..f69fd659a 100644 --- a/Classes/LinphoneUI/Base.lproj/UIContactDetailsCell.xib +++ b/Classes/LinphoneUI/Base.lproj/UIContactDetailsCell.xib @@ -1,9 +1,9 @@ - + - + @@ -61,7 +61,7 @@ -