@@ -26,14 +26,11 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate {
2626 } ( )
2727
2828 var window : UIWindow ?
29-
3029 var chatProvider : PubNubChatProvider ?
3130 var defaultChannelId = " Default "
3231
3332 func scene( _ scene: UIScene , willConnectTo session: UISceneSession , options connectionOptions: UIScene . ConnectionOptions ) {
34-
3533 guard let windowScene = ( scene as? UIWindowScene ) else { return }
36- let window = UIWindow ( windowScene: windowScene)
3734
3835 // Enables PubNub logging to the Console
3936 PubNub . log. levels = [ . all]
@@ -46,12 +43,16 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate {
4643 )
4744
4845 // Preloads dummy data
49- preloadData ( provider)
50-
51- // Assigns to SceneDelegate for future use
52- chatProvider = provider
46+ preloadData ( provider) { [ weak self] in
47+ self ? . chatProvider = provider
48+ self ? . setupRootView ( windowScene: windowScene)
49+ }
50+ } else {
51+ setupRootView ( windowScene: windowScene)
5352 }
54-
53+ }
54+
55+ func setupRootView( windowScene: UIWindowScene ) {
5556 // Creates the default ChannelList and MemberList component view models
5657 guard let channelListViewModel = chatProvider? . senderMembershipsChanneListComponentViewModel ( ) ,
5758 let messageListViewModel = try ? chatProvider? . messageListComponentViewModel ( pubnubChannelId: defaultChannelId) else {
@@ -68,12 +69,13 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate {
6869 ]
6970
7071 // Sets the component as the root view controller
72+ let window = UIWindow ( windowScene: windowScene)
7173 window. rootViewController = navigation
7274 self . window = window
7375 window. makeKeyAndVisible ( )
7476 }
7577
76- func preloadData( _ chatProvider: PubNubChatProvider ) {
78+ func preloadData( _ chatProvider: PubNubChatProvider , completion : @escaping ( ) -> Void ) {
7779 // Creates a user object with uuid
7880 let user = PubNubChatUser (
7981 id: chatProvider. pubnubConfig. uuid,
@@ -96,7 +98,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate {
9698 chatProvider. pubnubProvider. subscribe ( . init( channels: [ defaultChannelId] , withPresence: true ) )
9799
98100 // Fills the database with the user, channel, and memberships data
99- chatProvider. dataProvider. load ( members: [ membership] )
101+ chatProvider. dataProvider. load ( members: [ membership] , completion : completion )
100102 }
101103}
102104
0 commit comments