fix #1036 convert screen name to unicode with punycode
This commit is contained in:
parent
9d45db959f
commit
ef6e2087ae
5 changed files with 196 additions and 287 deletions
|
@ -1,6 +1,7 @@
|
|||
import escape from 'escape-html'
|
||||
import parseLinkHeader from 'parse-link-header'
|
||||
import { isStatusNotification } from '../notification_utils/notification_utils.js'
|
||||
import punycode from 'punycode.js'
|
||||
|
||||
/** NOTICE! **
|
||||
* Do not initialize UI-generated data here.
|
||||
|
@ -197,6 +198,19 @@ export const parseUser = (data) => {
|
|||
output.rights = output.rights || {}
|
||||
output.notification_settings = output.notification_settings || {}
|
||||
|
||||
// Convert punycode to unicode
|
||||
if (output.screen_name.includes('@')) {
|
||||
const parts = output.screen_name.split('@')
|
||||
console.log(parts)
|
||||
let unicodeDomain = punycode.toUnicode(parts[1])
|
||||
if (unicodeDomain !== parts[1]) {
|
||||
// Add some identifier so users can potentially spot spoofing attempts:
|
||||
// lain.com and xn--lin-6cd.com would appear identical otherwise.
|
||||
unicodeDomain = '🌏' + unicodeDomain
|
||||
output.screen_name = [parts[0], unicodeDomain].join('@')
|
||||
}
|
||||
}
|
||||
|
||||
return output
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue