diff --git a/src/boot/after_store.js b/src/boot/after_store.js index a8e2bf35..dfaf4d68 100644 --- a/src/boot/after_store.js +++ b/src/boot/after_store.js @@ -176,6 +176,12 @@ const afterStoreSetup = ({ store, i18n }) => { const suggestions = metadata.suggestions store.dispatch('setInstanceOption', { name: 'suggestionsEnabled', value: suggestions.enabled }) store.dispatch('setInstanceOption', { name: 'suggestionsWeb', value: suggestions.web }) + + const software = data.software + store.dispatch('setInstanceOption', { name: 'backendVersion', value: software.version }) + + const frontendVersion = window.___pleromafe_commit_hash + store.dispatch('setInstanceOption', { name: 'frontendVersion', value: frontendVersion }) }) } diff --git a/src/components/settings/settings.js b/src/components/settings/settings.js index 979457a5..d208ee5a 100644 --- a/src/components/settings/settings.js +++ b/src/components/settings/settings.js @@ -1,8 +1,10 @@ /* eslint-env browser */ +import { filter, trim } from 'lodash' + import TabSwitcher from '../tab_switcher/tab_switcher.js' import StyleSwitcher from '../style_switcher/style_switcher.vue' import InterfaceLanguageSwitcher from '../interface_language_switcher/interface_language_switcher.vue' -import { filter, trim } from 'lodash' +import { parseBackendVersionString, parseFrontendVersionString } from '../../services/version/version.service' const settings = { data () { @@ -78,7 +80,10 @@ const settings = { // Future spec, still not supported in Nightly 63 as of 08/2018 Object.getOwnPropertyDescriptor(HTMLMediaElement.prototype, 'audioTracks'), playVideosInModal: user.playVideosInModal, - useContainFit: user.useContainFit + useContainFit: user.useContainFit, + + backendVersion: instance.backendVersion, + frontendVersion: instance.frontendVersion } }, components: { @@ -98,6 +103,14 @@ const settings = { }, instanceSpecificPanelPresent () { return this.$store.state.instance.showInstanceSpecificPanel } }, + methods: { + parseBackendVersion (versionString) { + return parseBackendVersionString(versionString) + }, + parseFrontendVersion (versionString) { + return parseFrontendVersionString(versionString) + } + }, watch: { hideAttachmentsLocal (value) { this.$store.dispatch('setOption', { name: 'hideAttachments', value }) diff --git a/src/components/settings/settings.vue b/src/components/settings/settings.vue index d2346747..3ca7bdc0 100644 --- a/src/components/settings/settings.vue +++ b/src/components/settings/settings.vue @@ -261,6 +261,28 @@ +
+
+ +
+
diff --git a/src/i18n/en.json b/src/i18n/en.json index 01fe2fba..1fe201a4 100644 --- a/src/i18n/en.json +++ b/src/i18n/en.json @@ -347,6 +347,11 @@ "checkbox": "I have skimmed over terms and conditions", "link": "a nice lil' link" } + }, + "version": { + "title": "Version", + "backend_version": "Backend Version", + "frontend_version": "Frontend Version" } }, "timeline": { diff --git a/src/modules/instance.js b/src/modules/instance.js index 24c52f9c..155aa2eb 100644 --- a/src/modules/instance.js +++ b/src/modules/instance.js @@ -48,7 +48,11 @@ const defaultState = { // Html stuff instanceSpecificPanelContent: '', - tos: '' + tos: '', + + // Version Information + backendVersion: '', + frontendVersion: '' } const instance = { diff --git a/src/services/version/version.service.js b/src/services/version/version.service.js new file mode 100644 index 00000000..6c5036c1 --- /dev/null +++ b/src/services/version/version.service.js @@ -0,0 +1,10 @@ + +export const parseBackendVersionString = versionString => { + const regex = /(-g)(\w+)$/i + const replacer = '$1$2' + return versionString.replace(regex, replacer) +} + +export const parseFrontendVersionString = versionString => { + return `#${versionString}` +}