Use TutorialCommons, and host data in the AppDelegate

This commit is contained in:
QuentinArguillere
2020-08-27 17:29:10 +02:00
parent 637353467c
commit 263a245a69
5 changed files with 30 additions and 42 deletions

View File

@@ -14,6 +14,7 @@
66B14F6A24D945B30041952F /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 66B14F6924D945B30041952F /* Preview Assets.xcassets */; };
66B14F6D24D945B30041952F /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 66B14F6B24D945B30041952F /* LaunchScreen.storyboard */; };
66B14F7524D94A8B0041952F /* ChatRoomExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66B14F7424D94A8B0041952F /* ChatRoomExample.swift */; };
66E0886524F7D9FD00399387 /* commons.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66E0886424F7D9FD00399387 /* commons.swift */; };
F6D7663413A00C7D71C9256A /* Pods_ChatRoomTutorial.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA7659F911FB1269A70609BD /* Pods_ChatRoomTutorial.framework */; };
/* End PBXBuildFile section */
@@ -29,6 +30,7 @@
66B14F6C24D945B30041952F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
66B14F6E24D945B30041952F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
66B14F7424D94A8B0041952F /* ChatRoomExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatRoomExample.swift; sourceTree = "<group>"; };
66E0886424F7D9FD00399387 /* commons.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = commons.swift; sourceTree = "<group>"; };
DA7659F911FB1269A70609BD /* Pods_ChatRoomTutorial.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ChatRoomTutorial.framework; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
@@ -47,6 +49,7 @@
66B14F5424D945B10041952F = {
isa = PBXGroup;
children = (
66E0886324F7D9E200399387 /* TutorialCommons */,
66B14F5F24D945B10041952F /* ChatRoomTutorial */,
66B14F5E24D945B10041952F /* Products */,
7803BAE55D29633EC66FF288 /* Pods */,
@@ -85,6 +88,15 @@
path = "Preview Content";
sourceTree = "<group>";
};
66E0886324F7D9E200399387 /* TutorialCommons */ = {
isa = PBXGroup;
children = (
66E0886424F7D9FD00399387 /* commons.swift */,
);
name = TutorialCommons;
path = ../TutorialCommons;
sourceTree = "<group>";
};
7803BAE55D29633EC66FF288 /* Pods */ = {
isa = PBXGroup;
children = (
@@ -220,6 +232,7 @@
66B14F6124D945B10041952F /* AppDelegate.swift in Sources */,
66B14F7524D94A8B0041952F /* ChatRoomExample.swift in Sources */,
66B14F6324D945B10041952F /* SceneDelegate.swift in Sources */,
66E0886524F7D9FD00399387 /* commons.swift in Sources */,
66B14F6524D945B10041952F /* ContentView.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;

View File

@@ -7,11 +7,12 @@
//
import UIKit
import SwiftUI
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
@ObservedObject var tutorialContext = ChatRoomExampleContext()
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.

View File

@@ -6,8 +6,6 @@
// Copyright © 2020 BelledonneCommunications. All rights reserved.
import linphonesw
import SwiftUI
enum ChatroomExampleState
{
@@ -33,9 +31,7 @@ class ChatRoomExampleContext : ObservableObject
@Published var coreVersion: String = Core.getVersion
/*------------ Logs related variables ------------------------*/
var log : LoggingService?
var logManager : LinphoneLoggingServiceManager?
@Published var logsEnabled : Bool = true
var loggingUnit = LoggingUnit()
/*--- Variable shared between Basic and FlexiSip chatrooms ----
-------- "A" always initiates the chat, "B" answers --------*/
@@ -72,17 +68,8 @@ class ChatRoomExampleContext : ObservableObject
mCoreChatDelegate.tutorialContext = self
mRegistrationConfirmDelegate.tutorialContext = self
let factory = Factory.Instance // Instanciate
logManager = LinphoneLoggingServiceManager()
logManager!.tutorialContext = self;
log = LoggingService.Instance
log!.addDelegate(delegate: logManager!)
log!.logLevel = LogLevel.Debug
factory.enableLogCollection(state: LogCollectionState.Enabled)
// Initialize Linphone Core
try? mCore = factory.createCore(configPath: "", factoryConfigPath: "", systemContext: nil)
try? mCore = Factory.Instance.createCore(configPath: "", factoryConfigPath: "", systemContext: nil)
// main loop for receiving notifications and doing background linphonecore work:
mCore.autoIterateEnabled = true
@@ -141,9 +128,9 @@ class ChatRoomExampleContext : ObservableObject
if (isBasicChatroom && mBasicChatRoom == nil)
{
chatParams.backend = ChatRoomBackend.Basic
mBasicChatRoom = try mCore.createChatRoom(params: chatParams
, localAddr: mProxyConfigA.contact!
, subject: "Basic ChatRoom"
, participants: chatDest)
// Basic chatroom do not require setup time
basicChatRoomState = ChatroomExampleState.Started
@@ -156,7 +143,6 @@ class ChatRoomExampleContext : ObservableObject
chatParams.groupEnabled = false
mChatRoomA = try mCore.createChatRoom(params: chatParams
, localAddr: mProxyConfigA.contact!
, subject: "Flexisip ChatRoom"
, participants: chatDest)
mChatRoomA!.addDelegate(delegate: mChatRoomDelegate)
// Flexisip chatroom requires a setup time. The delegate will set the state to started when it is ready.
@@ -206,24 +192,11 @@ class ChatRoomExampleContext : ObservableObject
}
class LinphoneLoggingServiceManager: LoggingServiceDelegate {
var tutorialContext : ChatRoomExampleContext!
override func onLogMessageWritten(logService: LoggingService, domain: String, lev: LogLevel, message: String) {
if (tutorialContext.logsEnabled)
{
print("Logging service log: \(message)s\n")
}
}
}
class LinphoneRegistrationConfirmDelegate: CoreDelegate {
var tutorialContext : ChatRoomExampleContext!
override func onRegistrationStateChanged(lc: Core, cfg: ProxyConfig, cstate: RegistrationState, message: String?) {
override func onRegistrationStateChanged(core lc: Core, proxyConfig cfg: ProxyConfig, state cstate: RegistrationState, message: String?) {
print("New registration state \(cstate) for user id \( String(describing: cfg.identityAddress?.asString()))\n")
if (cstate == RegistrationState.Ok)
{
@@ -245,7 +218,7 @@ class LinphoneRegistrationConfirmDelegate: CoreDelegate {
class LinphoneCoreChatDelegate: CoreDelegate {
var tutorialContext : ChatRoomExampleContext!
override func onMessageReceived(lc: Core, room: ChatRoom, message: ChatMessage) {
override func onMessageReceived(core lc: Core, chatRoom room: ChatRoom, message: ChatMessage) {
if (tutorialContext.mChatRoomB == nil)
{
@@ -262,7 +235,7 @@ class LinphoneChatRoomStateTracker: ChatRoomDelegate {
var tutorialContext : ChatRoomExampleContext!
override func onStateChanged(cr: ChatRoom, newState: ChatRoom.State) {
override func onStateChanged(chatRoom cr: ChatRoom, newState: ChatRoom.State) {
if (newState == ChatRoom.State.Created)
{
print("ChatRoomTrace - Chatroom ready to start")
@@ -279,7 +252,7 @@ class LinphoneChatRoomStateTracker: ChatRoomDelegate {
}
class LinphoneChatMessageTracker: ChatMessageDelegate {
override func onMsgStateChanged(msg: ChatMessage, state: ChatMessage.State) {
override func onMsgStateChanged(message msg: ChatMessage, state: ChatMessage.State) {
print("MessageTrace - msg state changed: \(state)\n")
}
}

View File

@@ -10,7 +10,7 @@ import SwiftUI
struct ContentView: View {
@ObservedObject var tutorialContext = ChatRoomExampleContext()
@ObservedObject var tutorialContext : ChatRoomExampleContext
var body: some View {
@@ -87,7 +87,7 @@ struct ContentView: View {
}
Group {
Spacer()
Toggle(isOn: $tutorialContext.logsEnabled) {
Toggle(isOn: $tutorialContext.loggingUnit.logsEnabled.value) {
Text("Logs collection")
.multilineTextAlignment(.trailing)
}
@@ -99,6 +99,6 @@ struct ContentView: View {
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
ContentView(tutorialContext: ChatRoomExampleContext())
}
}

View File

@@ -13,14 +13,15 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
// Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
// If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
// This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
// Create the SwiftUI view that provides the window contents.
let contentView = ContentView()
let delegate = UIApplication.shared.delegate as! AppDelegate
// Create the SwiftUI view that provides the window contents.
let contentView = ContentView(tutorialContext: delegate.tutorialContext)
// Use a UIHostingController as window root view controller.
if let windowScene = scene as? UIWindowScene {