@@ -27,6 +27,8 @@ public class DataConnect {
2727  private( set)   var  grpcClient :  GrpcClient 
2828  private  var  operationsManager :  OperationsManager 
2929
30+   private  var  callerSDKType :  CallerSDKType  =  . base
31+ 
3032  private  static  var  instanceStore   =  InstanceStore ( ) 
3133
3234  public  enum  EmulatorDefaults  { 
@@ -38,13 +40,20 @@ public class DataConnect {
3840
3941  public  class   func  dataConnect( app:  FirebaseApp ?   =  FirebaseApp . app ( ) , 
4042                                connectorConfig:  ConnectorConfig , 
41-                                 settings:  DataConnectSettings  =  DataConnectSettings ( ) ) 
43+                                 settings:  DataConnectSettings  =  DataConnectSettings ( ) , 
44+                                 callerSDKType:  CallerSDKType  =  . base) 
4245    ->  DataConnect  { 
4346    guard  let  app =  app else  { 
4447      fatalError ( " No Firebase App present " ) 
4548    } 
4649
47-     return  instanceStore. instance ( for:  app,  config:  connectorConfig,  settings:  settings) 
50+     return  instanceStore
51+       . instance ( 
52+         for:  app, 
53+         config:  connectorConfig, 
54+         settings:  settings, 
55+         callerSDKType:  callerSDKType
56+       ) 
4857  } 
4958
5059  // MARK: Emulator
@@ -66,29 +75,33 @@ public class DataConnect {
6675      settings:  settings, 
6776      connectorConfig:  connectorConfig, 
6877      auth:  Auth . auth ( app:  app) , 
69-       appCheck:  AppCheck . appCheck ( app:  app) 
78+       appCheck:  AppCheck . appCheck ( app:  app) , 
79+       callerSDKType:  callerSDKType
7080    ) 
7181
7282    operationsManager =  OperationsManager ( grpcClient:  grpcClient) 
7383  } 
7484
7585  // MARK: Init
7686
77-   init ( app:  FirebaseApp ,  connectorConfig:  ConnectorConfig ,  settings:  DataConnectSettings )  { 
78-     self . app =  app
79-     self . settings =  settings
80-     self . connectorConfig =  connectorConfig
81- 
87+   init ( app:  FirebaseApp ,  connectorConfig:  ConnectorConfig ,  settings:  DataConnectSettings , 
88+        callerSDKType:  CallerSDKType  =  . base)  { 
8289    guard  app. options. projectID !=  nil  else  { 
8390      fatalError ( " Firebase DataConnect requires the projectID to be set in the app options " ) 
8491    } 
8592
93+     self . app =  app
94+     self . settings =  settings
95+     self . connectorConfig =  connectorConfig
96+     self . callerSDKType =  callerSDKType
97+ 
8698    grpcClient =  GrpcClient ( 
8799      app:  self . app, 
88100      settings:  settings, 
89101      connectorConfig:  connectorConfig, 
90102      auth:  Auth . auth ( app:  app) , 
91-       appCheck:  AppCheck . appCheck ( app:  app) 
103+       appCheck:  AppCheck . appCheck ( app:  app) , 
104+       callerSDKType:  self . callerSDKType
92105    ) 
93106    operationsManager =  OperationsManager ( grpcClient:  grpcClient) 
94107  } 
@@ -114,6 +127,13 @@ public class DataConnect {
114127  } 
115128} 
116129
130+ // This enum is public so the gen sdk can access it
131+ @available ( macOS 10 . 15 ,  iOS 13 ,  tvOS 13 ,  watchOS 6 ,  * )  
132+ public  enum  CallerSDKType  { 
133+   case  base // base sdk is directly used
134+   case  generated // generated sdk is calling the base
135+ } 
136+ 
117137// MARK: Instance Creation
118138
119139// Support for creating or reusing DataConnect instances.
@@ -145,13 +165,18 @@ private class InstanceStore {
145165  var  instances   =  [ InstanceKey:  DataConnect] ( ) 
146166
147167  func  instance( for app:  FirebaseApp ,  config:  ConnectorConfig , 
148-                 settings:  DataConnectSettings )  ->  DataConnect  { 
168+                 settings:  DataConnectSettings ,  callerSDKType :   CallerSDKType )  ->  DataConnect  { 
149169    accessQ. sync  { 
150170      let  key  =  InstanceKey ( app:  app,  config:  config) 
151171      if  let  inst =  instances [ key]  { 
152172        return  inst
153173      }  else  { 
154-         let  dc  =  DataConnect ( app:  app,  connectorConfig:  config,  settings:  settings) 
174+         let  dc  =  DataConnect ( 
175+           app:  app, 
176+           connectorConfig:  config, 
177+           settings:  settings, 
178+           callerSDKType:  callerSDKType
179+         ) 
155180        instances [ key]  =  dc
156181        return  dc
157182      } 
0 commit comments