"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.displayIosCredentials = displayIosCredentials;
exports.displayIosAppCredentials = displayIosAppCredentials;
exports.displayIosUserCredentials = displayIosUserCredentials;
exports.displayAndroidCredentials = displayAndroidCredentials;
exports.displayAndroidAppCredentials = displayAndroidAppCredentials;

function _chalk() {
  const data = _interopRequireDefault(require("chalk"));

  _chalk = function () {
    return data;
  };

  return data;
}

function _uniq() {
  const data = _interopRequireDefault(require("lodash/uniq"));

  _uniq = function () {
    return data;
  };

  return data;
}

function _isEmpty() {
  const data = _interopRequireDefault(require("lodash/isEmpty"));

  _isEmpty = function () {
    return data;
  };

  return data;
}

function _fsExtra() {
  const data = _interopRequireDefault(require("fs-extra"));

  _fsExtra = function () {
    return data;
  };

  return data;
}

function _get() {
  const data = _interopRequireDefault(require("lodash/get"));

  _get = function () {
    return data;
  };

  return data;
}

function _xdl() {
  const data = require("@expo/xdl");

  _xdl = function () {
    return data;
  };

  return data;
}

function _log() {
  const data = _interopRequireDefault(require("../../log"));

  _log = function () {
    return data;
  };

  return data;
}

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

async function displayIosCredentials(credentials) {
  (0, _log().default)(_chalk().default.bold('Available credentials for iOS apps\n'));
  (0, _log().default)(_chalk().default.bold('Application credentials\n'));

  for (const cred of credentials.appCredentials) {
    displayIosAppCredentials(cred);
    (0, _log().default)();
  }

  (0, _log().default)();
  (0, _log().default)(_chalk().default.bold('User credentials\n'));

  for (const cred of credentials.userCredentials) {
    displayIosUserCredentials(cred, credentials);
    (0, _log().default)();
  }

  (0, _log().default)();
  (0, _log().default)();
}

function displayIosAppCredentials(appCredentials) {
  (0, _log().default)(`  Experience: ${_chalk().default.bold(appCredentials.experienceName)}, bundle identifier: ${appCredentials.bundleIdentifier}`);

  if (appCredentials.credentials.provisioningProfile && appCredentials.credentials.provisioningProfileId) {
    (0, _log().default)(`    Provisioning profile (ID: ${_chalk().default.green(appCredentials.credentials.provisioningProfileId)})`);
  } else {
    (0, _log().default)('    Provisioning profile is missing. It will be generated durring the next build');
  }

  if (appCredentials.credentials.teamId || appCredentials.credentials.teamName) {
    (0, _log().default)(`    Apple Team ID: ${_chalk().default.green(appCredentials.credentials.teamId || '---------')},  Apple Team Name: ${_chalk().default.green(appCredentials.credentials.teamName || '---------')}`);
  }

  if (appCredentials.credentials.pushP12 && appCredentials.credentials.pushPassword) {
    (0, _log().default)(`    (deprecated) Push Certificate (Push ID: ${_chalk().default.green(appCredentials.credentials.pushId || '-----')})`);
  }
}

function displayIosUserCredentials(userCredentials, credentials) {
  if (userCredentials.type === 'push-key') {
    (0, _log().default)(`  Push Notifications Key - Key ID: ${_chalk().default.green(userCredentials.apnsKeyId)}`);
  } else if (userCredentials.type === 'dist-cert') {
    (0, _log().default)(`  Distribution Certificate - Certificate ID: ${_chalk().default.green(userCredentials.certId || '-----')}`);
  } else {
    _log().default.warn(`  Unknown key type ${(0, _get().default)(userCredentials, 'type')}`);
  }

  (0, _log().default)(`    Apple Team ID: ${_chalk().default.green(userCredentials.teamId || '---------')},  Apple Team Name: ${_chalk().default.green(userCredentials.teamName || '---------')}`);

  if (credentials) {
    const field = userCredentials.type === 'push-key' ? 'pushCredentialsId' : 'distCredentialsId';
    const usedByApps = (0, _uniq().default)(credentials.appCredentials.filter(c => c[field] === userCredentials.id).map(c => `${c.experienceName} (${c.bundleIdentifier})`)).join(',\n      ');
    const usedByAppsText = usedByApps ? `used by\n      ${usedByApps}` : 'not used by any apps';
    (0, _log().default)(`    ${_chalk().default.gray(usedByAppsText)}`);
  }
}

async function displayAndroidCredentials(credentialsList) {
  (0, _log().default)(_chalk().default.bold('Available Android credentials'));
  (0, _log().default)();

  for (const credentials of credentialsList) {
    await displayAndroidAppCredentials(credentials);
  }
}

async function displayAndroidAppCredentials(credentials) {
  const tmpFilename = `expo_tmp_keystore_file.jks`;

  try {
    if (await _fsExtra().default.pathExists(tmpFilename)) {
      await _fsExtra().default.unlink(tmpFilename);
    }

    (0, _log().default)(_chalk().default.green(credentials.experienceName));
    (0, _log().default)(_chalk().default.bold('  Upload Keystore hashes'));

    if (!(0, _isEmpty().default)(credentials.keystore)) {
      const storeBuf = Buffer.from((0, _get().default)(credentials, 'keystore.keystore'), 'base64');
      await _fsExtra().default.writeFile(tmpFilename, storeBuf);
      await _xdl().AndroidCredentials.logKeystoreHashes({
        keystorePath: tmpFilename,
        ...credentials.keystore
      }, '    ');
    } else {
      (0, _log().default)('    -----------------------');
    }

    (0, _log().default)(_chalk().default.bold('  Push Notifications credentials'));
    (0, _log().default)('    FCM Api Key: ', (0, _get().default)(credentials, 'pushCredentials.fcmApiKey', '---------------------'));
    (0, _log().default)('\n');
  } catch (error) {
    _log().default.error('  Failed to parse the keystore', error);

    (0, _log().default)('\n');
  } finally {
    if (await _fsExtra().default.pathExists(tmpFilename)) {
      await _fsExtra().default.unlink(tmpFilename);
    }
  }
}
//# sourceMappingURL=../../__sourcemaps__/credentials/actions/list.js.map