Compare commits

..

1 commit

Author SHA1 Message Date
benoit.martins
3517cf69cd Add emoji picker 2025-03-28 16:29:28 +01:00
27 changed files with 44 additions and 61 deletions

View file

@ -7,7 +7,7 @@
objects = {
/* Begin PBXBuildFile section */
4ED1F0A881A9ACB5977A8987 /* BuildFile in Frameworks */ = {isa = PBXBuildFile; };
4ED1F0A881A9ACB5977A8987 /* (null) in Frameworks */ = {isa = PBXBuildFile; };
660AAF7F2B839272004C0FA6 /* msgNotificationService.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 660AAF7B2B839271004C0FA6 /* msgNotificationService.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
660D8A712B517D260092694D /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 660D8A702B517D260092694D /* GoogleService-Info.plist */; };
6613A0AE2BAEB7DF008923A4 /* MeetingFragment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6613A0AD2BAEB7DF008923A4 /* MeetingFragment.swift */; };
@ -43,8 +43,6 @@
66FBFC4B2B83BD7B00BC6AB1 /* CoreExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66C491FA2B24D32600CEA16D /* CoreExtension.swift */; };
66FDB7812C7C689A00561566 /* EventEditViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66FDB7802C7C689A00561566 /* EventEditViewController.swift */; };
C60E8F192C0F649200A06DB8 /* UIApplicationExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = C60E8F182C0F649200A06DB8 /* UIApplicationExtension.swift */; };
C618BF562D75CA03005A00E0 /* linphonesw in Frameworks */ = {isa = PBXBuildFile; productRef = C618BF552D75CA03005A00E0 /* linphonesw */; };
C618BF582D75CA0D005A00E0 /* linphonesw in Frameworks */ = {isa = PBXBuildFile; productRef = C618BF572D75CA0D005A00E0 /* linphonesw */; };
C62817282C1B389700DBA646 /* SideMenuAccountRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = C62817272C1B389700DBA646 /* SideMenuAccountRow.swift */; };
C628172E2C1C3A3600DBA646 /* AccountExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = C628172D2C1C3A3600DBA646 /* AccountExtension.swift */; };
C62817302C1C3DCC00DBA646 /* AccountModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C628172F2C1C3DCC00DBA646 /* AccountModel.swift */; };
@ -407,7 +405,6 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
C618BF582D75CA0D005A00E0 /* linphonesw in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -415,8 +412,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
C618BF562D75CA03005A00E0 /* linphonesw in Frameworks */,
4ED1F0A881A9ACB5977A8987 /* BuildFile in Frameworks */,
4ED1F0A881A9ACB5977A8987 /* (null) in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -1070,7 +1066,7 @@
};
};
};
buildConfigurationList = D719ABAE2ABC67BF00B41C10 /* Build configuration list for PBXProject "linphone" */;
buildConfigurationList = D719ABAE2ABC67BF00B41C10 /* Build configuration list for PBXProject "Linphone" */;
compatibilityVersion = "Xcode 14.0";
developmentRegion = en;
hasScannedForEncodings = 0;
@ -1079,9 +1075,6 @@
Base,
);
mainGroup = D719ABAA2ABC67BF00B41C10;
packageReferences = (
C618BF542D75CA03005A00E0 /* XCRemoteSwiftPackageReference "linphone-sdk-swift-ios" */,
);
productRefGroup = D719ABB42ABC67BF00B41C10 /* Products */;
projectDirPath = "";
projectRoot = "";
@ -1716,7 +1709,7 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
D719ABAE2ABC67BF00B41C10 /* Build configuration list for PBXProject "linphone" */ = {
D719ABAE2ABC67BF00B41C10 /* Build configuration list for PBXProject "Linphone" */ = {
isa = XCConfigurationList;
buildConfigurations = (
D719ABC02ABC67BF00B41C10 /* Debug */,
@ -1735,30 +1728,6 @@
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
/* Begin XCRemoteSwiftPackageReference section */
C618BF542D75CA03005A00E0 /* XCRemoteSwiftPackageReference "linphone-sdk-swift-ios" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://gitlab.linphone.org/BC/public/linphone-sdk-swift-ios.git";
requirement = {
branch = stable;
kind = branch;
};
};
/* End XCRemoteSwiftPackageReference section */
/* Begin XCSwiftPackageProductDependency section */
C618BF552D75CA03005A00E0 /* linphonesw */ = {
isa = XCSwiftPackageProductDependency;
package = C618BF542D75CA03005A00E0 /* XCRemoteSwiftPackageReference "linphone-sdk-swift-ios" */;
productName = linphonesw;
};
C618BF572D75CA0D005A00E0 /* linphonesw */ = {
isa = XCSwiftPackageProductDependency;
package = C618BF542D75CA03005A00E0 /* XCRemoteSwiftPackageReference "linphone-sdk-swift-ios" */;
productName = linphonesw;
};
/* End XCSwiftPackageProductDependency section */
};
rootObject = D719ABAB2ABC67BF00B41C10 /* Project object */;
}

View file

@ -17,7 +17,7 @@
BlueprintIdentifier = "D719ABB22ABC67BF00B41C10"
BuildableName = "Linphone.app"
BlueprintName = "Linphone"
ReferencedContainer = "container:linphone.xcodeproj">
ReferencedContainer = "container:Linphone.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
@ -46,7 +46,7 @@
BlueprintIdentifier = "D719ABB22ABC67BF00B41C10"
BuildableName = "Linphone.app"
BlueprintName = "Linphone"
ReferencedContainer = "container:linphone.xcodeproj">
ReferencedContainer = "container:Linphone.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</LaunchAction>
@ -63,7 +63,7 @@
BlueprintIdentifier = "D719ABB22ABC67BF00B41C10"
BuildableName = "Linphone.app"
BlueprintName = "Linphone"
ReferencedContainer = "container:linphone.xcodeproj">
ReferencedContainer = "container:Linphone.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>

View file

@ -26,7 +26,6 @@ import linphone // needed for unwrapped function linphone_core_set_push_and_app_
import Combine
import UniformTypeIdentifiers
import Network
import SwiftUI
#if USE_CRASHLYTICS
import Firebase

View file

@ -20,7 +20,6 @@
import Foundation
import linphonesw
import Combine
import SwiftUI
// swiftlint:disable line_length
// swiftlint:disable type_body_length

View file

@ -19,7 +19,6 @@
import Foundation
import linphonesw
import SwiftUI
class CallMediaEncryptionModel: ObservableObject {
var coreContext = CoreContext.shared

View file

@ -19,7 +19,6 @@
import Foundation
import linphonesw
import SwiftUI
class SentVideoWindow: ObservableObject {
var widthFactor: CGFloat = 1

View file

@ -19,7 +19,6 @@
import Foundation
import linphonesw
import SwiftUI
class ParticipantModel: ObservableObject {

View file

@ -21,7 +21,6 @@ import SwiftUI
import linphonesw
import AVFAudio
import Combine
import SwiftUI
// swiftlint:disable line_length
// swiftlint:disable type_body_length

View file

@ -19,7 +19,6 @@
import linphonesw
import Combine
import SwiftUI
// swiftlint:disable line_length
class ContactViewModel: ObservableObject {

View file

@ -18,7 +18,6 @@
*/
import linphonesw
import SwiftUI
class ContactsListViewModel: ObservableObject {

View file

@ -18,7 +18,6 @@
*/
import linphonesw
import SwiftUI
class EditContactViewModel: ObservableObject {

View file

@ -18,7 +18,6 @@
*/
import linphonesw
import SwiftUI
class FavoriteContactsListViewModel: ObservableObject {

View file

@ -625,6 +625,12 @@ struct ConversationFragment: View {
HStack(spacing: 0) {
if !voiceRecordingInProgress {
Button {
isMessageTextFocused = true
DispatchQueue.main.async {
if let inputView = UIResponder.currentFirstResponder() as? UITextField {
inputView.inputView = inputView.inputView
}
}
} label: {
Image("smiley")
.renderingMode(.template)
@ -635,6 +641,15 @@ struct ConversationFragment: View {
.padding(.top, 4)
}
.padding(.horizontal, isMessageTextFocused ? 0 : 2)
.onChange(of: isMessageTextFocused) { focused in
if focused {
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
if let inputView = UIResponder.currentFirstResponder() as? UITextField {
inputView.inputView = UIInputView(frame: CGRect.zero, inputViewStyle: .keyboard)
}
}
}
}
Button {
self.isShowPhotoLibrary = true
@ -1361,6 +1376,21 @@ struct VoiceRecorderPlayer: View {
timer = nil
}
}
extension UIResponder {
private static weak var _currentFirstResponder: UIResponder?
static func currentFirstResponder() -> UIResponder? {
_currentFirstResponder = nil
UIApplication.shared.sendAction(#selector(findFirstResponder), to: nil, from: nil, for: nil)
return _currentFirstResponder
}
@objc private func findFirstResponder() {
UIResponder._currentFirstResponder = self
}
}
/*
#Preview {
ConversationFragment(conversationViewModel: ConversationViewModel(), conversationsListViewModel: ConversationsListViewModel(), sections: [MessagesSection], ids: [""])

View file

@ -19,7 +19,6 @@
import linphonesw
import Combine
import SwiftUI
// swiftlint:disable line_length
class ConversationForwardMessageViewModel: ObservableObject {

View file

@ -20,7 +20,6 @@
import Foundation
import linphonesw
import Combine
import SwiftUI
// swiftlint:disable line_length
class ConversationsListViewModel: ObservableObject {

View file

@ -19,7 +19,6 @@
import linphonesw
import Combine
import SwiftUI
// swiftlint:disable line_length
class StartConversationViewModel: ObservableObject {

View file

@ -18,7 +18,6 @@
*/
import linphonesw
import SwiftUI
class HelpViewModel: ObservableObject {
private let TAG = "[HelpViewModel]"

View file

@ -19,7 +19,6 @@
import linphonesw
import Combine
import SwiftUI
class HistoryListViewModel: ObservableObject {

View file

@ -19,7 +19,6 @@
import linphonesw
import Combine
import SwiftUI
// swiftlint:disable line_length
class StartCallViewModel: ObservableObject {

View file

@ -18,7 +18,6 @@
*/
import linphonesw
import SwiftUI
class MeetingModel: ObservableObject {

View file

@ -18,7 +18,6 @@
*/
import linphonesw
import SwiftUI
class AccountProfileViewModel: ObservableObject {

View file

@ -18,7 +18,6 @@
*/
import linphonesw
import SwiftUI
class AccountSettingsViewModel: ObservableObject {

View file

@ -18,7 +18,6 @@
*/
import linphonesw
import SwiftUI
class SettingsViewModel: ObservableObject {

View file

@ -18,7 +18,6 @@
*/
import linphonesw
import SwiftUI
class SharedMainViewModel: ObservableObject {

View file

@ -96,7 +96,7 @@ class Log: LoggingServiceDelegate {
#endif
}
func onLogMessageWritten(logService: LoggingService, domain: String, level: LogLevel, message: String) {
func onLogMessageWritten(logService: linphonesw.LoggingService, domain: String, level: linphonesw.LogLevel, message: String) {
output(message, level.rawValue, domain)
}

View file

@ -19,7 +19,6 @@
import linphonesw
import Combine
import SwiftUI
final class MagicSearchSingleton: ObservableObject {

View file

@ -4,6 +4,12 @@ source "https://gitlab.linphone.org/BC/public/podspec.git"
source "https://github.com/CocoaPods/Specs.git"
def basic_pods
if ENV['PODFILE_PATH'].nil?
pod 'linphone-sdk', '~> 5.4.0-alpha'
else
pod 'linphone-sdk', :path => ENV['PODFILE_PATH'] # local sdk
end
crashlytics
end