react-native-nitro-auth 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -168,31 +168,35 @@ await requestScopes(["https://www.googleapis.com/auth/calendar.readonly"]);
168
168
  console.log("Granted:", scopes);
169
169
  ```
170
170
 
171
- ### Manual Token Refresh
171
+ ### Offline Access (Server Auth Code)
172
172
 
173
- While `getAccessToken()` handles auto-refresh, you can manually trigger a refresh to get fresh `idToken` or `expirationTime`:
173
+ If you need to access Google APIs from your backend (e.g., Google Calendar integration), you can use the `serverAuthCode`. This code is returned during login and can be exchanged for tokens on your server:
174
174
 
175
175
  ```ts
176
- const tokens = await refreshToken();
177
- console.log("New Expiry:", tokens.expirationTime);
176
+ const { user } = useAuth();
177
+
178
+ if (user?.serverAuthCode) {
179
+ // Send this to your backend!
180
+ await api.verifyGoogleAccess(user.serverAuthCode);
181
+ }
178
182
  ```
179
183
 
180
184
  ## API Reference
181
185
 
182
186
  ### useAuth Hook
183
187
 
184
- | Property | Type | Description |
185
- | ----------------- | --------------------------------- | ----------------------------------------- |
186
- | `user` | `AuthUser \| undefined` | Current authenticated user |
187
- | `scopes` | `string[]` | Currently granted OAuth scopes |
188
- | `loading` | `boolean` | True during auth operations |
189
- | `error` | `Error \| undefined` | Last error that occurred |
190
- | `hasPlayServices` | `boolean` | (Android) True if Play Services available |
191
- | `login` | `(provider, options?) => Promise` | Start login flow |
192
- | `logout` | `() => void` | Clear session (synchronous) |
193
- | `requestScopes` | `(scopes) => Promise` | Request additional OAuth scopes |
194
- | `getAccessToken` | `() => Promise<string?>` | Get current access token (auto-refreshes) |
195
- | `refreshToken` | `() => Promise<AuthTokens>` | Explicitly refresh and return new tokens |
188
+ | Property | Type | Description |
189
+ | ----------------- | --------------------------------- | ------------------------------------------------------ |
190
+ | `user` | `AuthUser \| undefined` | Current authenticated user (includes `serverAuthCode`) |
191
+ | `scopes` | `string[]` | Currently granted OAuth scopes |
192
+ | `loading` | `boolean` | True during auth operations |
193
+ | `error` | `Error \| undefined` | Last error that occurred |
194
+ | `hasPlayServices` | `boolean` | (Android) True if Play Services available |
195
+ | `login` | `(provider, options?) => Promise` | Start login flow |
196
+ | `logout` | `() => void` | Clear session (synchronous) |
197
+ | `requestScopes` | `(scopes) => Promise` | Request additional OAuth scopes |
198
+ | `getAccessToken` | `() => Promise<string?>` | Get current access token (auto-refreshes) |
199
+ | `refreshToken` | `() => Promise<AuthTokens>` | Explicitly refresh and return new tokens |
196
200
 
197
201
  ### SocialButton Props
198
202
 
@@ -148,7 +148,7 @@ extern "C" JNIEXPORT void JNICALL Java_com_auth_AuthAdapter_nativeInitialize(JNI
148
148
 
149
149
  extern "C" JNIEXPORT void JNICALL Java_com_auth_AuthAdapter_nativeOnLoginSuccess(
150
150
  JNIEnv* env, jclass,
151
- jstring provider, jstring email, jstring name, jstring photo, jstring idToken, jstring accessToken, jobjectArray scopes, jobject expirationTime) {
151
+ jstring provider, jstring email, jstring name, jstring photo, jstring idToken, jstring accessToken, jstring serverAuthCode, jobjectArray scopes, jobject expirationTime) {
152
152
 
153
153
  std::shared_ptr<Promise<AuthUser>> loginPromise;
154
154
  std::shared_ptr<Promise<AuthUser>> scopesPromise;
@@ -193,6 +193,11 @@ extern "C" JNIEXPORT void JNICALL Java_com_auth_AuthAdapter_nativeOnLoginSuccess
193
193
  user.accessToken = std::string(s);
194
194
  env->ReleaseStringUTFChars(accessToken, s);
195
195
  }
196
+ if (serverAuthCode) {
197
+ const char* s = env->GetStringUTFChars(serverAuthCode, nullptr);
198
+ user.serverAuthCode = std::string(s);
199
+ env->ReleaseStringUTFChars(serverAuthCode, s);
200
+ }
196
201
  if (scopes) {
197
202
  int len = env->GetArrayLength(scopes);
198
203
  std::vector<std::string> scopeVec;
@@ -1,7 +1,5 @@
1
1
  package com.auth
2
2
 
3
- import android.app.Activity
4
- import android.app.Application
5
3
  import android.content.Context
6
4
  import android.os.Bundle
7
5
  import android.util.Log
@@ -12,14 +10,12 @@ import com.google.android.gms.auth.api.signin.GoogleSignInOptions
12
10
  import com.google.android.gms.common.GoogleApiAvailability
13
11
  import com.google.android.gms.common.ConnectionResult
14
12
  import com.google.android.gms.common.api.Scope
15
- import java.lang.ref.WeakReference
16
13
 
17
- object AuthAdapter : Application.ActivityLifecycleCallbacks {
14
+ object AuthAdapter {
18
15
  private const val TAG = "AuthAdapter"
19
16
  private const val PREF_NAME = "nitro_auth"
20
17
 
21
18
  private var appContext: Context? = null
22
- private var currentActivityRef: WeakReference<Activity>? = null
23
19
  private var googleSignInClient: GoogleSignInClient? = null
24
20
  private var pendingScopes: List<String> = emptyList()
25
21
 
@@ -34,6 +30,7 @@ object AuthAdapter : Application.ActivityLifecycleCallbacks {
34
30
  photo: String?,
35
31
  idToken: String?,
36
32
  accessToken: String?,
33
+ serverAuthCode: String?,
37
34
  scopes: Array<String>?,
38
35
  expirationTime: Long?
39
36
  )
@@ -49,7 +46,6 @@ object AuthAdapter : Application.ActivityLifecycleCallbacks {
49
46
 
50
47
  fun initialize(context: Context) {
51
48
  appContext = context.applicationContext
52
- (appContext as? Application)?.registerActivityLifecycleCallbacks(this)
53
49
  try {
54
50
  System.loadLibrary("NitroAuth")
55
51
  nativeInitialize(appContext!!)
@@ -58,30 +54,12 @@ object AuthAdapter : Application.ActivityLifecycleCallbacks {
58
54
  }
59
55
  }
60
56
 
61
- override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
62
- currentActivityRef = WeakReference(activity)
63
- }
64
- override fun onActivityStarted(activity: Activity) {
65
- currentActivityRef = WeakReference(activity)
66
- }
67
- override fun onActivityResumed(activity: Activity) {
68
- currentActivityRef = WeakReference(activity)
69
- }
70
- override fun onActivityPaused(activity: Activity) {}
71
- override fun onActivityStopped(activity: Activity) {}
72
- override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {}
73
- override fun onActivityDestroyed(activity: Activity) {
74
- if (currentActivityRef?.get() == activity) {
75
- currentActivityRef = null
76
- }
77
- }
78
-
79
57
  fun onSignInSuccess(account: GoogleSignInAccount, scopes: List<String>) {
80
58
  val ctx = appContext ?: return
81
59
  saveUser(ctx, "google", account.email, account.displayName,
82
- account.photoUrl?.toString(), account.idToken, scopes)
60
+ account.photoUrl?.toString(), account.idToken, account.serverAuthCode, scopes)
83
61
  nativeOnLoginSuccess("google", account.email, account.displayName,
84
- account.photoUrl?.toString(), account.idToken, null, scopes.toTypedArray(), null)
62
+ account.photoUrl?.toString(), account.idToken, null, account.serverAuthCode, scopes.toTypedArray(), null)
85
63
  }
86
64
 
87
65
  fun onSignInError(errorCode: Int, message: String?) {
@@ -162,6 +140,7 @@ object AuthAdapter : Application.ActivityLifecycleCallbacks {
162
140
  }
163
141
  val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
164
142
  .requestIdToken(clientId)
143
+ .requestServerAuthCode(clientId)
165
144
  .requestEmail()
166
145
  .build()
167
146
  googleSignInClient = GoogleSignIn.getClient(ctx, gso)
@@ -192,6 +171,7 @@ object AuthAdapter : Application.ActivityLifecycleCallbacks {
192
171
  if (clientId != null) {
193
172
  val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
194
173
  .requestIdToken(clientId)
174
+ .requestServerAuthCode(clientId)
195
175
  .requestEmail()
196
176
  .build()
197
177
  GoogleSignIn.getClient(ctx, gso).signOut()
@@ -206,6 +186,7 @@ object AuthAdapter : Application.ActivityLifecycleCallbacks {
206
186
  if (clientId != null) {
207
187
  val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
208
188
  .requestIdToken(clientId)
189
+ .requestServerAuthCode(clientId)
209
190
  .requestEmail()
210
191
  .build()
211
192
  GoogleSignIn.getClient(ctx, gso).revokeAccess()
@@ -242,7 +223,7 @@ object AuthAdapter : Application.ActivityLifecycleCallbacks {
242
223
  val account = GoogleSignIn.getLastSignedInAccount(ctx)
243
224
  if (account != null) {
244
225
  nativeOnLoginSuccess("google", account.email, account.displayName,
245
- account.photoUrl?.toString(), account.idToken, null,
226
+ account.photoUrl?.toString(), account.idToken, null, account.serverAuthCode,
246
227
  account.grantedScopes?.map { it.scopeUri }?.toTypedArray(), null)
247
228
  } else {
248
229
  val json = getUserJson(ctx)
@@ -252,7 +233,8 @@ object AuthAdapter : Application.ActivityLifecycleCallbacks {
252
233
  val name = extractJsonValue(json, "name")
253
234
  val photo = extractJsonValue(json, "photo")
254
235
  val idToken = extractJsonValue(json, "idToken")
255
- nativeOnLoginSuccess(provider, email, name, photo, idToken, null, null, null)
236
+ val serverAuthCode = extractJsonValue(json, "serverAuthCode")
237
+ nativeOnLoginSuccess(provider, email, name, photo, idToken, null, serverAuthCode, null, null)
256
238
  } else {
257
239
  nativeOnLoginError("No session")
258
240
  }
@@ -266,7 +248,7 @@ object AuthAdapter : Application.ActivityLifecycleCallbacks {
266
248
  }
267
249
 
268
250
  private fun saveUser(context: Context, provider: String, email: String?, name: String?,
269
- photo: String?, idToken: String?, scopes: List<String>?) {
251
+ photo: String?, idToken: String?, serverAuthCode: String?, scopes: List<String>?) {
270
252
  val pref = context.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE)
271
253
  val json = StringBuilder()
272
254
  json.append("{")
@@ -275,6 +257,7 @@ object AuthAdapter : Application.ActivityLifecycleCallbacks {
275
257
  if (name != null) json.append(",\"name\":\"$name\"")
276
258
  if (photo != null) json.append(",\"photo\":\"$photo\"")
277
259
  if (idToken != null) json.append(",\"idToken\":\"$idToken\"")
260
+ if (serverAuthCode != null) json.append(",\"serverAuthCode\":\"$serverAuthCode\"")
278
261
  if (scopes != null) {
279
262
  json.append(",\"scopes\":[")
280
263
  json.append(scopes.joinToString(",") { "\"$it\"" })
@@ -57,6 +57,7 @@ class GoogleSignInActivity : ComponentActivity() {
57
57
 
58
58
  val gsoBuilder = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
59
59
  .requestIdToken(clientId)
60
+ .requestServerAuthCode(clientId)
60
61
  .requestEmail()
61
62
 
62
63
  scopes.forEach { scopeStr ->
@@ -16,6 +16,7 @@ public:
16
16
  if (user.name) json += "\"name\":\"" + *user.name + "\",";
17
17
  if (user.photo) json += "\"photo\":\"" + *user.photo + "\",";
18
18
  if (user.idToken) json += "\"idToken\":\"" + *user.idToken + "\",";
19
+ if (user.serverAuthCode) json += "\"serverAuthCode\":\"" + *user.serverAuthCode + "\",";
19
20
  if (user.scopes) {
20
21
  json += "\"scopes\":[";
21
22
  for (size_t i = 0; i < user.scopes->size(); ++i) {
@@ -49,6 +50,7 @@ public:
49
50
  user.name = extract("name");
50
51
  user.photo = extract("photo");
51
52
  user.idToken = extract("idToken");
53
+ user.serverAuthCode = extract("serverAuthCode");
52
54
 
53
55
  return user;
54
56
  }
@@ -40,6 +40,7 @@ public class AuthAdapter: NSObject {
40
40
  "photo": user.profile?.imageURL(withDimension: 300)?.absoluteString ?? "",
41
41
  "idToken": user.idToken?.tokenString ?? "",
42
42
  "accessToken": user.accessToken.tokenString,
43
+ "serverAuthCode": result?.serverAuthCode ?? "",
43
44
  "expirationTime": (user.accessToken.expirationDate?.timeIntervalSince1970 ?? 0) * 1000
44
45
  ]
45
46
  completion(data as NSDictionary, nil)
@@ -103,6 +104,7 @@ public class AuthAdapter: NSObject {
103
104
  "photo": user.profile?.imageURL(withDimension: 300)?.absoluteString ?? "",
104
105
  "idToken": user.idToken?.tokenString ?? "",
105
106
  "accessToken": user.accessToken.tokenString,
107
+ "serverAuthCode": result?.serverAuthCode ?? "",
106
108
  "expirationTime": (user.accessToken.expirationDate?.timeIntervalSince1970 ?? 0) * 1000
107
109
  ]
108
110
  completion(data as NSDictionary, nil)
@@ -153,6 +155,7 @@ public class AuthAdapter: NSObject {
153
155
  "photo": user.profile?.imageURL(withDimension: 300)?.absoluteString ?? "",
154
156
  "idToken": user.idToken?.tokenString ?? "",
155
157
  "accessToken": user.accessToken.tokenString,
158
+ "serverAuthCode": "",
156
159
  "expirationTime": (user.accessToken.expirationDate?.timeIntervalSince1970 ?? 0) * 1000
157
160
  ]
158
161
  completion(data as NSDictionary)
@@ -37,6 +37,7 @@ std::shared_ptr<Promise<AuthUser>> PlatformAuth::login(AuthProvider provider, co
37
37
  user.photo = std::string([[data objectForKey:@"photo"] UTF8String]);
38
38
  user.idToken = std::string([[data objectForKey:@"idToken"] UTF8String]);
39
39
  if ([data objectForKey:@"accessToken"]) user.accessToken = std::string([[data objectForKey:@"accessToken"] UTF8String]);
40
+ if ([data objectForKey:@"serverAuthCode"]) user.serverAuthCode = std::string([[data objectForKey:@"serverAuthCode"] UTF8String]);
40
41
  if ([data objectForKey:@"expirationTime"]) user.expirationTime = [[data objectForKey:@"expirationTime"] doubleValue];
41
42
 
42
43
  promise->resolve(user);
@@ -66,6 +67,7 @@ std::shared_ptr<Promise<AuthUser>> PlatformAuth::requestScopes(const std::vector
66
67
  user.photo = std::string([[data objectForKey:@"photo"] UTF8String]);
67
68
  user.idToken = std::string([[data objectForKey:@"idToken"] UTF8String]);
68
69
  if ([data objectForKey:@"accessToken"]) user.accessToken = std::string([[data objectForKey:@"accessToken"] UTF8String]);
70
+ if ([data objectForKey:@"serverAuthCode"]) user.serverAuthCode = std::string([[data objectForKey:@"serverAuthCode"] UTF8String]);
69
71
  if ([data objectForKey:@"expirationTime"]) user.expirationTime = [[data objectForKey:@"expirationTime"] doubleValue];
70
72
  promise->resolve(user);
71
73
  }];
@@ -102,6 +104,7 @@ std::shared_ptr<Promise<std::optional<AuthUser>>> PlatformAuth::silentRestore()
102
104
  user.photo = std::string([[data objectForKey:@"photo"] UTF8String]);
103
105
  user.idToken = std::string([[data objectForKey:@"idToken"] UTF8String]);
104
106
  if ([data objectForKey:@"accessToken"]) user.accessToken = std::string([[data objectForKey:@"accessToken"] UTF8String]);
107
+ if ([data objectForKey:@"serverAuthCode"]) user.serverAuthCode = std::string([[data objectForKey:@"serverAuthCode"] UTF8String]);
105
108
  if ([data objectForKey:@"expirationTime"]) user.expirationTime = [[data objectForKey:@"expirationTime"] doubleValue];
106
109
  promise->resolve(user);
107
110
  }];
@@ -17,6 +17,7 @@ export interface AuthUser {
17
17
  photo?: string;
18
18
  idToken?: string;
19
19
  accessToken?: string;
20
+ serverAuthCode?: string;
20
21
  scopes?: string[];
21
22
  expirationTime?: number;
22
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Auth.nitro.d.ts","sourceRoot":"","sources":["../../src/Auth.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE9C,MAAM,MAAM,aAAa,GACrB,WAAW,GACX,eAAe,GACf,qBAAqB,GACrB,sBAAsB,GACtB,SAAS,CAAC;AAEd,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,IAAK,SAAQ,YAAY,CAAC;IAAE,GAAG,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,KAAK,CAAA;CAAE,CAAC;IACxE,QAAQ,CAAC,WAAW,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAElC,KAAK,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC9C,YAAY,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IAEpC,MAAM,IAAI,IAAI,CAAC;IAEf,kBAAkB,CAChB,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,KAAK,IAAI,GAC7C,MAAM,IAAI,CAAC;CACf"}
1
+ {"version":3,"file":"Auth.nitro.d.ts","sourceRoot":"","sources":["../../src/Auth.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE9C,MAAM,MAAM,aAAa,GACrB,WAAW,GACX,eAAe,GACf,qBAAqB,GACrB,sBAAsB,GACtB,SAAS,CAAC;AAEd,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,IAAK,SAAQ,YAAY,CAAC;IAAE,GAAG,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,KAAK,CAAA;CAAE,CAAC;IACxE,QAAQ,CAAC,WAAW,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAElC,KAAK,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC9C,YAAY,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IAEpC,MAAM,IAAI,IAAI,CAAC;IAEf,kBAAkB,CAChB,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,KAAK,IAAI,GAC7C,MAAM,IAAI,CAAC;CACf"}
@@ -44,12 +44,13 @@ namespace margelo::nitro::NitroAuth {
44
44
  std::optional<std::string> photo SWIFT_PRIVATE;
45
45
  std::optional<std::string> idToken SWIFT_PRIVATE;
46
46
  std::optional<std::string> accessToken SWIFT_PRIVATE;
47
+ std::optional<std::string> serverAuthCode SWIFT_PRIVATE;
47
48
  std::optional<std::vector<std::string>> scopes SWIFT_PRIVATE;
48
49
  std::optional<double> expirationTime SWIFT_PRIVATE;
49
50
 
50
51
  public:
51
52
  AuthUser() = default;
52
- explicit AuthUser(AuthProvider provider, std::optional<std::string> email, std::optional<std::string> name, std::optional<std::string> photo, std::optional<std::string> idToken, std::optional<std::string> accessToken, std::optional<std::vector<std::string>> scopes, std::optional<double> expirationTime): provider(provider), email(email), name(name), photo(photo), idToken(idToken), accessToken(accessToken), scopes(scopes), expirationTime(expirationTime) {}
53
+ explicit AuthUser(AuthProvider provider, std::optional<std::string> email, std::optional<std::string> name, std::optional<std::string> photo, std::optional<std::string> idToken, std::optional<std::string> accessToken, std::optional<std::string> serverAuthCode, std::optional<std::vector<std::string>> scopes, std::optional<double> expirationTime): provider(provider), email(email), name(name), photo(photo), idToken(idToken), accessToken(accessToken), serverAuthCode(serverAuthCode), scopes(scopes), expirationTime(expirationTime) {}
53
54
  };
54
55
 
55
56
  } // namespace margelo::nitro::NitroAuth
@@ -68,6 +69,7 @@ namespace margelo::nitro {
68
69
  JSIConverter<std::optional<std::string>>::fromJSI(runtime, obj.getProperty(runtime, "photo")),
69
70
  JSIConverter<std::optional<std::string>>::fromJSI(runtime, obj.getProperty(runtime, "idToken")),
70
71
  JSIConverter<std::optional<std::string>>::fromJSI(runtime, obj.getProperty(runtime, "accessToken")),
72
+ JSIConverter<std::optional<std::string>>::fromJSI(runtime, obj.getProperty(runtime, "serverAuthCode")),
71
73
  JSIConverter<std::optional<std::vector<std::string>>>::fromJSI(runtime, obj.getProperty(runtime, "scopes")),
72
74
  JSIConverter<std::optional<double>>::fromJSI(runtime, obj.getProperty(runtime, "expirationTime"))
73
75
  );
@@ -80,6 +82,7 @@ namespace margelo::nitro {
80
82
  obj.setProperty(runtime, "photo", JSIConverter<std::optional<std::string>>::toJSI(runtime, arg.photo));
81
83
  obj.setProperty(runtime, "idToken", JSIConverter<std::optional<std::string>>::toJSI(runtime, arg.idToken));
82
84
  obj.setProperty(runtime, "accessToken", JSIConverter<std::optional<std::string>>::toJSI(runtime, arg.accessToken));
85
+ obj.setProperty(runtime, "serverAuthCode", JSIConverter<std::optional<std::string>>::toJSI(runtime, arg.serverAuthCode));
83
86
  obj.setProperty(runtime, "scopes", JSIConverter<std::optional<std::vector<std::string>>>::toJSI(runtime, arg.scopes));
84
87
  obj.setProperty(runtime, "expirationTime", JSIConverter<std::optional<double>>::toJSI(runtime, arg.expirationTime));
85
88
  return obj;
@@ -98,6 +101,7 @@ namespace margelo::nitro {
98
101
  if (!JSIConverter<std::optional<std::string>>::canConvert(runtime, obj.getProperty(runtime, "photo"))) return false;
99
102
  if (!JSIConverter<std::optional<std::string>>::canConvert(runtime, obj.getProperty(runtime, "idToken"))) return false;
100
103
  if (!JSIConverter<std::optional<std::string>>::canConvert(runtime, obj.getProperty(runtime, "accessToken"))) return false;
104
+ if (!JSIConverter<std::optional<std::string>>::canConvert(runtime, obj.getProperty(runtime, "serverAuthCode"))) return false;
101
105
  if (!JSIConverter<std::optional<std::vector<std::string>>>::canConvert(runtime, obj.getProperty(runtime, "scopes"))) return false;
102
106
  if (!JSIConverter<std::optional<double>>::canConvert(runtime, obj.getProperty(runtime, "expirationTime"))) return false;
103
107
  return true;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-nitro-auth",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "High-performance authentication library for React Native with Google Sign-In and Apple Sign-In support, powered by Nitro Modules (JSI)",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
package/src/Auth.nitro.ts CHANGED
@@ -27,6 +27,7 @@ export interface AuthUser {
27
27
  photo?: string;
28
28
  idToken?: string;
29
29
  accessToken?: string;
30
+ serverAuthCode?: string;
30
31
  scopes?: string[];
31
32
  expirationTime?: number;
32
33
  }