Skip to content

Commit 350bd31

Browse files
author
Axel Eirola
committed
Support multiple providers on android
1 parent a57fb75 commit 350bd31

File tree

1 file changed

+15
-15
lines changed

1 file changed

+15
-15
lines changed

android/src/main/java/com/rnappauth/RNAppAuthModule.java

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
import java.util.HashMap;
5252
import java.util.List;
5353
import java.util.Map;
54-
import java.util.concurrent.atomic.AtomicReference;
54+
import java.util.concurrent.ConcurrentHashMap;
5555
import java.util.concurrent.CountDownLatch;
5656

5757
public class RNAppAuthModule extends ReactContextBaseJavaModule implements ActivityEventListener {
@@ -67,7 +67,7 @@ public class RNAppAuthModule extends ReactContextBaseJavaModule implements Activ
6767
private Map<String, String> tokenRequestHeaders = null;
6868
private Map<String, String> additionalParametersMap;
6969
private String clientSecret;
70-
private final AtomicReference<AuthorizationServiceConfiguration> mServiceConfiguration = new AtomicReference<>();
70+
private final ConcurrentHashMap<String, AuthorizationServiceConfiguration> mServiceConfigurations = new ConcurrentHashMap<>();
7171
private boolean isPrefetched = false;
7272

7373
public RNAppAuthModule(ReactApplicationContext reactContext) {
@@ -97,15 +97,15 @@ public void prefetchConfiguration(
9797
final CountDownLatch fetchConfigurationLatch = new CountDownLatch(1);
9898

9999
if(!isPrefetched) {
100-
if (serviceConfiguration != null && mServiceConfiguration.get() == null) {
100+
if (serviceConfiguration != null && !mServiceConfigurations.containsKey(issuer)) {
101101
try {
102-
mServiceConfiguration.set(createAuthorizationServiceConfiguration(serviceConfiguration));
102+
mServiceConfigurations.put(issuer, createAuthorizationServiceConfiguration(serviceConfiguration));
103103
isPrefetched = true;
104104
fetchConfigurationLatch.countDown();
105105
} catch (Exception e) {
106106
promise.reject("configuration_error", "Failed to convert serviceConfiguration", e);
107107
}
108-
} else if (mServiceConfiguration.get() == null) {
108+
} else if (!mServiceConfigurations.containsKey(issuer)) {
109109
final Uri issuerUri = Uri.parse(issuer);
110110
AuthorizationServiceConfiguration.fetchFromUrl(
111111
buildConfigurationUriFromIssuer(issuerUri),
@@ -117,7 +117,7 @@ public void onFetchConfigurationCompleted(
117117
promise.reject("service_configuration_fetch_error", "Failed to fetch configuration", ex);
118118
return;
119119
}
120-
mServiceConfiguration.set(fetchedConfiguration);
120+
mServiceConfigurations.put(issuer, fetchedConfiguration);
121121
isPrefetched = true;
122122
fetchConfigurationLatch.countDown();
123123
}
@@ -157,9 +157,9 @@ public void register(
157157
final HashMap<String, String> additionalParametersMap = MapUtil.readableMapToHashMap(additionalParameters);
158158

159159
// when serviceConfiguration is provided, we don't need to hit up the OpenID well-known id endpoint
160-
if (serviceConfiguration != null || mServiceConfiguration.get() != null) {
160+
if (serviceConfiguration != null || mServiceConfigurations.containsKey(issuer)) {
161161
try {
162-
final AuthorizationServiceConfiguration serviceConfig = mServiceConfiguration.get() != null ? mServiceConfiguration.get() : createAuthorizationServiceConfiguration(serviceConfiguration);
162+
final AuthorizationServiceConfiguration serviceConfig = mServiceConfigurations.containsKey(issuer)? mServiceConfigurations.get(issuer) : createAuthorizationServiceConfiguration(serviceConfiguration);
163163
registerWithConfiguration(
164164
serviceConfig,
165165
appAuthConfiguration,
@@ -187,7 +187,7 @@ public void onFetchConfigurationCompleted(
187187
return;
188188
}
189189

190-
mServiceConfiguration.set(fetchedConfiguration);
190+
mServiceConfigurations.put(issuer, fetchedConfiguration);
191191

192192
registerWithConfiguration(
193193
fetchedConfiguration,
@@ -234,9 +234,9 @@ public void authorize(
234234
this.clientAuthMethod = clientAuthMethod;
235235

236236
// when serviceConfiguration is provided, we don't need to hit up the OpenID well-known id endpoint
237-
if (serviceConfiguration != null || mServiceConfiguration.get() != null) {
237+
if (serviceConfiguration != null || mServiceConfigurations.containsKey(issuer)) {
238238
try {
239-
final AuthorizationServiceConfiguration serviceConfig = mServiceConfiguration.get() != null ? mServiceConfiguration.get() : createAuthorizationServiceConfiguration(serviceConfiguration);
239+
final AuthorizationServiceConfiguration serviceConfig = mServiceConfigurations.containsKey(issuer)? mServiceConfigurations.get(issuer) : createAuthorizationServiceConfiguration(serviceConfiguration);
240240
authorizeWithConfiguration(
241241
serviceConfig,
242242
appAuthConfiguration,
@@ -264,7 +264,7 @@ public void onFetchConfigurationCompleted(
264264
return;
265265
}
266266

267-
mServiceConfiguration.set(fetchedConfiguration);
267+
mServiceConfigurations.put(issuer, fetchedConfiguration);
268268

269269
authorizeWithConfiguration(
270270
fetchedConfiguration,
@@ -315,9 +315,9 @@ public void refresh(
315315
this.additionalParametersMap = additionalParametersMap;
316316

317317
// when serviceConfiguration is provided, we don't need to hit up the OpenID well-known id endpoint
318-
if (serviceConfiguration != null || mServiceConfiguration.get() != null) {
318+
if (serviceConfiguration != null || mServiceConfigurations.containsKey(issuer)) {
319319
try {
320-
final AuthorizationServiceConfiguration serviceConfig = mServiceConfiguration.get() != null ? mServiceConfiguration.get() : createAuthorizationServiceConfiguration(serviceConfiguration);
320+
final AuthorizationServiceConfiguration serviceConfig = mServiceConfigurations.containsKey(issuer) ? mServiceConfigurations.get(issuer) : createAuthorizationServiceConfiguration(serviceConfiguration);
321321
refreshWithConfiguration(
322322
serviceConfig,
323323
appAuthConfiguration,
@@ -348,7 +348,7 @@ public void onFetchConfigurationCompleted(
348348
return;
349349
}
350350

351-
mServiceConfiguration.set(fetchedConfiguration);
351+
mServiceConfigurations.put(issuer, fetchedConfiguration);
352352

353353
refreshWithConfiguration(
354354
fetchedConfiguration,

0 commit comments

Comments
 (0)