aboutsummaryrefslogtreecommitdiffstats
path: root/apps/settings/src
diff options
context:
space:
mode:
Diffstat (limited to 'apps/settings/src')
-rw-r--r--apps/settings/src/app-types.ts3
-rw-r--r--apps/settings/src/components/AppList.vue6
-rw-r--r--apps/settings/src/components/AppList/AppItem.vue40
-rw-r--r--apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue40
-rw-r--r--apps/settings/src/store/apps.js3
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
}