aboutsummaryrefslogtreecommitdiff
path: root/src/components/settings_modal/admin_tabs/frontends_tab.js
diff options
context:
space:
mode:
authorHJ <30-hj@users.noreply.git.pleroma.social>2023-11-27 13:48:43 +0000
committerHJ <30-hj@users.noreply.git.pleroma.social>2023-11-27 13:48:43 +0000
commit83acbf953a4f50a017e3e857ecbd0b008f0b3be0 (patch)
tree127a0bb3482fce953c2e53eddb99f7014df0ae0c /src/components/settings_modal/admin_tabs/frontends_tab.js
parentb6accf9e7f7ef5f23cbf8bac57e54cefa0db4620 (diff)
parent6c78b59c99e91c4d7b5002725863706d97a7bc29 (diff)
Merge branch 'release/2.6.x' into 'master'
merge 2.6.x to master since 2.6.1 release See merge request pleroma/pleroma-fe!1874
Diffstat (limited to 'src/components/settings_modal/admin_tabs/frontends_tab.js')
-rw-r--r--src/components/settings_modal/admin_tabs/frontends_tab.js51
1 files changed, 48 insertions, 3 deletions
diff --git a/src/components/settings_modal/admin_tabs/frontends_tab.js b/src/components/settings_modal/admin_tabs/frontends_tab.js
index a2c27c2a..8163af59 100644
--- a/src/components/settings_modal/admin_tabs/frontends_tab.js
+++ b/src/components/settings_modal/admin_tabs/frontends_tab.js
@@ -4,6 +4,7 @@ import IntegerSetting from '../helpers/integer_setting.vue'
import StringSetting from '../helpers/string_setting.vue'
import GroupSetting from '../helpers/group_setting.vue'
import Popover from 'src/components/popover/popover.vue'
+import PanelLoading from 'src/components/panel_loading/panel_loading.vue'
import SharedComputedObject from '../helpers/shared_computed_object.js'
import { library } from '@fortawesome/fontawesome-svg-core'
@@ -22,12 +23,18 @@ const FrontendsTab = {
defaultSource: 'admin'
}
},
+ data () {
+ return {
+ working: false
+ }
+ },
components: {
BooleanSetting,
ChoiceSetting,
IntegerSetting,
StringSetting,
GroupSetting,
+ PanelLoading,
Popover
},
created () {
@@ -42,18 +49,56 @@ const FrontendsTab = {
...SharedComputedObject()
},
methods: {
+ canInstall (frontend) {
+ const fe = this.frontends.find(f => f.name === frontend.name)
+ if (!fe) return false
+ return fe.refs.includes(frontend.ref)
+ },
+ getSuggestedRef (frontend) {
+ const defaultFe = this.adminDraft[':pleroma'][':frontends'][':primary']
+ if (defaultFe?.name === frontend.name && this.canInstall(defaultFe)) {
+ return defaultFe.ref
+ } else {
+ return frontend.refs[0]
+ }
+ },
update (frontend, suggestRef) {
- const ref = suggestRef || frontend.refs[0]
+ const ref = suggestRef || this.getSuggestedRef(frontend)
const { name } = frontend
const payload = { name, ref }
+ this.working = true
this.$store.state.api.backendInteractor.installFrontend({ payload })
- .then((externalUser) => {
+ .finally(() => {
+ this.working = false
+ })
+ .then(async (response) => {
this.$store.dispatch('loadFrontendsStuff')
+ if (response.error) {
+ const reason = await response.error.json()
+ this.$store.dispatch('pushGlobalNotice', {
+ level: 'error',
+ messageKey: 'admin_dash.frontend.failure_installing_frontend',
+ messageArgs: {
+ version: name + '/' + ref,
+ reason: reason.error
+ },
+ timeout: 5000
+ })
+ } else {
+ this.$store.dispatch('pushGlobalNotice', {
+ level: 'success',
+ messageKey: 'admin_dash.frontend.success_installing_frontend',
+ messageArgs: {
+ version: name + '/' + ref
+ },
+ timeout: 2000
+ })
+ }
})
},
setDefault (frontend, suggestRef) {
- const ref = suggestRef || frontend.refs[0]
+ const ref = suggestRef || this.getSuggestedRef(frontend)
const { name } = frontend
this.$store.commit('updateAdminDraft', { path: [':pleroma', ':frontends', ':primary'], value: { name, ref } })