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 @@ -