From 844a6226f114fe4b825f906410b0b11cd041f861 Mon Sep 17 00:00:00 2001 From: Haelwenn <contact+git.pleroma.social@hacktivis.me> Date: Fri, 2 Sep 2022 16:32:56 +0000 Subject: [PATCH] Merge branch 'bugfix/settings-parser' into 'develop' Fix bug in settings parser See merge request pleroma/admin-fe!283 --- CHANGELOG.md | 1 + package.json | 4 ++-- src/store/modules/normalizers.js | 10 +++++----- src/views/layout/components/Sidebar/index.vue | 7 ++++++- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ddc93fd4..9defc1e3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Fixed - Crash when parsing tuples in Settings +- Broken parsing of Settings ## [2.4.0] - 2021-08-01 diff --git a/package.json b/package.json index 961e61f9..eb4a0bc7 100644 --- a/package.json +++ b/package.json @@ -29,13 +29,13 @@ ], "repository": { "type": "git", - "url": "git+https://github.com/PanJiaChen/vue-element-admin.git" + "url": "git+https://git.pleroma.social/pleroma/admin-fe.git" }, "resolutions": { "prosemirror-model": "1.9.1" }, "bugs": { - "url": "https://github.com/PanJiaChen/vue-element-admin/issues" + "url": "https://git.pleroma.social/pleroma/admin-fe/-/issues" }, "dependencies": { "@babel/runtime": "7.18.9", diff --git a/src/store/modules/normalizers.js b/src/store/modules/normalizers.js index e93ed1a5..dbea1447 100644 --- a/src/store/modules/normalizers.js +++ b/src/store/modules/normalizers.js @@ -28,7 +28,7 @@ const getCurrentValue = (type, value, path) => { } const getValueWithoutKey = (key, [type, value]) => { - if (prependWithСolon(type, value)) { + if (prependWithColon(type, value)) { return `:${value}` } else if (key === ':backends') { const index = value.findIndex(el => el === ':ex_syslogger') @@ -117,8 +117,8 @@ export const parseTuples = (tuples, key) => { accum[item.tuple[0]] = parseNonTuples(item.tuple[0], item.tuple[1]) } else if (item.tuple[0] === ':ip_whitelist') { accum[item.tuple[0]] = item.tuple[1].map(ip => typeof ip === 'string' ? ip : ip.tuple.join('.')) - } else if (Array.isArray(item.tuple[1]) && - (typeof item.tuple[1][0] === 'object' && !Array.isArray(item.tuple[1][0])) && item.tuple[1][0]['tuple']) { + } else if (Array.isArray(item.tuple[1]) && (item.tuple[1][0] !== null && + typeof item.tuple[1][0] === 'object' && !Array.isArray(item.tuple[1][0])) && item.tuple[1][0]['tuple']) { accum[item.tuple[0]] = parseTuples(item.tuple[1], item.tuple[0]) } else if (Array.isArray(item.tuple[1])) { accum[item.tuple[0]] = item.tuple[1] @@ -171,7 +171,7 @@ const parseStringOrTupleValue = (key, value) => { } } -const prependWithСolon = (type, value) => { +const prependWithColon = (type, value) => { return (type === 'atom' && value.length > 0) || (Array.isArray(type) && type.includes('boolean') && type.includes('atom') && typeof value === 'string') } @@ -260,7 +260,7 @@ const wrapValues = (settings, currentState) => { )) ) { return { 'tuple': [setting, wrapValues(value, currentState)] } - } else if (prependWithСolon(type, value)) { + } else if (prependWithColon(type, value)) { return { 'tuple': [setting, `:${value}`] } } else if (type.includes('tuple') && (type.includes('string') || type.includes('atom') || type.includes('boolean'))) { diff --git a/src/views/layout/components/Sidebar/index.vue b/src/views/layout/components/Sidebar/index.vue index f57ebf17..ed8bd849 100644 --- a/src/views/layout/components/Sidebar/index.vue +++ b/src/views/layout/components/Sidebar/index.vue @@ -55,7 +55,12 @@ export default { }, async handleOpen($event) { if ($event === '/settings') { - if (!localStorage.getItem('settingsTabs')) { + let settingsTabs = localStorage.getItem('settingsTabs') + if (settingsTabs === '[]') { + localStorage.removeItem('settingsTabs') + settingsTabs = null + } + if (!settingsTabs) { await this.$store.dispatch('FetchSettings') const menuItems = this.tabs localStorage.setItem('settingsTabs', JSON.stringify(menuItems)) -- GitLab