├── PsychotherapyApp ├── PsychotherapyApp │ ├── Assets.xcassets │ │ ├── Contents.json │ │ ├── AccentColor.colorset │ │ │ └── Contents.json │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ ├── ViewController.swift │ ├── Therapy │ │ ├── TherapyViewController+Views.swift │ │ ├── TherapyViewController+Chat.swift │ │ ├── TherapyViewController+Handlers.swift │ │ ├── TherapyViewController.swift │ │ └── TherapyViewController+Call.swift │ ├── Join │ │ ├── JoinViewController.swift │ │ ├── JoinViewController+Constraints.swift │ │ ├── JoinViewController+Handlers.swift │ │ └── JoinViewController+Views.swift │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── AppDelegate.swift │ ├── SceneDelegate.swift │ └── Info.plist ├── PsychotherapyApp.xcodeproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ ├── xcuserdata │ │ │ └── cardoso.xcuserdatad │ │ │ │ └── UserInterfaceState.xcuserstate │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ ├── xcuserdata │ │ └── cardoso.xcuserdatad │ │ │ └── xcschemes │ │ │ └── xcschememanagement.plist │ └── project.pbxproj ├── PsychotherapyApp.xcworkspace │ ├── xcuserdata │ │ └── cardoso.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ ├── xcshareddata │ │ └── IDEWorkspaceChecks.plist │ └── contents.xcworkspacedata ├── Podfile └── Podfile.lock └── README.md /PsychotherapyApp/PsychotherapyApp/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /PsychotherapyApp/PsychotherapyApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /PsychotherapyApp/PsychotherapyApp/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /PsychotherapyApp/PsychotherapyApp.xcworkspace/xcuserdata/cardoso.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GetStream/psychotherapy-app-ios/HEAD/PsychotherapyApp/PsychotherapyApp.xcworkspace/xcuserdata/cardoso.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /PsychotherapyApp/PsychotherapyApp.xcodeproj/project.xcworkspace/xcuserdata/cardoso.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GetStream/psychotherapy-app-ios/HEAD/PsychotherapyApp/PsychotherapyApp.xcodeproj/project.xcworkspace/xcuserdata/cardoso.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /PsychotherapyApp/PsychotherapyApp.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /PsychotherapyApp/PsychotherapyApp.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /PsychotherapyApp/PsychotherapyApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /PsychotherapyApp/Podfile: -------------------------------------------------------------------------------- 1 | # Uncomment the next line to define a global platform for your project 2 | platform :ios, '14.0' 3 | 4 | target 'PsychotherapyApp' do 5 | # Comment the next line if you don't want to use dynamic frameworks 6 | use_frameworks! 7 | 8 | # Pods for PsychotherapyApp 9 | pod 'StreamChat', '~> 2.4.0' 10 | pod 'VoxeetUXKit', '~> 1.3.6' 11 | end 12 | -------------------------------------------------------------------------------- /PsychotherapyApp/PsychotherapyApp/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // PsychotherapyApp 4 | // 5 | // Created by Matheus Cardoso on 08/10/20. 6 | // 7 | 8 | import UIKit 9 | 10 | class ViewController: UIViewController { 11 | 12 | override func viewDidLoad() { 13 | super.viewDidLoad() 14 | // Do any additional setup after loading the view. 15 | } 16 | 17 | 18 | } 19 | 20 | -------------------------------------------------------------------------------- /PsychotherapyApp/PsychotherapyApp.xcodeproj/xcuserdata/cardoso.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | PsychotherapyApp.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /PsychotherapyApp/PsychotherapyApp/Therapy/TherapyViewController+Views.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TherapyViewController+Views.swift 3 | // PsychotherapyApp 4 | // 5 | // Created by Matheus Cardoso on 08/10/20. 6 | // 7 | 8 | import UIKit 9 | 10 | extension TherapyViewController { 11 | func setupViews() { 12 | setupCallButton() 13 | } 14 | 15 | func setupCallButton() { 16 | let button = UIBarButtonItem() 17 | button.image = UIImage(systemName: "phone") 18 | 19 | navigationItem.rightBarButtonItem = button 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /PsychotherapyApp/PsychotherapyApp/Join/JoinViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // JoinViewController.swift 3 | // PsychotherapyApp 4 | // 5 | // Created by Matheus Cardoso on 10/8/20. 6 | // Copyright © 2020 Stream. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class JoinViewController: UIViewController { 12 | let patientButton = UIButton() 13 | let therapistButton = UIButton() 14 | 15 | override func viewDidLoad() { 16 | super.viewDidLoad() 17 | 18 | title = "Join" 19 | 20 | setupViews() 21 | setupConstraints() 22 | setupHandlers() 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /PsychotherapyApp/PsychotherapyApp/Therapy/TherapyViewController+Chat.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TherapyViewController+Chat.swift 3 | // PsychotherapyApp 4 | // 5 | // Created by Matheus Cardoso on 08/10/20. 6 | // 7 | 8 | import StreamChatCore 9 | import StreamChatClient 10 | 11 | extension TherapyViewController { 12 | func setupPatient() { 13 | Client.shared.set(user: patient, token: .development) 14 | self.presenter = .init(channel: channel) 15 | } 16 | 17 | func setupTherapist() { 18 | Client.shared.set(user: therapist, token: .development) 19 | self.presenter = .init(channel: channel) 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /PsychotherapyApp/PsychotherapyApp/Therapy/TherapyViewController+Handlers.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TherapyViewController+Handlers.swift 3 | // PsychotherapyApp 4 | // 5 | // Created by Matheus Cardoso on 08/10/20. 6 | // 7 | 8 | import Foundation 9 | 10 | extension TherapyViewController { 11 | func setupHandlers() { 12 | setupCallButtonHandler() 13 | } 14 | 15 | func setupCallButtonHandler() { 16 | navigationItem.rightBarButtonItem?.target = self 17 | navigationItem.rightBarButtonItem?.action = #selector(callButtonPressed) 18 | } 19 | 20 | @objc func callButtonPressed() { 21 | startCall() 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /PsychotherapyApp/PsychotherapyApp/Therapy/TherapyViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TherapyViewController.swift 3 | // PsychotherapyApp 4 | // 5 | // Created by Matheus Cardoso on 08/10/20. 6 | // 7 | 8 | import StreamChat 9 | import StreamChatClient 10 | import VoxeetSDK 11 | 12 | class TherapyViewController: ChatViewController { 13 | let patient = User(id: "Patient") 14 | let therapist = User(id: "Therapist") 15 | lazy var channel = Client.shared.channel(members: [patient, therapist]) 16 | 17 | override func viewDidLoad() { 18 | super.viewDidLoad() 19 | 20 | setupViews() 21 | setupHandlers() 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /PsychotherapyApp/PsychotherapyApp/Therapy/TherapyViewController+Call.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TherapyViewController+Call.swift 3 | // PsychotherapyApp 4 | // 5 | // Created by Matheus Cardoso on 08/10/20. 6 | // 7 | 8 | import VoxeetSDK 9 | import VoxeetUXKit 10 | 11 | extension TherapyViewController { 12 | func startCall() { 13 | let options = VTConferenceOptions() 14 | options.alias = "patient+therapist" 15 | VoxeetSDK.shared.conference.create(options: options, success: { conf in 16 | VoxeetSDK.shared.conference.join(conference: conf) 17 | }, fail: { error in 18 | print(error) 19 | }) 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /PsychotherapyApp/PsychotherapyApp/Join/JoinViewController+Constraints.swift: -------------------------------------------------------------------------------- 1 | // 2 | // JoinViewController+Constraints.swift 3 | // PsychotherapyApp 4 | // 5 | // Created by Matheus Cardoso on 10/8/20. 6 | // Copyright © 2020 Stream. All rights reserved. 7 | // 8 | 9 | extension JoinViewController { 10 | func setupConstraints() { 11 | view.addConstraints([ 12 | patientButton.centerXAnchor.constraint(equalTo: view.centerXAnchor), 13 | patientButton.centerYAnchor.constraint(equalTo: view.safeAreaLayoutGuide.centerYAnchor, constant: -100), 14 | therapistButton.centerXAnchor.constraint(equalTo: view.centerXAnchor), 15 | therapistButton.centerYAnchor.constraint(equalTo: patientButton.centerYAnchor, constant: 100) 16 | ]) 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /PsychotherapyApp/PsychotherapyApp/Join/JoinViewController+Handlers.swift: -------------------------------------------------------------------------------- 1 | // 2 | // JoinViewController+Handlers.swift 3 | // PsychotherapyApp 4 | // 5 | // Created by Matheus Cardoso on 10/8/20. 6 | // Copyright © 2020 Stream. All rights reserved. 7 | // 8 | 9 | import StreamChat 10 | 11 | extension JoinViewController { 12 | func setupHandlers() { 13 | patientButton.addTarget(self, action: #selector(handlePatientButtonPress), for: .touchUpInside) 14 | therapistButton.addTarget(self, action: #selector(handleTherapistButtonPress), for: .touchUpInside) 15 | } 16 | 17 | @objc func handlePatientButtonPress() { 18 | let therapyVC = TherapyViewController() 19 | therapyVC.setupPatient() 20 | 21 | navigationController?.pushViewController(therapyVC, animated: true) 22 | } 23 | 24 | @objc func handleTherapistButtonPress() { 25 | let therapyVC = TherapyViewController() 26 | therapyVC.setupTherapist() 27 | 28 | navigationController?.pushViewController(therapyVC, animated: true) 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /PsychotherapyApp/PsychotherapyApp/Join/JoinViewController+Views.swift: -------------------------------------------------------------------------------- 1 | // 2 | // JoinViewController+Views.swift 3 | // PsychotherapyApp 4 | // 5 | // Created by Matheus Cardoso on 10/8/20. 6 | // Copyright © 2020 Stream. All rights reserved. 7 | // 8 | extension JoinViewController { 9 | func setupViews() { 10 | setupPatientButton() 11 | setupTherapistButton() 12 | } 13 | 14 | func setupPatientButton() { 15 | patientButton.translatesAutoresizingMaskIntoConstraints = false 16 | patientButton.setTitleColor(.systemBlue, for: .normal) 17 | patientButton.setTitle("Patient / Client 🙍‍♂️", for: .normal) 18 | patientButton.titleLabel?.font = .systemFont(ofSize: 32) 19 | 20 | view.addSubview(patientButton) 21 | } 22 | 23 | func setupTherapistButton() { 24 | therapistButton.translatesAutoresizingMaskIntoConstraints = false 25 | therapistButton.setTitleColor(.systemBlue, for: .normal) 26 | therapistButton.setTitle("Therapist 👩‍💼", for: .normal) 27 | therapistButton.titleLabel?.font = .systemFont(ofSize: 32) 28 | 29 | view.addSubview(therapistButton) 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /PsychotherapyApp/PsychotherapyApp/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /PsychotherapyApp/PsychotherapyApp/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // PsychotherapyApp 4 | // 5 | // Created by Matheus Cardoso on 08/10/20. 6 | // 7 | 8 | import UIKit 9 | import StreamChatClient 10 | import VoxeetSDK 11 | import VoxeetUXKit 12 | 13 | @main 14 | class AppDelegate: UIResponder, UIApplicationDelegate { 15 | 16 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 17 | // Override point for customization after application launch. 18 | Client.configureShared(.init(apiKey: "74e5enp33qj2", logOptions: .info)) 19 | 20 | VoxeetSDK.shared.initialize(consumerKey: "ZTBib3I3NzkzMmt0aA==", consumerSecret: "NDUyM2kzMTc0ZHNvZWxjaHRucG41dmpidnE=") 21 | VoxeetUXKit.shared.initialize() 22 | 23 | return true 24 | } 25 | 26 | // MARK: UISceneSession Lifecycle 27 | 28 | func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { 29 | // Called when a new scene session is being created. 30 | // Use this method to select a configuration to create the new scene with. 31 | return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) 32 | } 33 | 34 | func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) { 35 | // Called when the user discards a scene session. 36 | // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. 37 | // Use this method to release any resources that were specific to the discarded scenes, as they will not return. 38 | } 39 | 40 | 41 | } 42 | 43 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 💬 Psychotherapy App for iOS with Stream Chat and Dolby.io [![](https://img.shields.io/twitter/url?url=https%3A%2F%2Fgithub.com%2FGetStream%2Fpsychotherapy-app-ios)](https://twitter.com/intent/tweet?text=Want%20to%20build%20a%20psychotherapy%20app%20for%20iOS%20with%20video%20and%20chat%3F%20Learn%20how%3A&url=https%3A%2F%2Fgithub.com%2FGetStream%2Fpsychotherapy-app-ios) 2 | 3 | 4 | 5 | ## 📚 Tutorial 6 | 7 | This repository contains the completed Xcode project following the [Build a Psychotherapy App with Video and Chat for iOS](https://getstream.io/blog/psychotherapy-video-chat-ios/) tutorial. You should read it before trying to run this project as it contains it may contain useful information not present in this README. 8 | 9 | ## ⚙️ Setup 10 | 11 | ## Requirements 12 | - Xcode 11 or later 13 | - iOS 13 or later 14 | - A [Stream](https://getstream.io/accounts/signup/) account 15 | - A [Dolby.io](https://dolby.io/organizations/register) account 16 | 17 | ### Configuration 18 | 19 | You should place your [Stream Chat](https://getstream.io/chat) and [Dolby.io](https://dolby.io) credentials in [`AppDelegate.swift`](PsychotherapyApp/PsychotherapyApp/AppDelegate.swift#L21-L23). 20 | 21 | ### Dependencies 22 | 23 | To install the dependencies, use CocoaPods in the PsychotherapyApp folder: 24 | 25 | ```bash 26 | $ pod install --repo-update 27 | ``` 28 | 29 | ### Running 30 | 31 | Run this sample app as any normal app, but only on real devices. If you run in a simulator, the chat will work, but you won't be able to watch or stream video due to limitations of the simulator, though voice should work. 32 | 33 | ## 🔗 Helpful Links 34 | 35 | - [Build an iMessage Clone with The Stream Chat iOS SDK](https://getstream.io/blog/build-imessage-clone/) 36 | - [Stream Chat iOS Tutorial](https://getstream.io/tutorials/ios-chat/) 37 | - [Stream Chat iOS Repo](https://github.com/GetStream/stream-chat-swift/) 38 | - [Stream Chat iOS Docs](http://getstream.io/chat/docs?language=swift) 39 | -------------------------------------------------------------------------------- /PsychotherapyApp/PsychotherapyApp/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "scale" : "2x", 6 | "size" : "20x20" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "scale" : "3x", 11 | "size" : "20x20" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "scale" : "2x", 16 | "size" : "29x29" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "scale" : "3x", 21 | "size" : "29x29" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "scale" : "2x", 26 | "size" : "40x40" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "scale" : "3x", 31 | "size" : "40x40" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "scale" : "2x", 36 | "size" : "60x60" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "scale" : "3x", 41 | "size" : "60x60" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "scale" : "1x", 46 | "size" : "20x20" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "scale" : "2x", 51 | "size" : "20x20" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "scale" : "1x", 56 | "size" : "29x29" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "scale" : "2x", 61 | "size" : "29x29" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "scale" : "1x", 66 | "size" : "40x40" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "scale" : "2x", 71 | "size" : "40x40" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "scale" : "1x", 76 | "size" : "76x76" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "scale" : "2x", 81 | "size" : "76x76" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "scale" : "2x", 86 | "size" : "83.5x83.5" 87 | }, 88 | { 89 | "idiom" : "ios-marketing", 90 | "scale" : "1x", 91 | "size" : "1024x1024" 92 | } 93 | ], 94 | "info" : { 95 | "author" : "xcode", 96 | "version" : 1 97 | } 98 | } 99 | -------------------------------------------------------------------------------- /PsychotherapyApp/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Nuke (8.4.1) 3 | - RxCocoa (5.1.1): 4 | - RxRelay (~> 5) 5 | - RxSwift (~> 5) 6 | - RxGesture (3.0.2): 7 | - RxCocoa (~> 5.1) 8 | - RxSwift (~> 5.1) 9 | - RxRelay (5.1.1): 10 | - RxSwift (~> 5) 11 | - RxSwift (5.1.1) 12 | - SDWebImage (5.9.2): 13 | - SDWebImage/Core (= 5.9.2) 14 | - SDWebImage/Core (5.9.2) 15 | - SnapKit (5.0.1) 16 | - Starscream (4.0.4) 17 | - StreamChat (2.4.0): 18 | - Nuke (~> 8.4) 19 | - RxGesture (~> 3.0) 20 | - SnapKit (~> 5.0) 21 | - StreamChatCore (= 2.4.0) 22 | - SwiftyGif (~> 5.2.0) 23 | - StreamChatClient (2.4.0): 24 | - Starscream (~> 4.0) 25 | - StreamChatCore (2.4.0): 26 | - RxCocoa (~> 5.1) 27 | - RxSwift (~> 5.1) 28 | - StreamChatClient (= 2.4.0) 29 | - SwiftyGif (5.2.0) 30 | - VoxeetSDK (2.4.1) 31 | - VoxeetUXKit (1.3.6): 32 | - SDWebImage (~> 5.0) 33 | - VoxeetSDK (~> 2.0) 34 | 35 | DEPENDENCIES: 36 | - StreamChat (~> 2.4.0) 37 | - VoxeetUXKit (~> 1.3.6) 38 | 39 | SPEC REPOS: 40 | trunk: 41 | - Nuke 42 | - RxCocoa 43 | - RxGesture 44 | - RxRelay 45 | - RxSwift 46 | - SDWebImage 47 | - SnapKit 48 | - Starscream 49 | - StreamChat 50 | - StreamChatClient 51 | - StreamChatCore 52 | - SwiftyGif 53 | - VoxeetSDK 54 | - VoxeetUXKit 55 | 56 | SPEC CHECKSUMS: 57 | Nuke: d780e3507a86b86c589ab3cc5cd302d5456f06fb 58 | RxCocoa: 32065309a38d29b5b0db858819b5bf9ef038b601 59 | RxGesture: d6bd7447ca3a596c7a9702a6a2b6a2bb5d8bae54 60 | RxRelay: d77f7d771495f43c556cbc43eebd1bb54d01e8e9 61 | RxSwift: 81470a2074fa8780320ea5fe4102807cb7118178 62 | SDWebImage: 0b42b8719ab0c5257177d5894306e8a336b21cbb 63 | SnapKit: 97b92857e3df3a0c71833cce143274bf6ef8e5eb 64 | Starscream: 5178aed56b316f13fa3bc55694e583d35dd414d9 65 | StreamChat: 2549eb913c0b48015412c7a5f1bb7920c8138832 66 | StreamChatClient: 8c83a141e753e45fa096ff56d4b782d59e46f251 67 | StreamChatCore: 8d36bbbfecc1feec7a63bfb8f555c7d3edd10e93 68 | SwiftyGif: b85c6b33a9411859d9e1db998b6a8214aea942df 69 | VoxeetSDK: 4bab0e72b96c2d081b10e41f960e6bfb309fba41 70 | VoxeetUXKit: 7655130c039750ce071a34f190b4cdba0f5e5971 71 | 72 | PODFILE CHECKSUM: 9d2bbe60da98dbd8e2554af75b838b02b2610d68 73 | 74 | COCOAPODS: 1.9.3 75 | -------------------------------------------------------------------------------- /PsychotherapyApp/PsychotherapyApp/SceneDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SceneDelegate.swift 3 | // PsychotherapyApp 4 | // 5 | // Created by Matheus Cardoso on 08/10/20. 6 | // 7 | 8 | import UIKit 9 | 10 | class SceneDelegate: UIResponder, UIWindowSceneDelegate { 11 | 12 | var window: UIWindow? 13 | 14 | 15 | func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { 16 | // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. 17 | // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. 18 | // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). 19 | guard let _ = (scene as? UIWindowScene) else { return } 20 | } 21 | 22 | func sceneDidDisconnect(_ scene: UIScene) { 23 | // Called as the scene is being released by the system. 24 | // This occurs shortly after the scene enters the background, or when its session is discarded. 25 | // Release any resources associated with this scene that can be re-created the next time the scene connects. 26 | // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead). 27 | } 28 | 29 | func sceneDidBecomeActive(_ scene: UIScene) { 30 | // Called when the scene has moved from an inactive state to an active state. 31 | // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. 32 | } 33 | 34 | func sceneWillResignActive(_ scene: UIScene) { 35 | // Called when the scene will move from an active state to an inactive state. 36 | // This may occur due to temporary interruptions (ex. an incoming phone call). 37 | } 38 | 39 | func sceneWillEnterForeground(_ scene: UIScene) { 40 | // Called as the scene transitions from the background to the foreground. 41 | // Use this method to undo the changes made on entering the background. 42 | } 43 | 44 | func sceneDidEnterBackground(_ scene: UIScene) { 45 | // Called as the scene transitions from the foreground to the background. 46 | // Use this method to save data, release shared resources, and store enough scene-specific state information 47 | // to restore the scene back to its current state. 48 | } 49 | 50 | 51 | } 52 | 53 | -------------------------------------------------------------------------------- /PsychotherapyApp/PsychotherapyApp/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | NSCameraUsageDescription 6 | This app needs to use the camera 7 | NSMicrophoneUsageDescription 8 | This app needs to use the microphone 9 | CFBundleDevelopmentRegion 10 | $(DEVELOPMENT_LANGUAGE) 11 | CFBundleExecutable 12 | $(EXECUTABLE_NAME) 13 | CFBundleIdentifier 14 | $(PRODUCT_BUNDLE_IDENTIFIER) 15 | CFBundleInfoDictionaryVersion 16 | 6.0 17 | CFBundleName 18 | $(PRODUCT_NAME) 19 | CFBundlePackageType 20 | $(PRODUCT_BUNDLE_PACKAGE_TYPE) 21 | CFBundleShortVersionString 22 | 1.0 23 | CFBundleVersion 24 | 1 25 | LSRequiresIPhoneOS 26 | 27 | UIApplicationSceneManifest 28 | 29 | UIApplicationSupportsMultipleScenes 30 | 31 | UISceneConfigurations 32 | 33 | UIWindowSceneSessionRoleApplication 34 | 35 | 36 | UISceneConfigurationName 37 | Default Configuration 38 | UISceneDelegateClassName 39 | $(PRODUCT_MODULE_NAME).SceneDelegate 40 | UISceneStoryboardFile 41 | Main 42 | 43 | 44 | 45 | 46 | UIApplicationSupportsIndirectInputEvents 47 | 48 | UILaunchStoryboardName 49 | LaunchScreen 50 | UIMainStoryboardFile 51 | Main 52 | UIRequiredDeviceCapabilities 53 | 54 | armv7 55 | 56 | UISupportedInterfaceOrientations 57 | 58 | UIInterfaceOrientationPortrait 59 | UIInterfaceOrientationLandscapeLeft 60 | UIInterfaceOrientationLandscapeRight 61 | 62 | UISupportedInterfaceOrientations~ipad 63 | 64 | UIInterfaceOrientationPortrait 65 | UIInterfaceOrientationPortraitUpsideDown 66 | UIInterfaceOrientationLandscapeLeft 67 | UIInterfaceOrientationLandscapeRight 68 | 69 | 70 | 71 | -------------------------------------------------------------------------------- /PsychotherapyApp/PsychotherapyApp/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /PsychotherapyApp/PsychotherapyApp.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 51; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 80C678B2252FF20700F78BFC /* JoinViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80C678B1252FF20700F78BFC /* JoinViewController.swift */; }; 11 | 80C678B6252FF24300F78BFC /* JoinViewController+Views.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80C678B5252FF24300F78BFC /* JoinViewController+Views.swift */; }; 12 | 80C678B9252FF26800F78BFC /* JoinViewController+Handlers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80C678B8252FF26800F78BFC /* JoinViewController+Handlers.swift */; }; 13 | 80C678BC252FF29A00F78BFC /* JoinViewController+Constraints.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80C678BB252FF29A00F78BFC /* JoinViewController+Constraints.swift */; }; 14 | 80C678BF252FF2FD00F78BFC /* TherapyViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80C678BE252FF2FD00F78BFC /* TherapyViewController.swift */; }; 15 | 80C678C2252FF32F00F78BFC /* TherapyViewController+Views.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80C678C1252FF32F00F78BFC /* TherapyViewController+Views.swift */; }; 16 | 80C678C5252FF35600F78BFC /* TherapyViewController+Handlers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80C678C4252FF35600F78BFC /* TherapyViewController+Handlers.swift */; }; 17 | 80C678C8252FF38400F78BFC /* TherapyViewController+Call.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80C678C7252FF38400F78BFC /* TherapyViewController+Call.swift */; }; 18 | 80C678CB252FF3BA00F78BFC /* TherapyViewController+Chat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80C678CA252FF3B900F78BFC /* TherapyViewController+Chat.swift */; }; 19 | 80FD4DD8252F89AD007479C3 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80FD4DD7252F89AD007479C3 /* AppDelegate.swift */; }; 20 | 80FD4DDA252F89AD007479C3 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80FD4DD9252F89AD007479C3 /* SceneDelegate.swift */; }; 21 | 80FD4DDC252F89AD007479C3 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80FD4DDB252F89AD007479C3 /* ViewController.swift */; }; 22 | 80FD4DDF252F89AD007479C3 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 80FD4DDD252F89AD007479C3 /* Main.storyboard */; }; 23 | 80FD4DE1252F89AF007479C3 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 80FD4DE0252F89AF007479C3 /* Assets.xcassets */; }; 24 | 80FD4DE4252F89AF007479C3 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 80FD4DE2252F89AF007479C3 /* LaunchScreen.storyboard */; }; 25 | /* End PBXBuildFile section */ 26 | 27 | /* Begin PBXFileReference section */ 28 | 80C678B1252FF20700F78BFC /* JoinViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JoinViewController.swift; sourceTree = ""; }; 29 | 80C678B5252FF24300F78BFC /* JoinViewController+Views.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "JoinViewController+Views.swift"; sourceTree = ""; }; 30 | 80C678B8252FF26800F78BFC /* JoinViewController+Handlers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "JoinViewController+Handlers.swift"; sourceTree = ""; }; 31 | 80C678BB252FF29A00F78BFC /* JoinViewController+Constraints.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "JoinViewController+Constraints.swift"; sourceTree = ""; }; 32 | 80C678BE252FF2FD00F78BFC /* TherapyViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TherapyViewController.swift; sourceTree = ""; }; 33 | 80C678C1252FF32F00F78BFC /* TherapyViewController+Views.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TherapyViewController+Views.swift"; sourceTree = ""; }; 34 | 80C678C4252FF35600F78BFC /* TherapyViewController+Handlers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TherapyViewController+Handlers.swift"; sourceTree = ""; }; 35 | 80C678C7252FF38400F78BFC /* TherapyViewController+Call.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TherapyViewController+Call.swift"; sourceTree = ""; }; 36 | 80C678CA252FF3B900F78BFC /* TherapyViewController+Chat.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TherapyViewController+Chat.swift"; sourceTree = ""; }; 37 | 80FD4DD4252F89AD007479C3 /* PsychotherapyApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PsychotherapyApp.app; sourceTree = BUILT_PRODUCTS_DIR; }; 38 | 80FD4DD7252F89AD007479C3 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 39 | 80FD4DD9252F89AD007479C3 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; 40 | 80FD4DDB252F89AD007479C3 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; 41 | 80FD4DDE252F89AD007479C3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 42 | 80FD4DE0252F89AF007479C3 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 43 | 80FD4DE3252F89AF007479C3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 44 | 80FD4DE5252F89AF007479C3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 45 | /* End PBXFileReference section */ 46 | 47 | /* Begin PBXFrameworksBuildPhase section */ 48 | 80FD4DD1252F89AD007479C3 /* Frameworks */ = { 49 | isa = PBXFrameworksBuildPhase; 50 | buildActionMask = 2147483647; 51 | files = ( 52 | ); 53 | runOnlyForDeploymentPostprocessing = 0; 54 | }; 55 | /* End PBXFrameworksBuildPhase section */ 56 | 57 | /* Begin PBXGroup section */ 58 | 655C80CC6F3A90A0DF8C6B2B /* Pods */ = { 59 | isa = PBXGroup; 60 | children = ( 61 | ); 62 | path = Pods; 63 | sourceTree = ""; 64 | }; 65 | 80C678AF252FF1A900F78BFC /* Therapy */ = { 66 | isa = PBXGroup; 67 | children = ( 68 | 80C678BE252FF2FD00F78BFC /* TherapyViewController.swift */, 69 | 80C678C1252FF32F00F78BFC /* TherapyViewController+Views.swift */, 70 | 80C678C4252FF35600F78BFC /* TherapyViewController+Handlers.swift */, 71 | 80C678C7252FF38400F78BFC /* TherapyViewController+Call.swift */, 72 | 80C678CA252FF3B900F78BFC /* TherapyViewController+Chat.swift */, 73 | ); 74 | path = Therapy; 75 | sourceTree = ""; 76 | }; 77 | 80C678B0252FF1BB00F78BFC /* Join */ = { 78 | isa = PBXGroup; 79 | children = ( 80 | 80C678B1252FF20700F78BFC /* JoinViewController.swift */, 81 | 80C678B5252FF24300F78BFC /* JoinViewController+Views.swift */, 82 | 80C678BB252FF29A00F78BFC /* JoinViewController+Constraints.swift */, 83 | 80C678B8252FF26800F78BFC /* JoinViewController+Handlers.swift */, 84 | ); 85 | path = Join; 86 | sourceTree = ""; 87 | }; 88 | 80FD4DCB252F89AD007479C3 = { 89 | isa = PBXGroup; 90 | children = ( 91 | 80FD4DD6252F89AD007479C3 /* PsychotherapyApp */, 92 | 80FD4DD5252F89AD007479C3 /* Products */, 93 | 655C80CC6F3A90A0DF8C6B2B /* Pods */, 94 | ); 95 | sourceTree = ""; 96 | }; 97 | 80FD4DD5252F89AD007479C3 /* Products */ = { 98 | isa = PBXGroup; 99 | children = ( 100 | 80FD4DD4252F89AD007479C3 /* PsychotherapyApp.app */, 101 | ); 102 | name = Products; 103 | sourceTree = ""; 104 | }; 105 | 80FD4DD6252F89AD007479C3 /* PsychotherapyApp */ = { 106 | isa = PBXGroup; 107 | children = ( 108 | 80C678B0252FF1BB00F78BFC /* Join */, 109 | 80C678AF252FF1A900F78BFC /* Therapy */, 110 | 80FD4DD7252F89AD007479C3 /* AppDelegate.swift */, 111 | 80FD4DD9252F89AD007479C3 /* SceneDelegate.swift */, 112 | 80FD4DDB252F89AD007479C3 /* ViewController.swift */, 113 | 80FD4DDD252F89AD007479C3 /* Main.storyboard */, 114 | 80FD4DE0252F89AF007479C3 /* Assets.xcassets */, 115 | 80FD4DE2252F89AF007479C3 /* LaunchScreen.storyboard */, 116 | 80FD4DE5252F89AF007479C3 /* Info.plist */, 117 | ); 118 | path = PsychotherapyApp; 119 | sourceTree = ""; 120 | }; 121 | /* End PBXGroup section */ 122 | 123 | /* Begin PBXNativeTarget section */ 124 | 80FD4DD3252F89AD007479C3 /* PsychotherapyApp */ = { 125 | isa = PBXNativeTarget; 126 | buildConfigurationList = 80FD4DE8252F89AF007479C3 /* Build configuration list for PBXNativeTarget "PsychotherapyApp" */; 127 | buildPhases = ( 128 | 80FD4DD0252F89AD007479C3 /* Sources */, 129 | 80FD4DD1252F89AD007479C3 /* Frameworks */, 130 | 80FD4DD2252F89AD007479C3 /* Resources */, 131 | ); 132 | buildRules = ( 133 | ); 134 | dependencies = ( 135 | ); 136 | name = PsychotherapyApp; 137 | productName = PsychotherapyApp; 138 | productReference = 80FD4DD4252F89AD007479C3 /* PsychotherapyApp.app */; 139 | productType = "com.apple.product-type.application"; 140 | }; 141 | /* End PBXNativeTarget section */ 142 | 143 | /* Begin PBXProject section */ 144 | 80FD4DCC252F89AD007479C3 /* Project object */ = { 145 | isa = PBXProject; 146 | attributes = { 147 | LastSwiftUpdateCheck = 1200; 148 | LastUpgradeCheck = 1200; 149 | TargetAttributes = { 150 | 80FD4DD3252F89AD007479C3 = { 151 | CreatedOnToolsVersion = 12.0.1; 152 | }; 153 | }; 154 | }; 155 | buildConfigurationList = 80FD4DCF252F89AD007479C3 /* Build configuration list for PBXProject "PsychotherapyApp" */; 156 | compatibilityVersion = "Xcode 9.3"; 157 | developmentRegion = en; 158 | hasScannedForEncodings = 0; 159 | knownRegions = ( 160 | en, 161 | Base, 162 | ); 163 | mainGroup = 80FD4DCB252F89AD007479C3; 164 | productRefGroup = 80FD4DD5252F89AD007479C3 /* Products */; 165 | projectDirPath = ""; 166 | projectRoot = ""; 167 | targets = ( 168 | 80FD4DD3252F89AD007479C3 /* PsychotherapyApp */, 169 | ); 170 | }; 171 | /* End PBXProject section */ 172 | 173 | /* Begin PBXResourcesBuildPhase section */ 174 | 80FD4DD2252F89AD007479C3 /* Resources */ = { 175 | isa = PBXResourcesBuildPhase; 176 | buildActionMask = 2147483647; 177 | files = ( 178 | 80FD4DE4252F89AF007479C3 /* LaunchScreen.storyboard in Resources */, 179 | 80FD4DE1252F89AF007479C3 /* Assets.xcassets in Resources */, 180 | 80FD4DDF252F89AD007479C3 /* Main.storyboard in Resources */, 181 | ); 182 | runOnlyForDeploymentPostprocessing = 0; 183 | }; 184 | /* End PBXResourcesBuildPhase section */ 185 | 186 | /* Begin PBXSourcesBuildPhase section */ 187 | 80FD4DD0252F89AD007479C3 /* Sources */ = { 188 | isa = PBXSourcesBuildPhase; 189 | buildActionMask = 2147483647; 190 | files = ( 191 | 80C678C2252FF32F00F78BFC /* TherapyViewController+Views.swift in Sources */, 192 | 80C678C8252FF38400F78BFC /* TherapyViewController+Call.swift in Sources */, 193 | 80C678C5252FF35600F78BFC /* TherapyViewController+Handlers.swift in Sources */, 194 | 80FD4DDC252F89AD007479C3 /* ViewController.swift in Sources */, 195 | 80C678CB252FF3BA00F78BFC /* TherapyViewController+Chat.swift in Sources */, 196 | 80C678B9252FF26800F78BFC /* JoinViewController+Handlers.swift in Sources */, 197 | 80C678BF252FF2FD00F78BFC /* TherapyViewController.swift in Sources */, 198 | 80C678B6252FF24300F78BFC /* JoinViewController+Views.swift in Sources */, 199 | 80C678BC252FF29A00F78BFC /* JoinViewController+Constraints.swift in Sources */, 200 | 80FD4DD8252F89AD007479C3 /* AppDelegate.swift in Sources */, 201 | 80C678B2252FF20700F78BFC /* JoinViewController.swift in Sources */, 202 | 80FD4DDA252F89AD007479C3 /* SceneDelegate.swift in Sources */, 203 | ); 204 | runOnlyForDeploymentPostprocessing = 0; 205 | }; 206 | /* End PBXSourcesBuildPhase section */ 207 | 208 | /* Begin PBXVariantGroup section */ 209 | 80FD4DDD252F89AD007479C3 /* Main.storyboard */ = { 210 | isa = PBXVariantGroup; 211 | children = ( 212 | 80FD4DDE252F89AD007479C3 /* Base */, 213 | ); 214 | name = Main.storyboard; 215 | sourceTree = ""; 216 | }; 217 | 80FD4DE2252F89AF007479C3 /* LaunchScreen.storyboard */ = { 218 | isa = PBXVariantGroup; 219 | children = ( 220 | 80FD4DE3252F89AF007479C3 /* Base */, 221 | ); 222 | name = LaunchScreen.storyboard; 223 | sourceTree = ""; 224 | }; 225 | /* End PBXVariantGroup section */ 226 | 227 | /* Begin XCBuildConfiguration section */ 228 | 80FD4DE6252F89AF007479C3 /* Debug */ = { 229 | isa = XCBuildConfiguration; 230 | buildSettings = { 231 | ALWAYS_SEARCH_USER_PATHS = NO; 232 | CLANG_ANALYZER_NONNULL = YES; 233 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 234 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 235 | CLANG_CXX_LIBRARY = "libc++"; 236 | CLANG_ENABLE_MODULES = YES; 237 | CLANG_ENABLE_OBJC_ARC = YES; 238 | CLANG_ENABLE_OBJC_WEAK = YES; 239 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 240 | CLANG_WARN_BOOL_CONVERSION = YES; 241 | CLANG_WARN_COMMA = YES; 242 | CLANG_WARN_CONSTANT_CONVERSION = YES; 243 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 244 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 245 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 246 | CLANG_WARN_EMPTY_BODY = YES; 247 | CLANG_WARN_ENUM_CONVERSION = YES; 248 | CLANG_WARN_INFINITE_RECURSION = YES; 249 | CLANG_WARN_INT_CONVERSION = YES; 250 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 251 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 252 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 253 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 254 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 255 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 256 | CLANG_WARN_STRICT_PROTOTYPES = YES; 257 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 258 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 259 | CLANG_WARN_UNREACHABLE_CODE = YES; 260 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 261 | COPY_PHASE_STRIP = NO; 262 | DEBUG_INFORMATION_FORMAT = dwarf; 263 | ENABLE_STRICT_OBJC_MSGSEND = YES; 264 | ENABLE_TESTABILITY = YES; 265 | GCC_C_LANGUAGE_STANDARD = gnu11; 266 | GCC_DYNAMIC_NO_PIC = NO; 267 | GCC_NO_COMMON_BLOCKS = YES; 268 | GCC_OPTIMIZATION_LEVEL = 0; 269 | GCC_PREPROCESSOR_DEFINITIONS = ( 270 | "DEBUG=1", 271 | "$(inherited)", 272 | ); 273 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 274 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 275 | GCC_WARN_UNDECLARED_SELECTOR = YES; 276 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 277 | GCC_WARN_UNUSED_FUNCTION = YES; 278 | GCC_WARN_UNUSED_VARIABLE = YES; 279 | IPHONEOS_DEPLOYMENT_TARGET = 14.0; 280 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; 281 | MTL_FAST_MATH = YES; 282 | ONLY_ACTIVE_ARCH = YES; 283 | SDKROOT = iphoneos; 284 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 285 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 286 | }; 287 | name = Debug; 288 | }; 289 | 80FD4DE7252F89AF007479C3 /* Release */ = { 290 | isa = XCBuildConfiguration; 291 | buildSettings = { 292 | ALWAYS_SEARCH_USER_PATHS = NO; 293 | CLANG_ANALYZER_NONNULL = YES; 294 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 295 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 296 | CLANG_CXX_LIBRARY = "libc++"; 297 | CLANG_ENABLE_MODULES = YES; 298 | CLANG_ENABLE_OBJC_ARC = YES; 299 | CLANG_ENABLE_OBJC_WEAK = YES; 300 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 301 | CLANG_WARN_BOOL_CONVERSION = YES; 302 | CLANG_WARN_COMMA = YES; 303 | CLANG_WARN_CONSTANT_CONVERSION = YES; 304 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 305 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 306 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 307 | CLANG_WARN_EMPTY_BODY = YES; 308 | CLANG_WARN_ENUM_CONVERSION = YES; 309 | CLANG_WARN_INFINITE_RECURSION = YES; 310 | CLANG_WARN_INT_CONVERSION = YES; 311 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 312 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 313 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 314 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 315 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 316 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 317 | CLANG_WARN_STRICT_PROTOTYPES = YES; 318 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 319 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 320 | CLANG_WARN_UNREACHABLE_CODE = YES; 321 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 322 | COPY_PHASE_STRIP = NO; 323 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 324 | ENABLE_NS_ASSERTIONS = NO; 325 | ENABLE_STRICT_OBJC_MSGSEND = YES; 326 | GCC_C_LANGUAGE_STANDARD = gnu11; 327 | GCC_NO_COMMON_BLOCKS = YES; 328 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 329 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 330 | GCC_WARN_UNDECLARED_SELECTOR = YES; 331 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 332 | GCC_WARN_UNUSED_FUNCTION = YES; 333 | GCC_WARN_UNUSED_VARIABLE = YES; 334 | IPHONEOS_DEPLOYMENT_TARGET = 14.0; 335 | MTL_ENABLE_DEBUG_INFO = NO; 336 | MTL_FAST_MATH = YES; 337 | SDKROOT = iphoneos; 338 | SWIFT_COMPILATION_MODE = wholemodule; 339 | SWIFT_OPTIMIZATION_LEVEL = "-O"; 340 | VALIDATE_PRODUCT = YES; 341 | }; 342 | name = Release; 343 | }; 344 | 80FD4DE9252F89AF007479C3 /* Debug */ = { 345 | isa = XCBuildConfiguration; 346 | buildSettings = { 347 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 348 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 349 | CODE_SIGN_STYLE = Automatic; 350 | DEVELOPMENT_TEAM = FWD9V5VYJ2; 351 | INFOPLIST_FILE = PsychotherapyApp/Info.plist; 352 | LD_RUNPATH_SEARCH_PATHS = ( 353 | "$(inherited)", 354 | "@executable_path/Frameworks", 355 | ); 356 | PRODUCT_BUNDLE_IDENTIFIER = io.getstream.PsychotherapyApp; 357 | PRODUCT_NAME = "$(TARGET_NAME)"; 358 | SWIFT_VERSION = 5.0; 359 | TARGETED_DEVICE_FAMILY = "1,2"; 360 | }; 361 | name = Debug; 362 | }; 363 | 80FD4DEA252F89AF007479C3 /* Release */ = { 364 | isa = XCBuildConfiguration; 365 | buildSettings = { 366 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 367 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 368 | CODE_SIGN_STYLE = Automatic; 369 | DEVELOPMENT_TEAM = FWD9V5VYJ2; 370 | INFOPLIST_FILE = PsychotherapyApp/Info.plist; 371 | LD_RUNPATH_SEARCH_PATHS = ( 372 | "$(inherited)", 373 | "@executable_path/Frameworks", 374 | ); 375 | PRODUCT_BUNDLE_IDENTIFIER = io.getstream.PsychotherapyApp; 376 | PRODUCT_NAME = "$(TARGET_NAME)"; 377 | SWIFT_VERSION = 5.0; 378 | TARGETED_DEVICE_FAMILY = "1,2"; 379 | }; 380 | name = Release; 381 | }; 382 | /* End XCBuildConfiguration section */ 383 | 384 | /* Begin XCConfigurationList section */ 385 | 80FD4DCF252F89AD007479C3 /* Build configuration list for PBXProject "PsychotherapyApp" */ = { 386 | isa = XCConfigurationList; 387 | buildConfigurations = ( 388 | 80FD4DE6252F89AF007479C3 /* Debug */, 389 | 80FD4DE7252F89AF007479C3 /* Release */, 390 | ); 391 | defaultConfigurationIsVisible = 0; 392 | defaultConfigurationName = Release; 393 | }; 394 | 80FD4DE8252F89AF007479C3 /* Build configuration list for PBXNativeTarget "PsychotherapyApp" */ = { 395 | isa = XCConfigurationList; 396 | buildConfigurations = ( 397 | 80FD4DE9252F89AF007479C3 /* Debug */, 398 | 80FD4DEA252F89AF007479C3 /* Release */, 399 | ); 400 | defaultConfigurationIsVisible = 0; 401 | defaultConfigurationName = Release; 402 | }; 403 | /* End XCConfigurationList section */ 404 | }; 405 | rootObject = 80FD4DCC252F89AD007479C3 /* Project object */; 406 | } 407 | --------------------------------------------------------------------------------