From 62845164ddfe18ce120a6ff1e3a8ff39ed5916ec Mon Sep 17 00:00:00 2001 From: trostboot Date: Mon, 11 Sep 2023 18:02:01 +0200 Subject: [PATCH 1/4] Sort list of external players --- .../external-player-settings.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/renderer/components/external-player-settings/external-player-settings.js b/src/renderer/components/external-player-settings/external-player-settings.js index c2fc0647d038f..7329e490fa36a 100644 --- a/src/renderer/components/external-player-settings/external-player-settings.js +++ b/src/renderer/components/external-player-settings/external-player-settings.js @@ -21,9 +21,20 @@ export default defineComponent({ computed: { externalPlayerNames: function () { const fallbackNames = this.$store.getters.getExternalPlayerNames - const nameTranslationKeys = this.$store.getters.getExternalPlayerNameTranslationKeys + const nameTranslationKeys = this.$store.getters.getExternalPlayerNameTranslationKeys.map((translationKey, idx) => this.$te(translationKey) ? this.$t(translationKey) : fallbackNames[idx]) - return nameTranslationKeys.map((translationKey, idx) => this.$te(translationKey) ? this.$t(translationKey) : fallbackNames[idx]) + // Sort list of external players alphabetically & case-insensitive and keep the default 'None' in the first index + const nameTranslationKeysSorted = [...nameTranslationKeys] + + nameTranslationKeysSorted.sort((a, b) => a.localeCompare(b, undefined, { sensitivity: 'base' })) + + const playerNone = nameTranslationKeys[0] + const playerNoneIndex = nameTranslationKeysSorted.indexOf(playerNone) + + nameTranslationKeysSorted.splice(playerNoneIndex, 1) + nameTranslationKeysSorted.unshift(playerNone) + + return nameTranslationKeysSorted }, externalPlayerValues: function () { return this.$store.getters.getExternalPlayerValues From e52e2fe087235606c70cef5e5c080d28ad8030af Mon Sep 17 00:00:00 2001 From: trostboot Date: Mon, 11 Sep 2023 20:54:39 +0200 Subject: [PATCH 2/4] Condense sorting logic --- .../external-player-settings.js | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/renderer/components/external-player-settings/external-player-settings.js b/src/renderer/components/external-player-settings/external-player-settings.js index 7329e490fa36a..e9b959c76c164 100644 --- a/src/renderer/components/external-player-settings/external-player-settings.js +++ b/src/renderer/components/external-player-settings/external-player-settings.js @@ -24,17 +24,12 @@ export default defineComponent({ const nameTranslationKeys = this.$store.getters.getExternalPlayerNameTranslationKeys.map((translationKey, idx) => this.$te(translationKey) ? this.$t(translationKey) : fallbackNames[idx]) // Sort list of external players alphabetically & case-insensitive and keep the default 'None' in the first index - const nameTranslationKeysSorted = [...nameTranslationKeys] - - nameTranslationKeysSorted.sort((a, b) => a.localeCompare(b, undefined, { sensitivity: 'base' })) - const playerNone = nameTranslationKeys[0] - const playerNoneIndex = nameTranslationKeysSorted.indexOf(playerNone) - - nameTranslationKeysSorted.splice(playerNoneIndex, 1) - nameTranslationKeysSorted.unshift(playerNone) + nameTranslationKeys.splice(0, 1) + nameTranslationKeys.sort((a, b) => a.localeCompare(b, undefined, { sensitivity: 'base' })) + nameTranslationKeys.unshift(playerNone) - return nameTranslationKeysSorted + return nameTranslationKeys }, externalPlayerValues: function () { return this.$store.getters.getExternalPlayerValues From 4f57cb201e575c766c3730071bbf81a24cad788a Mon Sep 17 00:00:00 2001 From: trostboot Date: Mon, 11 Sep 2023 22:23:13 +0200 Subject: [PATCH 3/4] Rework sorting in utils.js --- .../external-player-settings.js | 10 ++-------- src/renderer/store/modules/utils.js | 7 ++++++- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/renderer/components/external-player-settings/external-player-settings.js b/src/renderer/components/external-player-settings/external-player-settings.js index e9b959c76c164..c2fc0647d038f 100644 --- a/src/renderer/components/external-player-settings/external-player-settings.js +++ b/src/renderer/components/external-player-settings/external-player-settings.js @@ -21,15 +21,9 @@ export default defineComponent({ computed: { externalPlayerNames: function () { const fallbackNames = this.$store.getters.getExternalPlayerNames - const nameTranslationKeys = this.$store.getters.getExternalPlayerNameTranslationKeys.map((translationKey, idx) => this.$te(translationKey) ? this.$t(translationKey) : fallbackNames[idx]) + const nameTranslationKeys = this.$store.getters.getExternalPlayerNameTranslationKeys - // Sort list of external players alphabetically & case-insensitive and keep the default 'None' in the first index - const playerNone = nameTranslationKeys[0] - nameTranslationKeys.splice(0, 1) - nameTranslationKeys.sort((a, b) => a.localeCompare(b, undefined, { sensitivity: 'base' })) - nameTranslationKeys.unshift(playerNone) - - return nameTranslationKeys + return nameTranslationKeys.map((translationKey, idx) => this.$te(translationKey) ? this.$t(translationKey) : fallbackNames[idx]) }, externalPlayerValues: function () { return this.$store.getters.getExternalPlayerValues diff --git a/src/renderer/store/modules/utils.js b/src/renderer/store/modules/utils.js index acdf3096506dd..f45833c00c710 100644 --- a/src/renderer/store/modules/utils.js +++ b/src/renderer/store/modules/utils.js @@ -498,9 +498,14 @@ const actions = { fileData = '[{"name":"None","value":"","cmdArguments":null}]' } - const externalPlayerMap = JSON.parse(fileData).map((entry) => { + const externalPlayerMapUnsorted = JSON.parse(fileData).map((entry) => { return { name: entry.name, nameTranslationKey: entry.nameTranslationKey, value: entry.value, cmdArguments: entry.cmdArguments } }) + // Sort external players alphabetically & case-insensitive, keep default entry at the top + const playerNone = externalPlayerMapUnsorted[0] + const externalPlayerMapTemp = externalPlayerMapUnsorted.slice(1) + externalPlayerMapTemp.sort((a, b) => a.name.localeCompare(b.name, undefined, { sensitivity: 'base' })) + const externalPlayerMap = [playerNone, ...externalPlayerMapTemp] const externalPlayerNames = externalPlayerMap.map((entry) => { return entry.name }) const externalPlayerNameTranslationKeys = externalPlayerMap.map((entry) => { return entry.nameTranslationKey }) From 36f2702288e1e59cf702bbd7d78b3c8c77e8adc2 Mon Sep 17 00:00:00 2001 From: trostboot Date: Tue, 12 Sep 2023 08:47:59 +0200 Subject: [PATCH 4/4] Simplify sorting logic --- src/renderer/store/modules/utils.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/renderer/store/modules/utils.js b/src/renderer/store/modules/utils.js index f45833c00c710..3a2dc92dc865e 100644 --- a/src/renderer/store/modules/utils.js +++ b/src/renderer/store/modules/utils.js @@ -498,14 +498,13 @@ const actions = { fileData = '[{"name":"None","value":"","cmdArguments":null}]' } - const externalPlayerMapUnsorted = JSON.parse(fileData).map((entry) => { + const externalPlayerMap = JSON.parse(fileData).map((entry) => { return { name: entry.name, nameTranslationKey: entry.nameTranslationKey, value: entry.value, cmdArguments: entry.cmdArguments } }) // Sort external players alphabetically & case-insensitive, keep default entry at the top - const playerNone = externalPlayerMapUnsorted[0] - const externalPlayerMapTemp = externalPlayerMapUnsorted.slice(1) - externalPlayerMapTemp.sort((a, b) => a.name.localeCompare(b.name, undefined, { sensitivity: 'base' })) - const externalPlayerMap = [playerNone, ...externalPlayerMapTemp] + const playerNone = externalPlayerMap.shift() + externalPlayerMap.sort((a, b) => a.name.localeCompare(b.name, undefined, { sensitivity: 'base' })) + externalPlayerMap.unshift(playerNone) const externalPlayerNames = externalPlayerMap.map((entry) => { return entry.name }) const externalPlayerNameTranslationKeys = externalPlayerMap.map((entry) => { return entry.nameTranslationKey })