feature: Thread improvements, round 1 #74
3 changed files with 14 additions and 5 deletions
|
|
@ -20,10 +20,10 @@ const SPECIAL_USER_MAPPINGS = new Map([
|
||||||
function downcaseUsername(user) {
|
function downcaseUsername(user) {
|
||||||
// First, try to convert the username to the set of allowed characters
|
// First, try to convert the username to the set of allowed characters
|
||||||
let downcased = user.username.toLowerCase()
|
let downcased = user.username.toLowerCase()
|
||||||
// spaces to underscores...
|
// spaces and slashes to underscores...
|
||||||
.replace(/ /g, "_")
|
.replace(/[ /]/g, "_")
|
||||||
// remove disallowed characters...
|
// remove disallowed characters...
|
||||||
.replace(/[^a-z0-9._=/-]*/g, "")
|
.replace(/[^a-z0-9._=-]*/g, "")
|
||||||
// remove leading and trailing dashes and underscores...
|
// remove leading and trailing dashes and underscores...
|
||||||
.replace(/(?:^[_-]*|[_-]*$)/g, "")
|
.replace(/(?:^[_-]*|[_-]*$)/g, "")
|
||||||
// If requested, also make the Discord user ID part of the username
|
// If requested, also make the Discord user ID part of the username
|
||||||
|
|
|
||||||
|
|
@ -21,8 +21,12 @@ test("user2name: works on single emoji at the end", t => {
|
||||||
t.equal(userToSimName({username: "Melody 🎵", discriminator: "2192"}), "melody")
|
t.equal(userToSimName({username: "Melody 🎵", discriminator: "2192"}), "melody")
|
||||||
})
|
})
|
||||||
|
|
||||||
test("user2name: works on crazy name", t => {
|
test("user2name: works on really weird name", t => {
|
||||||
t.equal(userToSimName({username: "*** D3 &W (89) _7//-", discriminator: "0001"}), "d3_w_89__7//")
|
t.equal(userToSimName({username: "*** D3 &W (89) _7//-", discriminator: "0001"}), "d3_w_89__7")
|
||||||
|
})
|
||||||
|
|
||||||
|
test("user2name: treats slashes", t => {
|
||||||
|
t.equal(userToSimName({username: "Evil Lillith (she/her)", discriminator: "5892"}), "evil_lillith_she_her")
|
||||||
})
|
})
|
||||||
|
|
||||||
test("user2name: adds discriminator if name is unavailable (old tag format)", t => {
|
test("user2name: adds discriminator if name is unavailable (old tag format)", t => {
|
||||||
|
|
|
||||||
5
src/db/migrations/0034-slash-not-allowed-in-mxid.sql
Normal file
5
src/db/migrations/0034-slash-not-allowed-in-mxid.sql
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
BEGIN TRANSACTION;
|
||||||
|
|
||||||
|
DELETE FROM sim WHERE sim_name like '%/%';
|
||||||
|
|
||||||
|
COMMIT;
|
||||||
Loading…
Add table
Add a link
Reference in a new issue