From eac95614b7183f0c49e91f2bbdc632062e3fe51a Mon Sep 17 00:00:00 2001 From: Iain Date: Mon, 19 Oct 2026 11:28:37 +0100 Subject: [PATCH] fix(import): stop listing a phone's own name as its model number --- data/devices/ayn/odin2.yml | 1 - data/devices/ayn/odin2mini.yml | 1 - data/devices/xiaomi/davinci.yml | 2 +- data/devices/xiaomi/gauguin.yml | 2 +- data/devices/xiaomi/haydn.yml | 2 +- data/devices/xiaomi/munch.yml | 2 +- data/devices/xiaomi/peridot.yml | 2 +- scripts/import/store.js | 4 +++- tests/import/store.test.js | 7 +++++++ 9 files changed, 15 insertions(+), 8 deletions(-) diff --git a/data/devices/ayn/odin2.yml b/data/devices/ayn/odin2.yml index a02e69e..3e30741 100644 --- a/data/devices/ayn/odin2.yml +++ b/data/devices/ayn/odin2.yml @@ -1,7 +1,6 @@ # yaml-language-server: $schema=../../../schema/device.json name: Odin 2 codenames: [odin2] -aliases: [Odin 2] released: 2023 soc: Qualcomm Dragonwing™ QCS8550 (QCS8550) type: handheld diff --git a/data/devices/ayn/odin2mini.yml b/data/devices/ayn/odin2mini.yml index 065df3f..c9a4252 100644 --- a/data/devices/ayn/odin2mini.yml +++ b/data/devices/ayn/odin2mini.yml @@ -1,7 +1,6 @@ # yaml-language-server: $schema=../../../schema/device.json name: Odin2 Mini codenames: [odin2mini] -aliases: [Odin2 Mini] released: 2024 soc: Qualcomm Dragonwing™ QCS8550 (QCS8550) type: handheld diff --git a/data/devices/xiaomi/davinci.yml b/data/devices/xiaomi/davinci.yml index dc6a067..105a2c6 100644 --- a/data/devices/xiaomi/davinci.yml +++ b/data/devices/xiaomi/davinci.yml @@ -1,7 +1,7 @@ # yaml-language-server: $schema=../../../schema/device.json name: Mi 9T codenames: [davinci] -aliases: [Redmi K20 (China), Redmi K20 (India), M1903F10G, M1903F10A, M1903F10C, M1903F10I, Mi 9T, M1903F10T] +aliases: [Redmi K20 (China), Redmi K20 (India), M1903F10G, M1903F10A, M1903F10C, M1903F10I, M1903F10T] released: 2019 soc: Qualcomm SM7150-AA Snapdragon 730 hardware: [cellular, fingerprint, nfc] diff --git a/data/devices/xiaomi/gauguin.yml b/data/devices/xiaomi/gauguin.yml index 4dc3e43..a89d797 100644 --- a/data/devices/xiaomi/gauguin.yml +++ b/data/devices/xiaomi/gauguin.yml @@ -1,7 +1,7 @@ # yaml-language-server: $schema=../../../schema/device.json name: Mi 10T Lite 5G codenames: [gauguin] -aliases: [Mi 10i 5G, Redmi Note 9 Pro 5G, M2007J17G, M2007J17I, M2007J17C, Mi 10i, Mi 10T Lite 5G, Mi 10T Lite] +aliases: [Mi 10i 5G, Redmi Note 9 Pro 5G, M2007J17G, M2007J17I, M2007J17C, Mi 10i, Mi 10T Lite] released: 2020 soc: Qualcomm SM7225 Snapdragon 750G 5G hardware: [5g, cellular, fingerprint, nfc] diff --git a/data/devices/xiaomi/haydn.yml b/data/devices/xiaomi/haydn.yml index d6ffb10..1222c32 100644 --- a/data/devices/xiaomi/haydn.yml +++ b/data/devices/xiaomi/haydn.yml @@ -1,7 +1,7 @@ # yaml-language-server: $schema=../../../schema/device.json name: Mi 11i codenames: [haydn] -aliases: [Redmi K40 Pro, Redmi K40 Pro+, Mi 11X Pro, M2012K11G, M2012K11C, M2012K11I, Mi 11i] +aliases: [Redmi K40 Pro, Redmi K40 Pro+, Mi 11X Pro, M2012K11G, M2012K11C, M2012K11I] released: 2021 soc: Qualcomm SM8350 Snapdragon 888 hardware: [5g, cellular, fingerprint, nfc] diff --git a/data/devices/xiaomi/munch.yml b/data/devices/xiaomi/munch.yml index 59c42c2..2760a03 100644 --- a/data/devices/xiaomi/munch.yml +++ b/data/devices/xiaomi/munch.yml @@ -1,7 +1,7 @@ # yaml-language-server: $schema=../../../schema/device.json name: POCO F4 codenames: [munch] -aliases: [Redmi K40S, 22021211RG, 22021211RI, 22021211RC, POCO F4] +aliases: [Redmi K40S, 22021211RG, 22021211RI, 22021211RC] released: 2022 soc: Qualcomm SM8250-AC Snapdragon 870 hardware: [5g, cellular, fingerprint, nfc] diff --git a/data/devices/xiaomi/peridot.yml b/data/devices/xiaomi/peridot.yml index 3b947b1..88fd7a9 100644 --- a/data/devices/xiaomi/peridot.yml +++ b/data/devices/xiaomi/peridot.yml @@ -1,7 +1,7 @@ # yaml-language-server: $schema=../../../schema/device.json name: POCO F6 codenames: [peridot] -aliases: [Redmi Turbo 3, 24069PC21G, 24069PC21I, 24069RA21C, POCO F6] +aliases: [Redmi Turbo 3, 24069PC21G, 24069PC21I, 24069RA21C] released: 2024 soc: Qualcomm SM8635 Snapdragon 8s Gen3 hardware: [5g, cellular, fingerprint, nfc] diff --git a/scripts/import/store.js b/scripts/import/store.js index 8e2d038..2709846 100644 --- a/scripts/import/store.js +++ b/scripts/import/store.js @@ -128,7 +128,9 @@ function fillBootloader(current, { unlock, notes, source }) { function fillGaps(brand, current, { aliases, bootloader = {}, ...rest }) { for (const [key, value] of Object.entries(deviceFields(rest))) current[key] ??= value; fillBootloader(current.bootloader, bootloader); - const newAliases = unclaimed(brand, aliases); + const newAliases = unclaimed(brand, aliases).filter( + (alias) => alias.toLowerCase() !== current.name.toLowerCase(), + ); if (newAliases.length) current.aliases = [...(current.aliases ?? []), ...newAliases]; claim(brand, newAliases); } diff --git a/tests/import/store.test.js b/tests/import/store.test.js index 5ab4160..474c896 100644 --- a/tests/import/store.test.js +++ b/tests/import/store.test.js @@ -59,6 +59,13 @@ test('a name that opens with another brand we list goes to that brand', () => { assert.ok(!existsSync(join(process.env.DATA_DIR, 'devices/tidy/rocket.yml'))); }); +test("a device's own name never turns up as one of its aliases", () => { + upsertDevice('Acme', { name: 'Comet', codenames: ['c1'] }); + upsertDevice('Acme', { name: 'Comet Max', codenames: ['c1'], aliases: ['COMET', 'Comet Max'] }); + const file = join(process.env.DATA_DIR, 'devices/acme/c1.yml'); + assert.deepEqual(parse(readFileSync(file, 'utf8')).aliases, ['Comet Max']); +}); + test('a source that loses a fifth of its devices fails and leaves the file alone', () => { writeUpstream('floor', rows(10)); assert.throws(() => writeUpstream('floor', rows(7)), /only 7 active devices, last import had 10/);