Restart application on button click

This commit is contained in:
Angelina Filippova 2020-02-18 23:08:07 +03:00
parent 610349f24b
commit 7f2d61bc15
3 changed files with 28 additions and 5 deletions

View file

@ -40,4 +40,13 @@ export async function removeSettings(configs, authHost, token) {
}) })
} }
export async function restartApp(authHost, token) {
return await request({
baseURL: baseName(authHost),
url: `/api/pleroma/admin/restart`,
method: 'get',
headers: authHeaders(token)
})
}
const authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {} const authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}

View file

@ -1,4 +1,4 @@
import { fetchDescription, fetchSettings, removeSettings, updateSettings } from '@/api/settings' import { fetchDescription, fetchSettings, removeSettings, restartApp, updateSettings } from '@/api/settings'
import { checkPartialUpdate, parseNonTuples, parseTuples, valueHasTuples, wrapUpdatedSettings } from './normalizers' import { checkPartialUpdate, parseNonTuples, parseTuples, valueHasTuples, wrapUpdatedSettings } from './normalizers'
import _ from 'lodash' import _ from 'lodash'
@ -9,10 +9,9 @@ const settings = {
db: {}, db: {},
description: [], description: [],
loading: true, loading: true,
needReboot: true, needReboot: false,
settings: {}, settings: {},
updatedSettings: {} updatedSettings: {}
}, },
mutations: { mutations: {
CLEAR_UPDATED_SETTINGS: (state) => { CLEAR_UPDATED_SETTINGS: (state) => {
@ -52,6 +51,9 @@ const settings = {
state.settings = newSettings state.settings = newSettings
state.db = newDbSettings state.db = newDbSettings
}, },
TOGGLE_REBOOT: (state, needReboot) => {
state.needReboot = needReboot || false
},
TOGGLE_TABS: (state, status) => { TOGGLE_TABS: (state, status) => {
state.configDisabled = status state.configDisabled = status
}, },
@ -76,6 +78,7 @@ const settings = {
const description = await fetchDescription(getters.authHost, getters.token) const description = await fetchDescription(getters.authHost, getters.token)
commit('SET_DESCRIPTION', description.data) commit('SET_DESCRIPTION', description.data)
commit('SET_SETTINGS', response.data.configs) commit('SET_SETTINGS', response.data.configs)
commit('TOGGLE_REBOOT', response.data.need_reboot)
} catch (_e) { } catch (_e) {
commit('TOGGLE_TABS', true) commit('TOGGLE_TABS', true)
commit('SET_ACTIVE_TAB', 'relays') commit('SET_ACTIVE_TAB', 'relays')
@ -90,8 +93,13 @@ const settings = {
const response = await fetchSettings(getters.authHost, getters.token) const response = await fetchSettings(getters.authHost, getters.token)
const { group, key, subkeys } = configs[0] const { group, key, subkeys } = configs[0]
commit('SET_SETTINGS', response.data.configs) commit('SET_SETTINGS', response.data.configs)
commit('TOGGLE_REBOOT', response.data.need_reboot)
commit('REMOVE_SETTING_FROM_UPDATED', { group, key, subkeys: subkeys || [] }) commit('REMOVE_SETTING_FROM_UPDATED', { group, key, subkeys: subkeys || [] })
}, },
async RestartApplication({ commit, getters }) {
await restartApp(getters.authHost, getters.token)
commit('TOGGLE_REBOOT', false)
},
SetActiveTab({ commit }, tab) { SetActiveTab({ commit }, tab) {
commit('SET_ACTIVE_TAB', tab) commit('SET_ACTIVE_TAB', tab)
}, },
@ -104,6 +112,7 @@ const settings = {
await updateSettings(configs, getters.authHost, getters.token) await updateSettings(configs, getters.authHost, getters.token)
const response = await fetchSettings(getters.authHost, getters.token) const response = await fetchSettings(getters.authHost, getters.token)
commit('SET_SETTINGS', response.data.configs) commit('SET_SETTINGS', response.data.configs)
commit('TOGGLE_REBOOT', response.data.need_reboot)
commit('CLEAR_UPDATED_SETTINGS') commit('CLEAR_UPDATED_SETTINGS')
}, },
UpdateSettings({ commit }, { group, key, input, value, type }) { UpdateSettings({ commit }, { group, key, input, value, type }) {

View file

@ -4,7 +4,7 @@
<div class="settings-header-container"> <div class="settings-header-container">
<h1 class="settings-header">{{ $t('settings.settings') }}</h1> <h1 class="settings-header">{{ $t('settings.settings') }}</h1>
<div> <div>
<el-button v-if="needReboot" class="settings-reboot-button"> <el-button v-if="needReboot" class="settings-reboot-button" @click="restartApp">
<span> <span>
<i class="el-icon-refresh"/> <i class="el-icon-refresh"/>
{{ $t('settings.instanceReboot') }} {{ $t('settings.instanceReboot') }}
@ -89,7 +89,7 @@
<div v-if="isMobile || isTablet"> <div v-if="isMobile || isTablet">
<div class="settings-header-container"> <div class="settings-header-container">
<h1 class="settings-header">{{ $t('settings.settings') }}</h1> <h1 class="settings-header">{{ $t('settings.settings') }}</h1>
<el-button v-if="needReboot" class="settings-reboot-button"> <el-button v-if="needReboot" class="settings-reboot-button" @click="restartApp">
<span> <span>
<i class="el-icon-refresh"/> <i class="el-icon-refresh"/>
{{ $t('settings.instanceReboot') }} {{ $t('settings.instanceReboot') }}
@ -242,6 +242,11 @@ export default {
}, },
mounted: function() { mounted: function() {
this.$store.dispatch('FetchSettings') this.$store.dispatch('FetchSettings')
},
methods: {
restartApp() {
this.$store.dispatch('RestartApplication')
}
} }
} }
</script> </script>