react-native-nitro-auth 0.1.0
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/LICENSE +21 -0
- package/README.md +254 -0
- package/android/CMakeLists.txt +37 -0
- package/android/build.gradle +99 -0
- package/android/gradle.properties +4 -0
- package/android/src/main/AndroidManifest.xml +12 -0
- package/android/src/main/cpp/JniOnLoad.cpp +7 -0
- package/android/src/main/cpp/PlatformAuth+Android.cpp +293 -0
- package/android/src/main/java/com/auth/AuthAdapter.kt +286 -0
- package/android/src/main/java/com/auth/GoogleSignInActivity.kt +73 -0
- package/android/src/main/java/com/auth/NitroAuthModule.kt +19 -0
- package/android/src/main/java/com/auth/NitroAuthPackage.kt +16 -0
- package/app.plugin.js +64 -0
- package/cpp/AuthCache.cpp +105 -0
- package/cpp/AuthCache.hpp +20 -0
- package/cpp/HybridAuth.cpp +213 -0
- package/cpp/HybridAuth.hpp +47 -0
- package/cpp/JSONSerializer.hpp +57 -0
- package/cpp/PlatformAuth.hpp +25 -0
- package/ios/AuthAdapter.swift +200 -0
- package/ios/PlatformAuth+iOS.mm +119 -0
- package/lib/commonjs/Auth.nitro.js +6 -0
- package/lib/commonjs/Auth.nitro.js.map +1 -0
- package/lib/commonjs/Auth.web.js +256 -0
- package/lib/commonjs/Auth.web.js.map +1 -0
- package/lib/commonjs/global.d.js +6 -0
- package/lib/commonjs/global.d.js.map +1 -0
- package/lib/commonjs/index.js +52 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/index.web.js +52 -0
- package/lib/commonjs/index.web.js.map +1 -0
- package/lib/commonjs/service.js +9 -0
- package/lib/commonjs/service.js.map +1 -0
- package/lib/commonjs/service.web.js +13 -0
- package/lib/commonjs/service.web.js.map +1 -0
- package/lib/commonjs/ui/social-button.js +103 -0
- package/lib/commonjs/ui/social-button.js.map +1 -0
- package/lib/commonjs/ui/social-button.web.js +102 -0
- package/lib/commonjs/ui/social-button.web.js.map +1 -0
- package/lib/commonjs/use-auth.js +144 -0
- package/lib/commonjs/use-auth.js.map +1 -0
- package/lib/module/Auth.nitro.js +4 -0
- package/lib/module/Auth.nitro.js.map +1 -0
- package/lib/module/Auth.web.js +252 -0
- package/lib/module/Auth.web.js.map +1 -0
- package/lib/module/global.d.js +4 -0
- package/lib/module/global.d.js.map +1 -0
- package/lib/module/index.js +7 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/index.web.js +7 -0
- package/lib/module/index.web.js.map +1 -0
- package/lib/module/service.js +5 -0
- package/lib/module/service.js.map +1 -0
- package/lib/module/service.web.js +4 -0
- package/lib/module/service.web.js.map +1 -0
- package/lib/module/ui/social-button.js +97 -0
- package/lib/module/ui/social-button.js.map +1 -0
- package/lib/module/ui/social-button.web.js +96 -0
- package/lib/module/ui/social-button.web.js.map +1 -0
- package/lib/module/use-auth.js +140 -0
- package/lib/module/use-auth.js.map +1 -0
- package/lib/typescript/Auth.nitro.d.ts +38 -0
- package/lib/typescript/Auth.nitro.d.ts.map +1 -0
- package/lib/typescript/Auth.web.d.ts +32 -0
- package/lib/typescript/Auth.web.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +5 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/index.web.d.ts +5 -0
- package/lib/typescript/index.web.d.ts.map +1 -0
- package/lib/typescript/service.d.ts +3 -0
- package/lib/typescript/service.d.ts.map +1 -0
- package/lib/typescript/service.web.d.ts +2 -0
- package/lib/typescript/service.web.d.ts.map +1 -0
- package/lib/typescript/ui/social-button.d.ts +17 -0
- package/lib/typescript/ui/social-button.d.ts.map +1 -0
- package/lib/typescript/ui/social-button.web.d.ts +17 -0
- package/lib/typescript/ui/social-button.web.d.ts.map +1 -0
- package/lib/typescript/use-auth.d.ts +15 -0
- package/lib/typescript/use-auth.d.ts.map +1 -0
- package/nitro.json +15 -0
- package/nitrogen/generated/.gitattributes +1 -0
- package/nitrogen/generated/android/NitroAuth+autolinking.cmake +81 -0
- package/nitrogen/generated/android/NitroAuth+autolinking.gradle +27 -0
- package/nitrogen/generated/android/NitroAuthOnLoad.cpp +44 -0
- package/nitrogen/generated/android/NitroAuthOnLoad.hpp +25 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/com/auth/NitroAuthOnLoad.kt +35 -0
- package/nitrogen/generated/ios/NitroAuth+autolinking.rb +60 -0
- package/nitrogen/generated/ios/NitroAuth-Swift-Cxx-Bridge.cpp +17 -0
- package/nitrogen/generated/ios/NitroAuth-Swift-Cxx-Bridge.hpp +27 -0
- package/nitrogen/generated/ios/NitroAuth-Swift-Cxx-Umbrella.hpp +38 -0
- package/nitrogen/generated/ios/NitroAuthAutolinking.mm +35 -0
- package/nitrogen/generated/ios/NitroAuthAutolinking.swift +12 -0
- package/nitrogen/generated/shared/c++/AuthProvider.hpp +76 -0
- package/nitrogen/generated/shared/c++/AuthTokens.hpp +84 -0
- package/nitrogen/generated/shared/c++/AuthUser.hpp +107 -0
- package/nitrogen/generated/shared/c++/HybridAuthSpec.cpp +30 -0
- package/nitrogen/generated/shared/c++/HybridAuthSpec.hpp +85 -0
- package/nitrogen/generated/shared/c++/LoginOptions.hpp +81 -0
- package/package.json +113 -0
- package/react-native-nitro-auth.podspec +40 -0
- package/src/Auth.nitro.ts +50 -0
- package/src/Auth.web.ts +310 -0
- package/src/global.d.ts +38 -0
- package/src/index.ts +4 -0
- package/src/index.web.ts +4 -0
- package/src/service.ts +4 -0
- package/src/service.web.ts +1 -0
- package/src/ui/social-button.tsx +129 -0
- package/src/ui/social-button.web.tsx +128 -0
- package/src/use-auth.ts +157 -0
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const CACHE_KEY = "nitro_auth_user";
|
|
4
|
+
const SCOPES_KEY = "nitro_auth_scopes";
|
|
5
|
+
const DEFAULT_SCOPES = ["openid", "email", "profile"];
|
|
6
|
+
const getConfig = () => {
|
|
7
|
+
try {
|
|
8
|
+
const Constants = require("expo-constants").default;
|
|
9
|
+
return Constants.expoConfig?.extra || {};
|
|
10
|
+
} catch {
|
|
11
|
+
return {};
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
class AuthWeb {
|
|
15
|
+
_grantedScopes = [];
|
|
16
|
+
_listeners = [];
|
|
17
|
+
constructor() {
|
|
18
|
+
const cached = localStorage.getItem(CACHE_KEY);
|
|
19
|
+
if (cached) {
|
|
20
|
+
try {
|
|
21
|
+
this._currentUser = JSON.parse(cached);
|
|
22
|
+
} catch {
|
|
23
|
+
localStorage.removeItem(CACHE_KEY);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
const scopes = localStorage.getItem(SCOPES_KEY);
|
|
27
|
+
if (scopes) {
|
|
28
|
+
try {
|
|
29
|
+
this._grantedScopes = JSON.parse(scopes);
|
|
30
|
+
} catch {
|
|
31
|
+
localStorage.removeItem(SCOPES_KEY);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
get currentUser() {
|
|
36
|
+
return this._currentUser;
|
|
37
|
+
}
|
|
38
|
+
get grantedScopes() {
|
|
39
|
+
return this._grantedScopes;
|
|
40
|
+
}
|
|
41
|
+
get hasPlayServices() {
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
onAuthStateChanged(callback) {
|
|
45
|
+
this._listeners.push(callback);
|
|
46
|
+
callback(this._currentUser);
|
|
47
|
+
return () => {
|
|
48
|
+
this._listeners = this._listeners.filter(l => l !== callback);
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
notify() {
|
|
52
|
+
this._listeners.forEach(l => l(this._currentUser));
|
|
53
|
+
}
|
|
54
|
+
async login(provider, options) {
|
|
55
|
+
const scopes = options?.scopes ?? DEFAULT_SCOPES;
|
|
56
|
+
const loginHint = options?.loginHint;
|
|
57
|
+
try {
|
|
58
|
+
if (provider === "google") {
|
|
59
|
+
return await this.loginGoogle(scopes, loginHint);
|
|
60
|
+
}
|
|
61
|
+
return await this.loginApple();
|
|
62
|
+
} catch (e) {
|
|
63
|
+
throw this.mapError(e);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
async requestScopes(scopes) {
|
|
67
|
+
if (!this._currentUser) {
|
|
68
|
+
throw new Error("No user logged in");
|
|
69
|
+
}
|
|
70
|
+
if (this._currentUser.provider !== "google") {
|
|
71
|
+
throw new Error("Scope management only supported for Google");
|
|
72
|
+
}
|
|
73
|
+
const newScopes = [...new Set([...this._grantedScopes, ...scopes])];
|
|
74
|
+
return this.loginGoogle(newScopes).catch(e => {
|
|
75
|
+
throw this.mapError(e);
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
async revokeScopes(scopes) {
|
|
79
|
+
this._grantedScopes = this._grantedScopes.filter(s => !scopes.includes(s));
|
|
80
|
+
localStorage.setItem(SCOPES_KEY, JSON.stringify(this._grantedScopes));
|
|
81
|
+
if (this._currentUser) {
|
|
82
|
+
this._currentUser.scopes = this._grantedScopes;
|
|
83
|
+
this.updateUser(this._currentUser);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
async getAccessToken() {
|
|
87
|
+
if (this._currentUser?.expirationTime) {
|
|
88
|
+
const now = Date.now();
|
|
89
|
+
if (now + 300000 > this._currentUser.expirationTime) {
|
|
90
|
+
await this.refreshToken();
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return this._currentUser?.accessToken;
|
|
94
|
+
}
|
|
95
|
+
async refreshToken() {
|
|
96
|
+
if (!this._currentUser) {
|
|
97
|
+
throw new Error("No user logged in");
|
|
98
|
+
}
|
|
99
|
+
if (this._currentUser.provider !== "google") {
|
|
100
|
+
throw new Error("Token refresh only supported for Google");
|
|
101
|
+
}
|
|
102
|
+
await this.loginGoogle(this._grantedScopes.length > 0 ? this._grantedScopes : DEFAULT_SCOPES);
|
|
103
|
+
return {
|
|
104
|
+
accessToken: this._currentUser.accessToken,
|
|
105
|
+
idToken: this._currentUser.idToken
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
mapError(error) {
|
|
109
|
+
const msg = error?.message?.toLowerCase() ?? "";
|
|
110
|
+
if (msg.includes("cancel") || msg.includes("popup_closed")) {
|
|
111
|
+
return new Error("cancelled");
|
|
112
|
+
}
|
|
113
|
+
if (msg.includes("network")) {
|
|
114
|
+
return new Error("network_error");
|
|
115
|
+
}
|
|
116
|
+
if (msg.includes("client id") || msg.includes("config")) {
|
|
117
|
+
return new Error("configuration_error");
|
|
118
|
+
}
|
|
119
|
+
return error;
|
|
120
|
+
}
|
|
121
|
+
async loginGoogle(scopes, loginHint) {
|
|
122
|
+
const config = getConfig();
|
|
123
|
+
const clientId = config.googleWebClientId;
|
|
124
|
+
if (!clientId) {
|
|
125
|
+
throw new Error("Google Web Client ID not configured. Add 'GOOGLE_WEB_CLIENT_ID' to your .env file.");
|
|
126
|
+
}
|
|
127
|
+
return new Promise((resolve, reject) => {
|
|
128
|
+
const redirectUri = window.location.origin;
|
|
129
|
+
const authUrl = new URL("https://accounts.google.com/o/oauth2/v2/auth");
|
|
130
|
+
authUrl.searchParams.set("client_id", clientId);
|
|
131
|
+
authUrl.searchParams.set("redirect_uri", redirectUri);
|
|
132
|
+
authUrl.searchParams.set("response_type", "id_token token");
|
|
133
|
+
authUrl.searchParams.set("scope", scopes.join(" "));
|
|
134
|
+
authUrl.searchParams.set("nonce", Math.random().toString(36).slice(2));
|
|
135
|
+
if (loginHint) {
|
|
136
|
+
authUrl.searchParams.set("login_hint", loginHint);
|
|
137
|
+
}
|
|
138
|
+
const width = 500;
|
|
139
|
+
const height = 600;
|
|
140
|
+
const left = window.screenX + (window.outerWidth - width) / 2;
|
|
141
|
+
const top = window.screenY + (window.outerHeight - height) / 2;
|
|
142
|
+
const popup = window.open(authUrl.toString(), "google-auth", `width=${width},height=${height},left=${left},top=${top}`);
|
|
143
|
+
if (!popup) {
|
|
144
|
+
reject(new Error("Popup blocked. Please allow popups for this site."));
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
const checkInterval = setInterval(() => {
|
|
148
|
+
try {
|
|
149
|
+
if (popup.closed) {
|
|
150
|
+
clearInterval(checkInterval);
|
|
151
|
+
reject(new Error("cancelled"));
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
const url = popup.location.href;
|
|
155
|
+
if (url.startsWith(redirectUri)) {
|
|
156
|
+
clearInterval(checkInterval);
|
|
157
|
+
popup.close();
|
|
158
|
+
const hash = new URL(url).hash.slice(1);
|
|
159
|
+
const params = new URLSearchParams(hash);
|
|
160
|
+
const idToken = params.get("id_token");
|
|
161
|
+
const accessToken = params.get("access_token");
|
|
162
|
+
const expiresIn = params.get("expires_in");
|
|
163
|
+
if (idToken) {
|
|
164
|
+
this._grantedScopes = scopes;
|
|
165
|
+
localStorage.setItem(SCOPES_KEY, JSON.stringify(scopes));
|
|
166
|
+
const user = {
|
|
167
|
+
provider: "google",
|
|
168
|
+
idToken,
|
|
169
|
+
accessToken: accessToken ?? undefined,
|
|
170
|
+
scopes,
|
|
171
|
+
expirationTime: expiresIn ? Date.now() + parseInt(expiresIn) * 1000 : undefined,
|
|
172
|
+
...this.decodeGoogleJwt(idToken)
|
|
173
|
+
};
|
|
174
|
+
this.updateUser(user);
|
|
175
|
+
resolve();
|
|
176
|
+
} else {
|
|
177
|
+
reject(new Error("No id_token in response"));
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
} catch {}
|
|
181
|
+
}, 100);
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
decodeGoogleJwt(token) {
|
|
185
|
+
try {
|
|
186
|
+
const payload = token.split(".")[1];
|
|
187
|
+
const decoded = JSON.parse(atob(payload));
|
|
188
|
+
return {
|
|
189
|
+
email: decoded.email,
|
|
190
|
+
name: decoded.name,
|
|
191
|
+
photo: decoded.picture
|
|
192
|
+
};
|
|
193
|
+
} catch {
|
|
194
|
+
return {};
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
async loginApple() {
|
|
198
|
+
const config = getConfig();
|
|
199
|
+
const clientId = config.appleWebClientId;
|
|
200
|
+
if (!clientId) {
|
|
201
|
+
throw new Error("Apple Web Client ID not configured. Add 'APPLE_WEB_CLIENT_ID' to your .env file.");
|
|
202
|
+
}
|
|
203
|
+
return new Promise((resolve, reject) => {
|
|
204
|
+
const script = document.createElement("script");
|
|
205
|
+
script.src = "https://appleid.cdn-apple.com/appleauth/static/jsapi/appleid/1/en_US/appleid.auth.js";
|
|
206
|
+
script.async = true;
|
|
207
|
+
script.onload = () => {
|
|
208
|
+
if (!window.AppleID) {
|
|
209
|
+
reject(new Error("Apple SDK not loaded"));
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
window.AppleID.auth.init({
|
|
213
|
+
clientId,
|
|
214
|
+
scope: "name email",
|
|
215
|
+
redirectURI: window.location.origin,
|
|
216
|
+
usePopup: true
|
|
217
|
+
});
|
|
218
|
+
window.AppleID.auth.signIn().then(response => {
|
|
219
|
+
const user = {
|
|
220
|
+
provider: "apple",
|
|
221
|
+
idToken: response.authorization.id_token,
|
|
222
|
+
email: response.user?.email,
|
|
223
|
+
name: response.user?.name ? `${response.user.name.firstName} ${response.user.name.lastName}`.trim() : undefined
|
|
224
|
+
};
|
|
225
|
+
this.updateUser(user);
|
|
226
|
+
resolve();
|
|
227
|
+
}).catch(e => reject(this.mapError(e)));
|
|
228
|
+
};
|
|
229
|
+
script.onerror = () => reject(new Error("Failed to load Apple SDK"));
|
|
230
|
+
document.head.appendChild(script);
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
logout() {
|
|
234
|
+
this._currentUser = undefined;
|
|
235
|
+
this._grantedScopes = [];
|
|
236
|
+
localStorage.removeItem(CACHE_KEY);
|
|
237
|
+
localStorage.removeItem(SCOPES_KEY);
|
|
238
|
+
this.notify();
|
|
239
|
+
}
|
|
240
|
+
updateUser(user) {
|
|
241
|
+
this._currentUser = user;
|
|
242
|
+
localStorage.setItem(CACHE_KEY, JSON.stringify(user));
|
|
243
|
+
this.notify();
|
|
244
|
+
}
|
|
245
|
+
name = "Auth";
|
|
246
|
+
dispose() {}
|
|
247
|
+
equals(other) {
|
|
248
|
+
return other === this;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
export const AuthModule = new AuthWeb();
|
|
252
|
+
//# sourceMappingURL=Auth.web.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["CACHE_KEY","SCOPES_KEY","DEFAULT_SCOPES","getConfig","Constants","require","default","expoConfig","extra","AuthWeb","_grantedScopes","_listeners","constructor","cached","localStorage","getItem","_currentUser","JSON","parse","removeItem","scopes","currentUser","grantedScopes","hasPlayServices","onAuthStateChanged","callback","push","filter","l","notify","forEach","login","provider","options","loginHint","loginGoogle","loginApple","e","mapError","requestScopes","Error","newScopes","Set","catch","revokeScopes","s","includes","setItem","stringify","updateUser","getAccessToken","expirationTime","now","Date","refreshToken","accessToken","length","idToken","error","msg","message","toLowerCase","config","clientId","googleWebClientId","Promise","resolve","reject","redirectUri","window","location","origin","authUrl","URL","searchParams","set","join","Math","random","toString","slice","width","height","left","screenX","outerWidth","top","screenY","outerHeight","popup","open","checkInterval","setInterval","closed","clearInterval","url","href","startsWith","close","hash","params","URLSearchParams","get","expiresIn","user","undefined","parseInt","decodeGoogleJwt","token","payload","split","decoded","atob","email","name","photo","picture","appleWebClientId","script","document","createElement","src","async","onload","AppleID","auth","init","scope","redirectURI","usePopup","signIn","then","response","authorization","id_token","firstName","lastName","trim","onerror","head","appendChild","logout","dispose","equals","other","AuthModule"],"sourceRoot":"../../src","sources":["Auth.web.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../src","sources":["global.d.ts"],"mappings":";;AAoCA","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["AuthService"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,cAAc,iBAAc;AAC5B,cAAc,oBAAoB;AAClC,cAAc,eAAY;AAC1B,SAASA,WAAW,QAAQ,WAAW","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["AuthService"],"sourceRoot":"../../src","sources":["index.web.ts"],"mappings":";;AAAA,cAAc,iBAAc;AAC5B,cAAc,2BAAwB;AACtC,cAAc,eAAY;AAC1B,SAASA,WAAW,QAAQ,kBAAe","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["NitroModules","AuthService","createHybridObject"],"sourceRoot":"../../src","sources":["service.ts"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,4BAA4B;AAGzD,OAAO,MAAMC,WAAW,GAAGD,YAAY,CAACE,kBAAkB,CAAO,MAAM,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["AuthModule","AuthService"],"sourceRoot":"../../src","sources":["service.web.ts"],"mappings":";;AAAA,SAASA,UAAU,IAAIC,WAAW,QAAQ,eAAY","ignoreList":[]}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { useState } from "react";
|
|
4
|
+
import { Pressable, Text, StyleSheet, View, ActivityIndicator } from "react-native";
|
|
5
|
+
import { NitroModules } from "react-native-nitro-modules";
|
|
6
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
|
+
async function performLogin(provider) {
|
|
8
|
+
const auth = NitroModules.createHybridObject("Auth");
|
|
9
|
+
await auth.login(provider);
|
|
10
|
+
return auth.currentUser ?? null;
|
|
11
|
+
}
|
|
12
|
+
export const SocialButton = ({
|
|
13
|
+
provider,
|
|
14
|
+
variant = "primary",
|
|
15
|
+
borderRadius = 8,
|
|
16
|
+
style,
|
|
17
|
+
textStyle,
|
|
18
|
+
disabled,
|
|
19
|
+
onSuccess,
|
|
20
|
+
onError,
|
|
21
|
+
onPress
|
|
22
|
+
}) => {
|
|
23
|
+
const [loading, setLoading] = useState(false);
|
|
24
|
+
const handleLogin = () => {
|
|
25
|
+
if (loading || disabled) return;
|
|
26
|
+
if (onPress) {
|
|
27
|
+
onPress();
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
setLoading(true);
|
|
31
|
+
performLogin(provider).then(user => {
|
|
32
|
+
setLoading(false);
|
|
33
|
+
if (user) onSuccess?.(user);
|
|
34
|
+
}).catch(e => {
|
|
35
|
+
setLoading(false);
|
|
36
|
+
onError?.(e);
|
|
37
|
+
});
|
|
38
|
+
};
|
|
39
|
+
const isGoogle = provider === "google";
|
|
40
|
+
const isDisabled = loading || disabled;
|
|
41
|
+
const getBackgroundColor = () => {
|
|
42
|
+
if (isDisabled) return "#CCCCCC";
|
|
43
|
+
if (variant === "black") return "#000000";
|
|
44
|
+
if (variant === "white") return "#FFFFFF";
|
|
45
|
+
if (variant === "outline") return "transparent";
|
|
46
|
+
return isGoogle ? "#4285F4" : "#000000";
|
|
47
|
+
};
|
|
48
|
+
const getTextColor = () => {
|
|
49
|
+
if (variant === "white" || variant === "outline") return "#000000";
|
|
50
|
+
return "#FFFFFF";
|
|
51
|
+
};
|
|
52
|
+
const getBorderColor = () => {
|
|
53
|
+
if (variant === "outline") return "#DDDDDD";
|
|
54
|
+
return "transparent";
|
|
55
|
+
};
|
|
56
|
+
return /*#__PURE__*/_jsx(Pressable, {
|
|
57
|
+
style: [styles.button, {
|
|
58
|
+
backgroundColor: getBackgroundColor(),
|
|
59
|
+
borderRadius,
|
|
60
|
+
borderColor: getBorderColor(),
|
|
61
|
+
borderWidth: variant === "outline" ? 1 : 0
|
|
62
|
+
}, style],
|
|
63
|
+
onPress: handleLogin,
|
|
64
|
+
disabled: isDisabled,
|
|
65
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
66
|
+
style: styles.content,
|
|
67
|
+
children: loading ? /*#__PURE__*/_jsx(ActivityIndicator, {
|
|
68
|
+
size: "small",
|
|
69
|
+
color: getTextColor()
|
|
70
|
+
}) : /*#__PURE__*/_jsxs(Text, {
|
|
71
|
+
style: [styles.text, {
|
|
72
|
+
color: getTextColor()
|
|
73
|
+
}, textStyle],
|
|
74
|
+
children: ["Sign in with ", provider.charAt(0).toUpperCase() + provider.slice(1)]
|
|
75
|
+
})
|
|
76
|
+
})
|
|
77
|
+
});
|
|
78
|
+
};
|
|
79
|
+
const styles = StyleSheet.create({
|
|
80
|
+
button: {
|
|
81
|
+
paddingVertical: 12,
|
|
82
|
+
paddingHorizontal: 16,
|
|
83
|
+
minHeight: 48,
|
|
84
|
+
justifyContent: "center",
|
|
85
|
+
alignItems: "center",
|
|
86
|
+
width: "100%"
|
|
87
|
+
},
|
|
88
|
+
content: {
|
|
89
|
+
flexDirection: "row",
|
|
90
|
+
alignItems: "center"
|
|
91
|
+
},
|
|
92
|
+
text: {
|
|
93
|
+
fontSize: 16,
|
|
94
|
+
fontWeight: "600"
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
//# sourceMappingURL=social-button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useState","Pressable","Text","StyleSheet","View","ActivityIndicator","NitroModules","jsx","_jsx","jsxs","_jsxs","performLogin","provider","auth","createHybridObject","login","currentUser","SocialButton","variant","borderRadius","style","textStyle","disabled","onSuccess","onError","onPress","loading","setLoading","handleLogin","then","user","catch","e","isGoogle","isDisabled","getBackgroundColor","getTextColor","getBorderColor","styles","button","backgroundColor","borderColor","borderWidth","children","content","size","color","text","charAt","toUpperCase","slice","create","paddingVertical","paddingHorizontal","minHeight","justifyContent","alignItems","width","flexDirection","fontSize","fontWeight"],"sourceRoot":"../../../src","sources":["ui/social-button.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { useState } from "react";
|
|
4
|
+
import { Pressable, Text, StyleSheet, View, ActivityIndicator } from "react-native";
|
|
5
|
+
import { AuthModule } from "../Auth.web.js";
|
|
6
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
|
+
async function performLogin(provider) {
|
|
8
|
+
await AuthModule.login(provider);
|
|
9
|
+
return AuthModule.currentUser ?? null;
|
|
10
|
+
}
|
|
11
|
+
export const SocialButton = ({
|
|
12
|
+
provider,
|
|
13
|
+
variant = "primary",
|
|
14
|
+
borderRadius = 8,
|
|
15
|
+
style,
|
|
16
|
+
textStyle,
|
|
17
|
+
disabled,
|
|
18
|
+
onSuccess,
|
|
19
|
+
onError,
|
|
20
|
+
onPress
|
|
21
|
+
}) => {
|
|
22
|
+
const [loading, setLoading] = useState(false);
|
|
23
|
+
const handleLogin = () => {
|
|
24
|
+
if (loading || disabled) return;
|
|
25
|
+
if (onPress) {
|
|
26
|
+
onPress();
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
setLoading(true);
|
|
30
|
+
performLogin(provider).then(user => {
|
|
31
|
+
setLoading(false);
|
|
32
|
+
if (user) onSuccess?.(user);
|
|
33
|
+
}).catch(e => {
|
|
34
|
+
setLoading(false);
|
|
35
|
+
onError?.(e);
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
const isGoogle = provider === "google";
|
|
39
|
+
const isDisabled = loading || disabled;
|
|
40
|
+
const getBackgroundColor = () => {
|
|
41
|
+
if (isDisabled) return "#CCCCCC";
|
|
42
|
+
if (variant === "black") return "#000000";
|
|
43
|
+
if (variant === "white") return "#FFFFFF";
|
|
44
|
+
if (variant === "outline") return "transparent";
|
|
45
|
+
return isGoogle ? "#4285F4" : "#000000";
|
|
46
|
+
};
|
|
47
|
+
const getTextColor = () => {
|
|
48
|
+
if (variant === "white" || variant === "outline") return "#000000";
|
|
49
|
+
return "#FFFFFF";
|
|
50
|
+
};
|
|
51
|
+
const getBorderColor = () => {
|
|
52
|
+
if (variant === "outline") return "#DDDDDD";
|
|
53
|
+
return "transparent";
|
|
54
|
+
};
|
|
55
|
+
return /*#__PURE__*/_jsx(Pressable, {
|
|
56
|
+
style: [styles.button, {
|
|
57
|
+
backgroundColor: getBackgroundColor(),
|
|
58
|
+
borderRadius,
|
|
59
|
+
borderColor: getBorderColor(),
|
|
60
|
+
borderWidth: variant === "outline" ? 1 : 0
|
|
61
|
+
}, style],
|
|
62
|
+
onPress: handleLogin,
|
|
63
|
+
disabled: isDisabled,
|
|
64
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
65
|
+
style: styles.content,
|
|
66
|
+
children: loading ? /*#__PURE__*/_jsx(ActivityIndicator, {
|
|
67
|
+
size: "small",
|
|
68
|
+
color: getTextColor()
|
|
69
|
+
}) : /*#__PURE__*/_jsxs(Text, {
|
|
70
|
+
style: [styles.text, {
|
|
71
|
+
color: getTextColor()
|
|
72
|
+
}, textStyle],
|
|
73
|
+
children: ["Sign in with ", provider.charAt(0).toUpperCase() + provider.slice(1)]
|
|
74
|
+
})
|
|
75
|
+
})
|
|
76
|
+
});
|
|
77
|
+
};
|
|
78
|
+
const styles = StyleSheet.create({
|
|
79
|
+
button: {
|
|
80
|
+
paddingVertical: 12,
|
|
81
|
+
paddingHorizontal: 16,
|
|
82
|
+
minHeight: 48,
|
|
83
|
+
justifyContent: "center",
|
|
84
|
+
alignItems: "center",
|
|
85
|
+
width: "100%"
|
|
86
|
+
},
|
|
87
|
+
content: {
|
|
88
|
+
flexDirection: "row",
|
|
89
|
+
alignItems: "center"
|
|
90
|
+
},
|
|
91
|
+
text: {
|
|
92
|
+
fontSize: 16,
|
|
93
|
+
fontWeight: "600"
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
//# sourceMappingURL=social-button.web.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useState","Pressable","Text","StyleSheet","View","ActivityIndicator","AuthModule","jsx","_jsx","jsxs","_jsxs","performLogin","provider","login","currentUser","SocialButton","variant","borderRadius","style","textStyle","disabled","onSuccess","onError","onPress","loading","setLoading","handleLogin","then","user","catch","e","isGoogle","isDisabled","getBackgroundColor","getTextColor","getBorderColor","styles","button","backgroundColor","borderColor","borderWidth","children","content","size","color","text","charAt","toUpperCase","slice","create","paddingVertical","paddingHorizontal","minHeight","justifyContent","alignItems","width","flexDirection","fontSize","fontWeight"],"sourceRoot":"../../../src","sources":["ui/social-button.web.tsx"],"mappings":"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","ignoreList":[]}
|