async function getYouTrackServices()

in src/app/components/service-resource.js [4:30]


async function getYouTrackServices(fetchHub, optionalMinYouTrackVersion) {
  const data = await fetchHub(`api/rest/services?fields=${SERVICE_FIELDS}&query=applicationName:YouTrack`);
  return (data && data.services || []).filter(
    service => !!service.homeUrl && (!optionalMinYouTrackVersion ||
      satisfyingVersion(service.version, optionalMinYouTrackVersion))
  );

  // eslint-disable-next-line complexity
  function satisfyingVersion(currentVersion, minVersion) {
    const currentVersionTokens = currentVersion.split('.').map(Number);
    const requestedVersionTokens = minVersion.
      split('.').map(Number);
    for (let i = 0; i < requestedVersionTokens.length; ++i) {
      if ((currentVersionTokens[i] > requestedVersionTokens[i]) ||
        (!isNaN(currentVersionTokens[i]) && isNaN(requestedVersionTokens[i]))
      ) {
        return true;
      }
      if (requestedVersionTokens[i] > currentVersionTokens[i] ||
        (isNaN(currentVersionTokens[i]) && !isNaN(requestedVersionTokens[i]))
      ) {
        return false;
      }
    }
    return true;
  }
}