forked from mirrors/linphone-iphone
Fixes for 5.2 release
FIx Fix PipController Other fixes (Reported on AppStoreConnect)
This commit is contained in:
parent
568b9eaae2
commit
422f84e92d
13 changed files with 87 additions and 57 deletions
|
|
@ -211,7 +211,7 @@
|
||||||
size_t contentCount = bctbx_list_size(contents);
|
size_t contentCount = bctbx_list_size(contents);
|
||||||
if (voiceContent)
|
if (voiceContent)
|
||||||
contentCount--;
|
contentCount--;
|
||||||
BOOL multiParts = ((linphone_chat_message_get_text_content(self.message) != NULL) ? bctbx_list_size(contents) > 2 : bctbx_list_size(contents) > 1);
|
BOOL multiParts = ((linphone_chat_message_get_utf8_text(self.message) != NULL) ? bctbx_list_size(contents) > 2 : bctbx_list_size(contents) > 1);
|
||||||
if (voiceContent && !multiParts) {
|
if (voiceContent && !multiParts) {
|
||||||
_cancelButton.hidden = _fileTransferProgress.hidden = _downloadButton.hidden = _playButton.hidden = _fileName.hidden = _fileView.hidden = _fileButton.hidden = YES;
|
_cancelButton.hidden = _fileTransferProgress.hidden = _downloadButton.hidden = _playButton.hidden = _fileName.hidden = _fileView.hidden = _fileButton.hidden = YES;
|
||||||
return;
|
return;
|
||||||
|
|
@ -732,7 +732,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
// Positioning text message
|
// Positioning text message
|
||||||
const char *utf8Text = linphone_chat_message_get_text_content(self.message);
|
const char *utf8Text = linphone_chat_message_get_utf8_text(self.message);
|
||||||
|
|
||||||
CGRect textFrame = self.messageText.frame;
|
CGRect textFrame = self.messageText.frame;
|
||||||
if (_contentViews.count > 0 || _finalImage.image)
|
if (_contentViews.count > 0 || _finalImage.image)
|
||||||
|
|
|
||||||
|
|
@ -140,12 +140,12 @@
|
||||||
const char *url = linphone_chat_message_get_external_body_url(message);
|
const char *url = linphone_chat_message_get_external_body_url(message);
|
||||||
const LinphoneContent *last_content = linphone_chat_message_get_file_transfer_information(message);
|
const LinphoneContent *last_content = linphone_chat_message_get_file_transfer_information(message);
|
||||||
// Last message was a file transfer (image) so display a picture...
|
// Last message was a file transfer (image) so display a picture...
|
||||||
if (url || last_content) {
|
if ((url || last_content) && message) {
|
||||||
if (linphone_chat_message_get_text_content(message))
|
if (linphone_chat_message_get_utf8_text(message))
|
||||||
return [NSString stringWithUTF8String:linphone_chat_message_get_text_content(message)];
|
return [NSString stringWithUTF8String:linphone_chat_message_get_utf8_text(message)];
|
||||||
return @"🗻";
|
return @"🗻";
|
||||||
} else {
|
} else {
|
||||||
const char *text = linphone_chat_message_get_text_content(message) ?: "";
|
const char *text = linphone_chat_message_get_utf8_text(message) ?: "";
|
||||||
return [NSString stringWithUTF8String:text] ?: [NSString stringWithCString:text encoding:NSASCIIStringEncoding]
|
return [NSString stringWithUTF8String:text] ?: [NSString stringWithCString:text encoding:NSASCIIStringEncoding]
|
||||||
?: NSLocalizedString(@"(invalid string)", nil);
|
?: NSLocalizedString(@"(invalid string)", nil);
|
||||||
}
|
}
|
||||||
|
|
@ -530,7 +530,7 @@ static const CGFloat REPLY_OR_FORWARD_TAG_HEIGHT = 18;
|
||||||
if (voiceContent)
|
if (voiceContent)
|
||||||
contentCount--;
|
contentCount--;
|
||||||
|
|
||||||
BOOL multiParts = ((linphone_chat_message_get_text_content(chat) != NULL) ? contentCount > 2 : contentCount > 1);
|
BOOL multiParts = ((linphone_chat_message_get_utf8_text(chat) != NULL) ? contentCount > 2 : contentCount > 1);
|
||||||
|
|
||||||
if (voiceContent && contentCount == 0) {
|
if (voiceContent && contentCount == 0) {
|
||||||
size = CGSizeMake(VOICE_RECORDING_PLAYER_WIDTH, VOICE_RECORDING_PLAYER_HEIGHT);
|
size = CGSizeMake(VOICE_RECORDING_PLAYER_WIDTH, VOICE_RECORDING_PLAYER_HEIGHT);
|
||||||
|
|
@ -618,7 +618,7 @@ static const CGFloat REPLY_OR_FORWARD_TAG_HEIGHT = 18;
|
||||||
|
|
||||||
|
|
||||||
// if here, either 1 file + text or just one file or just text.
|
// if here, either 1 file + text or just one file or just text.
|
||||||
BOOL justText = linphone_chat_message_get_text_content(chat) != NULL && contentCount == 1;
|
BOOL justText = linphone_chat_message_get_utf8_text(chat) != NULL && contentCount == 1;
|
||||||
if (justText) { // Just text
|
if (justText) { // Just text
|
||||||
size = [self computeBoundingBox:messageText
|
size = [self computeBoundingBox:messageText
|
||||||
size:CGSizeMake(width - CELL_MESSAGE_X_MARGIN - 4, CGFLOAT_MAX)
|
size:CGSizeMake(width - CELL_MESSAGE_X_MARGIN - 4, CGFLOAT_MAX)
|
||||||
|
|
@ -886,7 +886,7 @@ static const CGFloat REPLY_OR_FORWARD_TAG_HEIGHT = 18;
|
||||||
[_messageActionsIcons addObject:@"menu_copy_text_default"];
|
[_messageActionsIcons addObject:@"menu_copy_text_default"];
|
||||||
[_messageActionsBlocks addObject:^{
|
[_messageActionsBlocks addObject:^{
|
||||||
[thiz dismissPopup];
|
[thiz dismissPopup];
|
||||||
[UIPasteboard.generalPasteboard setString:[NSString stringWithUTF8String:linphone_chat_message_get_text_content(message)]];
|
[UIPasteboard.generalPasteboard setString:[NSString stringWithUTF8String:linphone_chat_message_get_utf8_text(message)]];
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,7 @@
|
||||||
|
|
||||||
NSString *sender = [FastAddressBook displayNameForAddress:linphone_chat_message_get_from_address(message)];
|
NSString *sender = [FastAddressBook displayNameForAddress:linphone_chat_message_get_from_address(message)];
|
||||||
_senderName.text = sender;
|
_senderName.text = sender;
|
||||||
const char * text = isIcal ? [ICSBubbleView getSubjectFromContentWithCmessage:message].UTF8String : linphone_chat_message_get_text_content(message);
|
const char * text = isIcal ? [ICSBubbleView getSubjectFromContentWithCmessage:message].UTF8String : linphone_chat_message_get_utf8_text(message);
|
||||||
if (text && strlen(text) == 0)
|
if (text && strlen(text) == 0)
|
||||||
text = nil;
|
text = nil;
|
||||||
_textContent.text = text ? [NSString stringWithUTF8String:text] : @"";
|
_textContent.text = text ? [NSString stringWithUTF8String:text] : @"";
|
||||||
|
|
|
||||||
|
|
@ -564,13 +564,15 @@ import AVFoundation
|
||||||
if call.replacedCall != nil {
|
if call.replacedCall != nil {
|
||||||
endCallKitReplacedCall = false
|
endCallKitReplacedCall = false
|
||||||
|
|
||||||
let uuid = CallManager.instance().providerDelegate.uuids["\(CallManager.uuidReplacedCall)"]
|
let uuid = CallManager.instance().providerDelegate.uuids["\(CallManager.uuidReplacedCall ?? "")"]
|
||||||
let callInfo = CallManager.instance().providerDelegate.callInfos[uuid!]
|
let callInfo = CallManager.instance().providerDelegate.callInfos[uuid!]
|
||||||
callInfo!.callId = CallManager.instance().referedToCall ?? ""
|
callInfo!.callId = CallManager.instance().referedToCall ?? ""
|
||||||
CallManager.instance().providerDelegate.callInfos.updateValue(callInfo!, forKey: uuid!)
|
if (callInfo != nil && uuid != nil && addr != nil) {
|
||||||
CallManager.instance().providerDelegate.uuids.removeValue(forKey: callId)
|
CallManager.instance().providerDelegate.callInfos.updateValue(callInfo!, forKey: uuid!)
|
||||||
CallManager.instance().providerDelegate.uuids.updateValue(uuid!, forKey: callInfo!.callId)
|
CallManager.instance().providerDelegate.uuids.removeValue(forKey: callId)
|
||||||
CallManager.instance().providerDelegate.updateCall(uuid: uuid!, handle: addr!.asStringUriOnly(), hasVideo: video, displayName: displayName)
|
CallManager.instance().providerDelegate.uuids.updateValue(uuid!, forKey: callInfo!.callId)
|
||||||
|
CallManager.instance().providerDelegate.updateCall(uuid: uuid!, handle: addr!.asStringUriOnly(), hasVideo: video, displayName: displayName)
|
||||||
|
}
|
||||||
} else if (CallManager.callKitEnabled()) {
|
} else if (CallManager.callKitEnabled()) {
|
||||||
let isConference = isConferenceCall(call: call)
|
let isConference = isConferenceCall(call: call)
|
||||||
let isEarlyConference = isConference && CallsViewModel.shared.currentCallData.value??.isConferenceCall.value != true // Conference info not be received yet.
|
let isEarlyConference = isConference && CallsViewModel.shared.currentCallData.value??.isConferenceCall.value != true // Conference info not be received yet.
|
||||||
|
|
@ -638,7 +640,7 @@ import AVFoundation
|
||||||
.OutgoingEarlyMedia:
|
.OutgoingEarlyMedia:
|
||||||
if (CallManager.callKitEnabled()) {
|
if (CallManager.callKitEnabled()) {
|
||||||
let uuid = CallManager.instance().providerDelegate.uuids[""]
|
let uuid = CallManager.instance().providerDelegate.uuids[""]
|
||||||
if (uuid != nil) {
|
if (uuid != nil && callId != nil) {
|
||||||
let callInfo = CallManager.instance().providerDelegate.callInfos[uuid!]
|
let callInfo = CallManager.instance().providerDelegate.callInfos[uuid!]
|
||||||
callInfo!.callId = callId
|
callInfo!.callId = callId
|
||||||
CallManager.instance().providerDelegate.callInfos.updateValue(callInfo!, forKey: uuid!)
|
CallManager.instance().providerDelegate.callInfos.updateValue(callInfo!, forKey: uuid!)
|
||||||
|
|
|
||||||
|
|
@ -642,7 +642,7 @@ class ChatConversationTableViewSwift: UIViewController, UICollectionViewDataSour
|
||||||
|
|
||||||
ChatConversationViewModel.sharedModel.removeTmpFile(filePath: plainFile)
|
ChatConversationViewModel.sharedModel.removeTmpFile(filePath: plainFile)
|
||||||
plainFile = ""
|
plainFile = ""
|
||||||
}else {
|
}else if chatMessage.contents.first?.filePath != nil {
|
||||||
self.previewItems.append(self.getPreviewItem(filePath: (chatMessage.contents.first?.filePath)!))
|
self.previewItems.append(self.getPreviewItem(filePath: (chatMessage.contents.first?.filePath)!))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -88,6 +88,10 @@ class MessageView: UIView, UITextViewDelegate {
|
||||||
messageWithEmojiView.addArrangedSubview(emojisButton)
|
messageWithEmojiView.addArrangedSubview(emojisButton)
|
||||||
emojisButton.alignParentRight().matchParentHeight().done()
|
emojisButton.alignParentRight().matchParentHeight().done()
|
||||||
|
|
||||||
|
if #available(iOS 17.0, *) {
|
||||||
|
emojisButton.isHidden = true
|
||||||
|
}
|
||||||
|
|
||||||
UIDeviceBridge.displayModeSwitched.readCurrentAndObserve { _ in
|
UIDeviceBridge.displayModeSwitched.readCurrentAndObserve { _ in
|
||||||
self.backgroundColor = VoipTheme.voipToolbarBackgroundColor.get()
|
self.backgroundColor = VoipTheme.voipToolbarBackgroundColor.get()
|
||||||
self.messageWithEmojiView.backgroundColor = VoipTheme.backgroundWhiteBlack.get()
|
self.messageWithEmojiView.backgroundColor = VoipTheme.backgroundWhiteBlack.get()
|
||||||
|
|
@ -99,7 +103,11 @@ class MessageView: UIView, UITextViewDelegate {
|
||||||
let chatRoom = ChatRoom.getSwiftObject(cObject: PhoneMainView.instance().currentRoom)
|
let chatRoom = ChatRoom.getSwiftObject(cObject: PhoneMainView.instance().currentRoom)
|
||||||
if ((messageText.text.isEmpty && !fileContext) || isLoading) {
|
if ((messageText.text.isEmpty && !fileContext) || isLoading) {
|
||||||
sendButton.isEnabled = false
|
sendButton.isEnabled = false
|
||||||
emojisButton.isHidden = false
|
if #available(iOS 17.0, *) {
|
||||||
|
emojisButton.isHidden = true
|
||||||
|
} else {
|
||||||
|
emojisButton.isHidden = false
|
||||||
|
}
|
||||||
NotificationCenter.default.post(name: Notification.Name("LinphoneResetTextViewSize"), object: self)
|
NotificationCenter.default.post(name: Notification.Name("LinphoneResetTextViewSize"), object: self)
|
||||||
lastNumLines = 0
|
lastNumLines = 0
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -111,7 +119,11 @@ class MessageView: UIView, UITextViewDelegate {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if onlyEmojis {
|
if onlyEmojis {
|
||||||
emojisButton.isHidden = false
|
if #available(iOS 17.0, *) {
|
||||||
|
emojisButton.isHidden = true
|
||||||
|
} else {
|
||||||
|
emojisButton.isHidden = false
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
emojisButton.isHidden = true
|
emojisButton.isHidden = true
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1784,8 +1784,10 @@ class MultilineMessageCell: SwipeCollectionViewCell, UICollectionViewDataSource,
|
||||||
var result = ""
|
var result = ""
|
||||||
do{
|
do{
|
||||||
let linphonePlayer = try core.createLocalPlayer(soundCardName: nil, videoDisplayName: nil, windowId: nil)
|
let linphonePlayer = try core.createLocalPlayer(soundCardName: nil, videoDisplayName: nil, windowId: nil)
|
||||||
try linphonePlayer.open(filename: _voiceRecordingFile!)
|
if _voiceRecordingFile != nil {
|
||||||
result = formattedDuration(linphonePlayer.duration)!
|
try linphonePlayer.open(filename: _voiceRecordingFile!)
|
||||||
|
}
|
||||||
|
result = formattedDuration(linphonePlayer.duration) ?? ""
|
||||||
linphonePlayer.close()
|
linphonePlayer.close()
|
||||||
}catch{
|
}catch{
|
||||||
Log.e(error.localizedDescription)
|
Log.e(error.localizedDescription)
|
||||||
|
|
@ -2026,13 +2028,13 @@ class MultilineMessageCell: SwipeCollectionViewCell, UICollectionViewDataSource,
|
||||||
subject = event.subject!
|
subject = event.subject!
|
||||||
return VoipTexts.bubble_chat_event_message_new_subject + subject
|
return VoipTexts.bubble_chat_event_message_new_subject + subject
|
||||||
case Int(LinphoneEventLogTypeConferenceParticipantAdded.rawValue):
|
case Int(LinphoneEventLogTypeConferenceParticipantAdded.rawValue):
|
||||||
participant = (event.participantAddress!.displayName != "" && event.participantAddress!.displayName != nil ? event.participantAddress!.displayName : event.participantAddress!.username)!
|
participant = (event.participantAddress!.displayName != nil && event.participantAddress!.displayName != "" ? event.participantAddress!.displayName : event.participantAddress!.username)!
|
||||||
return participant + VoipTexts.bubble_chat_event_message_has_joined
|
return participant + VoipTexts.bubble_chat_event_message_has_joined
|
||||||
case Int(LinphoneEventLogTypeConferenceParticipantRemoved.rawValue):
|
case Int(LinphoneEventLogTypeConferenceParticipantRemoved.rawValue):
|
||||||
participant = (event.participantAddress!.displayName != "" && event.participantAddress!.displayName != nil ? event.participantAddress!.displayName : event.participantAddress!.username)!
|
participant = (event.participantAddress!.displayName != nil && event.participantAddress!.displayName != "" ? event.participantAddress!.displayName : event.participantAddress!.username)!
|
||||||
return participant + VoipTexts.bubble_chat_event_message_has_left
|
return participant + VoipTexts.bubble_chat_event_message_has_left
|
||||||
case Int(LinphoneEventLogTypeConferenceParticipantSetAdmin.rawValue):
|
case Int(LinphoneEventLogTypeConferenceParticipantSetAdmin.rawValue):
|
||||||
participant = (event.participantAddress!.displayName != "" && event.participantAddress!.displayName != nil ? event.participantAddress!.displayName : event.participantAddress!.username)!
|
participant = (event.participantAddress!.displayName != nil && event.participantAddress!.displayName != nil && event.participantAddress!.displayName != "" ? event.participantAddress!.displayName : event.participantAddress!.username)!
|
||||||
return participant + VoipTexts.bubble_chat_event_message_now_admin
|
return participant + VoipTexts.bubble_chat_event_message_now_admin
|
||||||
case Int(LinphoneEventLogTypeConferenceParticipantUnsetAdmin.rawValue):
|
case Int(LinphoneEventLogTypeConferenceParticipantUnsetAdmin.rawValue):
|
||||||
participant = (event.participantAddress!.displayName != "" && event.participantAddress!.displayName != nil ? event.participantAddress!.displayName : event.participantAddress!.username)!
|
participant = (event.participantAddress!.displayName != "" && event.participantAddress!.displayName != nil ? event.participantAddress!.displayName : event.participantAddress!.username)!
|
||||||
|
|
@ -2043,28 +2045,28 @@ class MultilineMessageCell: SwipeCollectionViewCell, UICollectionViewDataSource,
|
||||||
return VoipTexts.bubble_chat_event_message_joined_group
|
return VoipTexts.bubble_chat_event_message_joined_group
|
||||||
case Int(LinphoneEventLogTypeConferenceSecurityEvent.rawValue):
|
case Int(LinphoneEventLogTypeConferenceSecurityEvent.rawValue):
|
||||||
let type = event.securityEventType
|
let type = event.securityEventType
|
||||||
let participant = event.securityEventFaultyDeviceAddress!.displayName != "" ? event.securityEventFaultyDeviceAddress!.displayName : event.securityEventFaultyDeviceAddress!.username
|
let participant = event.securityEventFaultyDeviceAddress!.displayName != nil && event.securityEventFaultyDeviceAddress!.displayName != "" ? event.securityEventFaultyDeviceAddress!.displayName : event.securityEventFaultyDeviceAddress!.username
|
||||||
switch (type.rawValue) {
|
switch (type.rawValue) {
|
||||||
case Int(LinphoneSecurityEventTypeSecurityLevelDowngraded.rawValue):
|
case Int(LinphoneSecurityEventTypeSecurityLevelDowngraded.rawValue):
|
||||||
if (participant!.isEmpty){
|
if (participant != nil && participant!.isEmpty){
|
||||||
return VoipTexts.bubble_chat_event_message_security_level_decreased
|
return VoipTexts.bubble_chat_event_message_security_level_decreased
|
||||||
}else{
|
}else{
|
||||||
return VoipTexts.bubble_chat_event_message_security_level_decreased_because + participant!
|
return VoipTexts.bubble_chat_event_message_security_level_decreased_because + participant!
|
||||||
}
|
}
|
||||||
case Int(LinphoneSecurityEventTypeParticipantMaxDeviceCountExceeded.rawValue):
|
case Int(LinphoneSecurityEventTypeParticipantMaxDeviceCountExceeded.rawValue):
|
||||||
if (participant!.isEmpty){
|
if (participant != nil && participant!.isEmpty){
|
||||||
return VoipTexts.bubble_chat_event_message_max_participant
|
return VoipTexts.bubble_chat_event_message_max_participant
|
||||||
}else{
|
}else{
|
||||||
return VoipTexts.bubble_chat_event_message_max_participant_by + participant!
|
return VoipTexts.bubble_chat_event_message_max_participant_by + participant!
|
||||||
}
|
}
|
||||||
case Int(LinphoneSecurityEventTypeEncryptionIdentityKeyChanged.rawValue):
|
case Int(LinphoneSecurityEventTypeEncryptionIdentityKeyChanged.rawValue):
|
||||||
if (participant!.isEmpty){
|
if (participant != nil && participant!.isEmpty){
|
||||||
return VoipTexts.bubble_chat_event_message_lime_changed
|
return VoipTexts.bubble_chat_event_message_lime_changed
|
||||||
}else{
|
}else{
|
||||||
return VoipTexts.bubble_chat_event_message_lime_changed_for + participant!
|
return VoipTexts.bubble_chat_event_message_lime_changed_for + participant!
|
||||||
}
|
}
|
||||||
case Int(LinphoneSecurityEventTypeManInTheMiddleDetected.rawValue):
|
case Int(LinphoneSecurityEventTypeManInTheMiddleDetected.rawValue):
|
||||||
if (participant!.isEmpty){
|
if (participant != nil && participant!.isEmpty){
|
||||||
return VoipTexts.bubble_chat_event_message_attack_detected
|
return VoipTexts.bubble_chat_event_message_attack_detected
|
||||||
}else{
|
}else{
|
||||||
return VoipTexts.bubble_chat_event_message_attack_detected_for + participant!
|
return VoipTexts.bubble_chat_event_message_attack_detected_for + participant!
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,7 @@ class ScheduledConferencesCell: UITableViewCell {
|
||||||
subject.text = (isBroadcast ? VoipTexts.conference_scheduled_title_broadcast_cell : VoipTexts.conference_scheduled_title_meeting_cell) + data.subject.value!
|
subject.text = (isBroadcast ? VoipTexts.conference_scheduled_title_broadcast_cell : VoipTexts.conference_scheduled_title_meeting_cell) + data.subject.value!
|
||||||
cancelledLabel.text = data.isConferenceCancelled.value == true ? ( data.canEdit.value == true ? VoipTexts.conference_scheduled_cancelled_by_me: VoipTexts.conference_scheduled_cancelled_by_organizer) : nil
|
cancelledLabel.text = data.isConferenceCancelled.value == true ? ( data.canEdit.value == true ? VoipTexts.conference_scheduled_cancelled_by_me: VoipTexts.conference_scheduled_cancelled_by_organizer) : nil
|
||||||
cancelledLabel.isHidden = data.isConferenceCancelled.value != true
|
cancelledLabel.isHidden = data.isConferenceCancelled.value != true
|
||||||
descriptionValue.text = data.description.value!
|
descriptionValue.text = data.description.value != nil ? data.description.value! : ""
|
||||||
urlValue.text = data.address.value!
|
urlValue.text = data.address.value!
|
||||||
self.joinConf.isHidden = data.isConferenceCancelled.value == true
|
self.joinConf.isHidden = data.isConferenceCancelled.value == true
|
||||||
self.editConf.isHidden = data.canEdit.value != true || data.isConferenceCancelled.value == true
|
self.editConf.isHidden = data.canEdit.value != true || data.isConferenceCancelled.value == true
|
||||||
|
|
|
||||||
|
|
@ -463,7 +463,7 @@ class ConferenceViewModel {
|
||||||
}
|
}
|
||||||
|
|
||||||
static func getConferenceSubject(conference:Conference) -> String? {
|
static func getConferenceSubject(conference:Conference) -> String? {
|
||||||
if (conference.subject!.count > 0) {
|
if (conference.subject != nil && conference.subject!.count > 0) {
|
||||||
return conference.subject
|
return conference.subject
|
||||||
} else {
|
} else {
|
||||||
let conferenceInfo = Core.get().findConferenceInformationFromUri(uri: conference.conferenceAddress!)
|
let conferenceInfo = Core.get().findConferenceInformationFromUri(uri: conference.conferenceAddress!)
|
||||||
|
|
|
||||||
|
|
@ -148,18 +148,20 @@ extension SingleCallView : AVPictureInPictureControllerDelegate {
|
||||||
activeVideoCallSourceView: currentCallView!.remoteVideo,
|
activeVideoCallSourceView: currentCallView!.remoteVideo,
|
||||||
contentViewController: pipVideoCallController)
|
contentViewController: pipVideoCallController)
|
||||||
pipController = AVPictureInPictureController(contentSource: pipContentSource)
|
pipController = AVPictureInPictureController(contentSource: pipContentSource)
|
||||||
pipController.delegate = self
|
if (pipController != nil) {
|
||||||
|
pipController.delegate = self
|
||||||
ControlsViewModel.shared.isVideoEnabled.readCurrentAndObserve{ (video) in
|
|
||||||
pipVideoCallController.matchVideoDimension()
|
ControlsViewModel.shared.isVideoEnabled.readCurrentAndObserve{ (video) in
|
||||||
self.pipController.canStartPictureInPictureAutomaticallyFromInline = video == true
|
pipVideoCallController.matchVideoDimension()
|
||||||
}
|
self.pipController.canStartPictureInPictureAutomaticallyFromInline = video == true
|
||||||
|
|
||||||
CallsViewModel.shared.currentCallData.observe(onChange: { callData in
|
|
||||||
if (callData??.call.state != .StreamsRunning && self.pipController.isPictureInPictureActive) {
|
|
||||||
self.pipController.stopPictureInPicture()
|
|
||||||
}
|
}
|
||||||
})
|
|
||||||
|
CallsViewModel.shared.currentCallData.observe(onChange: { callData in
|
||||||
|
if (callData??.call.state != .StreamsRunning && self.pipController.isPictureInPictureActive) {
|
||||||
|
self.pipController.stopPictureInPicture()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -66,7 +66,7 @@ class Avatar : UIView {
|
||||||
initialsLabel.isHidden = true
|
initialsLabel.isHidden = true
|
||||||
iconImageView.isHidden = false
|
iconImageView.isHidden = false
|
||||||
} else {
|
} else {
|
||||||
if (Core.get().defaultAccount?.isPhoneNumber(username: address.username!) == true) {
|
if (Core.get().defaultAccount != nil && address.username != nil && Core.get().defaultAccount!.isPhoneNumber(username: address.username!) == true) {
|
||||||
iconImageView.image = Avatar.singleAvatar
|
iconImageView.image = Avatar.singleAvatar
|
||||||
initialsLabel.isHidden = true
|
initialsLabel.isHidden = true
|
||||||
iconImageView.isHidden = false
|
iconImageView.isHidden = false
|
||||||
|
|
|
||||||
|
|
@ -2,23 +2,35 @@
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
<key>AD_UNIT_ID_FOR_BANNER_TEST</key>
|
|
||||||
<string></string>
|
|
||||||
<key>AD_UNIT_ID_FOR_INTERSTITIAL_TEST</key>
|
|
||||||
<string></string>
|
|
||||||
<key>CLIENT_ID</key>
|
<key>CLIENT_ID</key>
|
||||||
<string></string>
|
<string>221368768663-0ufgu96cel0auk4v0me863lgm252b9n2.apps.googleusercontent.com</string>
|
||||||
<key>REVERSED_CLIENT_ID</key>
|
<key>REVERSED_CLIENT_ID</key>
|
||||||
<string></string>
|
<string>com.googleusercontent.apps.221368768663-0ufgu96cel0auk4v0me863lgm252b9n2</string>
|
||||||
<key>API_KEY</key>
|
<key>API_KEY</key>
|
||||||
<string></string>
|
<string>AIzaSyDJTtlRCM7IqdVUU2dSIYq2YIsTz6bqnkI</string>
|
||||||
<key>GCM_SENDER_ID</key>
|
<key>GCM_SENDER_ID</key>
|
||||||
<string></string>
|
<string>221368768663</string>
|
||||||
|
<key>PLIST_VERSION</key>
|
||||||
|
<string>1</string>
|
||||||
<key>BUNDLE_ID</key>
|
<key>BUNDLE_ID</key>
|
||||||
<string></string>
|
<string>org.linphone.phone</string>
|
||||||
<key>PROJECT_ID</key>
|
<key>PROJECT_ID</key>
|
||||||
<string></string>
|
<string>linphone-iphone</string>
|
||||||
<key>STORAGE_BUCKET</key>
|
<key>STORAGE_BUCKET</key>
|
||||||
<string></string>
|
<string>linphone-iphone.appspot.com</string>
|
||||||
|
<key>IS_ADS_ENABLED</key>
|
||||||
|
<false/>
|
||||||
|
<key>IS_ANALYTICS_ENABLED</key>
|
||||||
|
<false/>
|
||||||
|
<key>IS_APPINVITE_ENABLED</key>
|
||||||
|
<true/>
|
||||||
|
<key>IS_GCM_ENABLED</key>
|
||||||
|
<true/>
|
||||||
|
<key>IS_SIGNIN_ENABLED</key>
|
||||||
|
<true/>
|
||||||
|
<key>GOOGLE_APP_ID</key>
|
||||||
|
<string>1:221368768663:ios:a2c822bc087b5a219431d2</string>
|
||||||
|
<key>DATABASE_URL</key>
|
||||||
|
<string>https://linphone-iphone.firebaseio.com</string>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|
|
||||||
6
Podfile
6
Podfile
|
|
@ -1,11 +1,11 @@
|
||||||
# Uncomment the next line to define a global platform for your project
|
# Uncomment the next line to define a global platform for your project
|
||||||
platform :ios, '12.0'
|
platform :ios, '13.0'
|
||||||
source "https://gitlab.linphone.org/BC/public/podspec.git"
|
source "https://gitlab.linphone.org/BC/public/podspec.git"
|
||||||
source "https://github.com/CocoaPods/Specs.git"
|
source "https://github.com/CocoaPods/Specs.git"
|
||||||
|
|
||||||
def all_pods
|
def all_pods
|
||||||
if ENV['PODFILE_PATH'].nil?
|
if ENV['PODFILE_PATH'].nil?
|
||||||
pod 'linphone-sdk', '~>5.3.0-alpha'
|
pod 'linphone-sdk', '~>5.3.0-beta'
|
||||||
else
|
else
|
||||||
pod 'linphone-sdk', :path => ENV['PODFILE_PATH'] # local sdk
|
pod 'linphone-sdk', :path => ENV['PODFILE_PATH'] # local sdk
|
||||||
end
|
end
|
||||||
|
|
@ -121,7 +121,7 @@ post_install do |installer|
|
||||||
|
|
||||||
installer.pods_project.targets.each do |target|
|
installer.pods_project.targets.each do |target|
|
||||||
target.build_configurations.each do |config|
|
target.build_configurations.each do |config|
|
||||||
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0'
|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.0'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue