diff options
Diffstat (limited to 'apps/settings/src')
-rw-r--r-- | apps/settings/src/app-types.ts | 3 | ||||
-rw-r--r-- | apps/settings/src/components/AppList.vue | 6 | ||||
-rw-r--r-- | apps/settings/src/components/AppList/AppItem.vue | 40 | ||||
-rw-r--r-- | apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue | 40 | ||||
-rw-r--r-- | apps/settings/src/store/apps.js | 3 |
5 files changed, 49 insertions, 43 deletions
diff --git a/apps/settings/src/app-types.ts b/apps/settings/src/app-types.ts index 49f0d5a1709..fa181120420 100644 --- a/apps/settings/src/app-types.ts +++ b/apps/settings/src/app-types.ts @@ -44,9 +44,10 @@ export interface IAppstoreApp { app_api: boolean active: boolean internal: boolean - removable: boolean installed: boolean + canDownload: boolean canInstall: boolean + canUpdate: boolean canUnInstall: boolean isCompatible: boolean needsDownload: boolean diff --git a/apps/settings/src/components/AppList.vue b/apps/settings/src/components/AppList.vue index cfc778fe409..2016ad1e89a 100644 --- a/apps/settings/src/components/AppList.vue +++ b/apps/settings/src/components/AppList.vue @@ -17,6 +17,7 @@ <NcButton v-if="showUpdateAll" id="app-list-update-all" type="primary" + :disabled="!canUpdateAny" @click="updateAll"> {{ n('settings', 'Update', 'Update all', counter) }} </NcButton> @@ -194,6 +195,9 @@ export default { showUpdateAll() { return this.hasPendingUpdate && this.useListView }, + canUpdateAny() { + return this.apps.filter(app => app.update && app.canUpdate).length > 0 + }, apps() { // Exclude ExApps from the list if AppAPI is disabled const exApps = this.$store.getters.isAppApiEnabled ? this.appApiStore.getAllApps : [] @@ -324,7 +328,7 @@ export default { updateAll() { const limit = pLimit(1) this.apps - .filter(app => app.update) + .filter(app => app.update && app.canUpdate) .map((app) => limit(() => { this.update(app.id) })) diff --git a/apps/settings/src/components/AppList/AppItem.vue b/apps/settings/src/components/AppList/AppItem.vue index d0f39f3c74a..8b0b5a2a2a5 100644 --- a/apps/settings/src/components/AppList/AppItem.vue +++ b/apps/settings/src/components/AppList/AppItem.vue @@ -78,15 +78,15 @@ <div v-if="isLoading || isInitializing" class="icon icon-loading-small" /> <NcButton v-if="app.update" type="primary" - :disabled="installing || isLoading || !defaultDeployDaemonAccessible || isManualInstall" + :disabled="installing || isLoading || !defaultDeployDaemonAccessible || isManualInstall || !app.canUpdate" :title="updateButtonText" @click.stop="update(app.id)"> {{ t('settings', 'Update to {update}', {update:app.update}) }} </NcButton> - <NcButton v-if="app.canUnInstall" + <NcButton v-if="app.installed" class="uninstall" type="tertiary" - :disabled="installing || isLoading" + :disabled="installing || isLoading || !app.canUnInstall" @click.stop="remove(app.id)"> {{ t('settings', 'Remove') }} </NcButton> @@ -95,22 +95,24 @@ @click.stop="disable(app.id)"> {{ disableButtonText }} </NcButton> - <NcButton v-if="!app.active && (app.canInstall || app.isCompatible)" - :title="enableButtonTooltip" - :aria-label="enableButtonTooltip" - type="primary" - :disabled="!app.canInstall || installing || isLoading || !defaultDeployDaemonAccessible || isInitializing || isDeploying" - @click.stop="enable(app.id)"> - {{ enableButtonText }} - </NcButton> - <NcButton v-else-if="!app.active" - :title="forceEnableButtonTooltip" - :aria-label="forceEnableButtonTooltip" - type="secondary" - :disabled="installing || isLoading || !defaultDeployDaemonAccessible" - @click.stop="forceEnable(app.id)"> - {{ forceEnableButtonText }} - </NcButton> + <div v-if="!app.active && (!app.needsDownload || app.canDownload)"> + <NcButton v-if="app.canInstall || app.isCompatible" + :title="enableButtonTooltip" + :aria-label="enableButtonTooltip" + type="primary" + :disabled="installing || isLoading || !defaultDeployDaemonAccessible || isInitializing || isDeploying" + @click.stop="enable(app.id)"> + {{ enableButtonText }} + </NcButton> + <NcButton v-else + :title="forceEnableButtonTooltip" + :aria-label="forceEnableButtonTooltip" + type="secondary" + :disabled="installing || isLoading || !defaultDeployDaemonAccessible" + @click.stop="forceEnable(app.id)"> + {{ forceEnableButtonText }} + </NcButton> + </div> </component> </component> </template> diff --git a/apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue b/apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue index 3aa42f1d15a..3b37d401219 100644 --- a/apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue +++ b/apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue @@ -47,13 +47,13 @@ class="update primary" type="button" :value="t('settings', 'Update to {version}', { version: app.update })" - :disabled="installing || isLoading || isManualInstall" + :disabled="installing || isLoading || isManualInstall || !app.canUpdate" @click="update(app.id)"> - <input v-if="app.canUnInstall" + <input v-if="app.installed" class="uninstall" type="button" :value="t('settings', 'Remove')" - :disabled="installing || isLoading" + :disabled="installing || isLoading || !app.canUnInstall" @click="remove(app.id, removeData)"> <input v-if="app.active" class="enable" @@ -61,22 +61,24 @@ :value="disableButtonText" :disabled="installing || isLoading || isInitializing || isDeploying" @click="disable(app.id)"> - <input v-if="!app.active && (app.canInstall || app.isCompatible)" - :title="enableButtonTooltip" - :aria-label="enableButtonTooltip" - class="enable primary" - type="button" - :value="enableButtonText" - :disabled="!app.canInstall || installing || isLoading || !defaultDeployDaemonAccessible || isInitializing || isDeploying" - @click="enable(app.id)"> - <input v-else-if="!app.active && !app.canInstall" - :title="forceEnableButtonTooltip" - :aria-label="forceEnableButtonTooltip" - class="enable force" - type="button" - :value="forceEnableButtonText" - :disabled="installing || isLoading" - @click="forceEnable(app.id)"> + <div v-if="!app.active && (!app.needsDownload || app.canDownload)"> + <input v-if="app.canInstall || app.isCompatible" + :title="enableButtonTooltip" + :aria-label="enableButtonTooltip" + class="enable primary" + type="button" + :value="enableButtonText" + :disabled="installing || isLoading || !defaultDeployDaemonAccessible || isInitializing || isDeploying" + @click="enable(app.id)"> + <input v-else + :title="forceEnableButtonTooltip" + :aria-label="forceEnableButtonTooltip" + class="enable force" + type="button" + :value="forceEnableButtonText" + :disabled="installing || isLoading" + @click="forceEnable(app.id)"> + </div> <NcButton v-if="app?.app_api && (app.canInstall || app.isCompatible)" :aria-label="t('settings', 'Advanced deploy options')" type="secondary" diff --git a/apps/settings/src/store/apps.js b/apps/settings/src/store/apps.js index c58651a3cf5..eaeb11d8c98 100644 --- a/apps/settings/src/store/apps.js +++ b/apps/settings/src/store/apps.js @@ -87,9 +87,6 @@ const mutations = { const app = state.apps.find(app => app.id === appId) app.active = false app.groups = [] - if (app.removable) { - app.canUnInstall = true - } if (app.id === 'app_api') { state.appApiEnabled = false } |