Fix non-ASCII display names producing broken usernames#585
Merged
Conversation
…ed-username The suggested-username was derived from the ActivityPub "name" field (display name), which can contain emojis, Cyrillic, or other non-ASCII characters that get stripped during sanitization, producing empty or unusable usernames. Now uses "preferredUsername" (the actual handle, always ASCII-safe) with the host appended for uniqueness, matching what create_friend_subscription_from_actor already does.
Contributor
Test this PR in WordPress PlaygroundYou can test this pull request directly in WordPress Playground: This will install and activate the plugin with the changes from this PR. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
update_feed_details()using the ActivityPubname(display name) forsuggested-usernameinstead ofpreferredUsername(the actual handle)DCoder 🇱🇹❤🇺🇦), Cyrillic (РосКомСвобода), or special characters (D:\side\>:idle:) would get stripped bysanitize_username(), producing empty or unusable WordPress usernamespreferredUsernameis always ASCII-safe on Mastodon/Fediverse, so it produces clean usernames likedcoder.mastodon.socialpreferredUsernameis not available, nosuggested-usernameis set, falling back to the URL-based username which is always ASCII-safeTest plan
test-activitypub.phpthat callupdate_feed_details()with emoji, Cyrillic, and special character display names and verifysuggested-usernameis derived frompreferredUsernametest-friend-user.phpforsanitize_username()edge casesTesting
https://playground.wordpress.net/#{%22steps%22:[{%22step%22:%22installPlugin%22,%22pluginData%22:{%22resource%22:%22git:directory%22,%22url%22:%22https://github.com/akirk/friends%22,%22ref%22:%22fix-cyrillic-username-handling%22,%22refType%22:%22branch%22},%22options%22:{%22activate%22:true}}]}