All files / middlewares validateVersion.js

100% Statements 14/14
100% Branches 21/21
100% Functions 1/1
100% Lines 14/14

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69        1x   7x   7x       7x 7x       7x 4x 1x                   3x       1x                   2x 1x               3x 1x                              
import APIError from '../helpers/error';
import { t } from '../helpers/i18n';
import SettingsInformation from '../source/settings/information';
 
const appVersionRegex = /\./g;
async function validAppVersion(req) {
  const { appVersion = '', isMobileApp } = req.body;
  const { latestApkVersion = '', urgentApkUpdate = 1 } =
    await SettingsInformation.getSettingCodeList([
      'latestApkVersion',
      'urgentApkUpdate',
    ]);
  const appVersionInt = parseInt(appVersion.replace(appVersionRegex, ''), 10);
  const latestApkVersionInt = parseInt(
    latestApkVersion.replace(appVersionRegex, ''),
    10
  );
  if (isMobileApp && appVersionInt && latestApkVersionInt) {
    if (Number(urgentApkUpdate) && appVersionInt < latestApkVersionInt) {
      throw new APIError(
        'COLLECTOR_VERSION_WARNING',
        t(
          'BEE2332',
          {
            0: appVersion,
            1: latestApkVersion,
          } /* Versão atual %{0}. Disponível para atualização %{1}. */
        )
      );
    } else if (
      Number(`${appVersionInt}`.slice(0, 2)) <
      Number(`${latestApkVersionInt}`.slice(0, 2)) - 1
    ) {
      throw new APIError(
        'COLLECTOR_VERSION_WARNING',
        t(
          'BEE2332',
          {
            0: appVersion,
            1: latestApkVersion,
          } /* Versão atual %{0}. Disponível para atualização %{1}. */
        )
      );
    } else if (appVersionInt < latestApkVersionInt) {
      req.newVersionNotice = t(
        'BEE2332',
        {
          0: appVersion,
          1: latestApkVersion,
        } /* Versão atual %{0}. Disponível para atualização %{1}. */
      );
    }
  } else if (isMobileApp && latestApkVersion && !appVersion) {
    throw new APIError(
      'COLLECTOR_VERSION_WARNING',
      t(
        'BEE2332',
        {
          0: appVersion,
          1: latestApkVersion,
        } /* Versão atual %{0}. Disponível para atualização %{1}. */
      )
    );
  }
}
export default {
  validAppVersion,
};