Merge pull request #49216 from nextcloud/backport/49209/stable30

[stable30] fix(app-store): Add back legacy store API used for update and removal
This commit is contained in:
Ferdinand Thiessen 2024-12-06 11:28:19 +01:00 committed by GitHub
commit e517e7d5fa
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 36 additions and 28 deletions

View file

@ -140,10 +140,12 @@
<script>
import { subscribe, unsubscribe } from '@nextcloud/event-bus'
import AppItem from './AppList/AppItem.vue'
import pLimit from 'p-limit'
import NcButton from '@nextcloud/vue/dist/Components/NcButton.js'
import AppItem from './AppList/AppItem.vue'
import AppManagement from '../mixins/AppManagement'
import { useAppApiStore } from '../store/app-api-store'
import { useAppsStore } from '../store/apps-store'
export default {
name: 'AppList',
@ -152,6 +154,8 @@ export default {
NcButton,
},
mixins: [AppManagement],
props: {
category: {
type: String,
@ -161,8 +165,11 @@ export default {
setup() {
const appApiStore = useAppApiStore()
const store = useAppsStore()
return {
appApiStore,
store,
}
},

View file

@ -4,9 +4,10 @@
*/
import Vue from 'vue'
import VTooltip from 'v-tooltip'
import Vuex from 'vuex'
import VTooltipPlugin from 'v-tooltip'
import { sync } from 'vuex-router-sync'
import { translate as t, translatePlural as n } from '@nextcloud/l10n'
import { t, n } from '@nextcloud/l10n'
import SettingsApp from './views/SettingsApp.vue'
import router from './router/index.ts'
@ -14,11 +15,6 @@ import { useStore } from './store/index.js'
import { getCSPNonce } from '@nextcloud/auth'
import { PiniaVuePlugin, createPinia } from 'pinia'
Vue.use(VTooltip, { defaultHtml: false })
const store = useStore()
sync(store, router)
// CSP config for webpack dynamic chunk loading
// eslint-disable-next-line camelcase
__webpack_nonce__ = getCSPNonce()
@ -26,9 +22,16 @@ __webpack_nonce__ = getCSPNonce()
// bind to window
Vue.prototype.t = t
Vue.prototype.n = n
Vue.use(PiniaVuePlugin)
// Setup Vue plugins
Vue.use(PiniaVuePlugin)
Vue.use(VTooltipPlugin, { defaultHtml: false })
Vue.use(Vuex)
// Setup stores
const pinia = createPinia()
const store = useStore()
sync(store, router)
export default new Vue({
router,

View file

@ -210,15 +210,16 @@ export default {
.catch((error) => { showError(error) })
}
},
remove(appId, removeData = false) {
if (this.app?.app_api) {
this.appApiStore.uninstallApp(appId, removeData)
.then(() => { rebuildNavigation() })
.catch((error) => { showError(error) })
} else {
this.$store.dispatch('appApiApps/uninstallApp', { appId, removeData })
.then((response) => { rebuildNavigation() })
.catch((error) => { showError(error) })
async remove(appId, removeData = false) {
try {
if (this.app?.app_api) {
await this.appApiStore.uninstallApp(appId, removeData)
} else {
await this.$store.dispatch('uninstallApp', { appId, removeData })
}
await rebuildNavigation()
} catch (error) {
showError(error)
}
},
install(appId) {

View file

@ -3,16 +3,13 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import Vue from 'vue'
import Vuex, { Store } from 'vuex'
import { Store } from 'vuex'
import users from './users.js'
import apps from './apps.js'
import settings from './users-settings.js'
import oc from './oc.js'
import { showError } from '@nextcloud/dialogs'
Vue.use(Vuex)
const debug = process.env.NODE_ENV !== 'production'
const mutations = {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long