content: package com.mattermost.helpers;
  
  import androidx.annotation.Nullable;
  
  import com.facebook.react.bridge.Arguments;
  import com.facebook.react.bridge.ReactApplicationContext;
  import com.facebook.react.bridge.WritableMap;
  import com.oblador.keychain.KeychainModule;
  
  
  public class Credentials {
      public static void getCredentialsForServer(ReactApplicationContext context, String serverUrl, ResolvePromise promise) {
          final KeychainModule keychainModule = new KeychainModule(context);
  
          final WritableMap options = Arguments.createMap();
          // KeyChain module fails if `authenticationPrompt` is not set
          final WritableMap authPrompt = Arguments.createMap();
          authPrompt.putString("title", "Authenticate to retrieve secret");
          authPrompt.putString("cancel", "Cancel");
          options.putMap("authenticationPrompt", authPrompt);
          options.putString("service", serverUrl);
  
          keychainModule.getGenericPasswordForOptions(options, promise);
      }
  
      public static String getCredentialsForServerSync(ReactApplicationContext context, String serverUrl) {
          final String[] token = new String[1];
          Credentials.getCredentialsForServer(context, serverUrl, new ResolvePromise() {
              @Override
              public void resolve(@Nullable Object value) {
                  WritableMap map = (WritableMap) value;
                  if (map != null) {
                      token[0] = map.getString("password");
                      String service = map.getString("service");
                      assert service != null;
                      if (service.isEmpty()) {
                          String[] credentials = token[0].split(", *");
                          if (credentials.length == 2) {
                              token[0] = credentials[0];
                          }
                      }
                  }
              }
          });
  
          return token[0];
      }
  }
  