diff --git a/client/views/admin/apps/AppInstallPage.js b/client/views/admin/apps/AppInstallPage.js index b0c2366676579..bdfc1208c3ab7 100644 --- a/client/views/admin/apps/AppInstallPage.js +++ b/client/views/admin/apps/AppInstallPage.js @@ -82,13 +82,17 @@ function AppInstallPage() { permissions = await getPermissionsFromZippedApp(appFile); } - setModal( - sendFile(permissions, appFile)} - />, - ); + if (!permissions || permissions.length === 0) { + await sendFile(permissions, appFile); + } else { + setModal( + sendFile(permissions, appFile)} + />, + ); + } } catch (error) { handleInstallError(error); } finally { diff --git a/client/views/admin/apps/AppStatus.js b/client/views/admin/apps/AppStatus.js index d7470e7a952d0..0dc09ac1ee6cc 100644 --- a/client/views/admin/apps/AppStatus.js +++ b/client/views/admin/apps/AppStatus.js @@ -3,7 +3,7 @@ import { useSafely } from '@rocket.chat/fuselage-hooks'; import React, { useCallback, useState, memo } from 'react'; import { useTranslation } from '../../../contexts/TranslationContext'; -import { appButtonProps, appStatusSpanProps, handleAPIError, warnStatusChange } from './helpers'; +import { appButtonProps, appStatusSpanProps, handleAPIError, warnStatusChange, handleInstallError } from './helpers'; import { Apps } from '../../../../app/apps/client/orchestrator'; import IframeModal from './IframeModal'; import CloudLoginModal from './CloudLoginModal'; @@ -61,8 +61,12 @@ const AppStatus = ({ app, showStatus = true, ...props }) => { setPurchased(true); } - if (!Array.isArray(app.permissions) || !app.permissions.length) { - return confirmAction(); + if (!app.permissions || app.permissions.length === 0) { + return confirmAction(app.permissions); + } + + if (!Array.isArray(app.permissions)) { + handleInstallError(new Error('The "permissions" property from the app manifest is invalid')); } return setModal(); diff --git a/client/views/admin/apps/lib/getPermissionsFromZippedApp.js b/client/views/admin/apps/lib/getPermissionsFromZippedApp.js index f5937d177e90c..58cecae6848b7 100644 --- a/client/views/admin/apps/lib/getPermissionsFromZippedApp.js +++ b/client/views/admin/apps/lib/getPermissionsFromZippedApp.js @@ -27,7 +27,7 @@ function getAppManifest(unzippedAppBuffer) { function getPermissionsFromManifest(manifest) { if (!manifest.permissions) { - return []; + return undefined; } if (!Array.isArray(manifest.permissions)) {