"eslint": "^7.18.0",
"eslint-plugin-jane": "^9.0.3",
"jest": "^26.6.3",
- "lemmy-js-client": "0.10.0-rc.13",
+ "lemmy-js-client": "0.11.0-rc.1",
"node-fetch": "^2.6.1",
"prettier": "^2.1.2",
"ts-jest": "^26.4.4",
function assertUserFederation(userOne: PersonViewSafe, userTwo: PersonViewSafe) {
expect(userOne.person.name).toBe(userTwo.person.name);
- expect(userOne.person.preferred_username).toBe(userTwo.person.preferred_username);
+ expect(userOne.person.display_name).toBe(userTwo.person.display_name);
expect(userOne.person.bio).toBe(userTwo.person.bio);
expect(userOne.person.actor_id).toBe(userTwo.person.actor_id);
expect(userOne.person.avatar).toBe(userTwo.person.avatar);
lang: '',
avatar,
banner,
- preferred_username: 'user321',
+ display_name: 'user321',
show_avatars: false,
send_notifications_to_email: false,
bio,
dependencies:
language-subtag-registry "~0.3.2"
-lemmy-js-client@0.10.0-rc.13:
- version "0.10.0-rc.13"
- resolved "https://registry.yarnpkg.com/lemmy-js-client/-/lemmy-js-client-0.10.0-rc.13.tgz#ea2e88857243374d7fbd49ee6b4bb94c34359d85"
- integrity sha512-zodvYkwBYR7iP27ah6L/QPUphUUdq38kCH7QF2CUYBrsSAEkGmq2kdz+iusnQ1Ht7Ad80GtYycFprsZBveV5eQ==
+lemmy-js-client@0.11.0-rc.1:
+ version "0.11.0-rc.1"
+ resolved "https://registry.yarnpkg.com/lemmy-js-client/-/lemmy-js-client-0.11.0-rc.1.tgz#0031676be9fc787157a21dd3f5095dd1ee9e6a57"
+ integrity sha512-dtpxe/hHTbYEv2WnfGkAieOB9jyKUVED+y4DosUp/FcaatjPcMTiKOvCdMNjlvvG/9GyclWEoyNitPEsvJwjmg==
leven@^3.1.0:
version "3.1.0"
email::send_email,
location_info,
settings::structs::Settings,
- utils::{generate_random_string, is_valid_preferred_username, naive_from_unix},
+ utils::{generate_random_string, is_valid_display_name, naive_from_unix},
ApiError,
ConnectionId,
LemmyError,
let banner = diesel_option_overwrite_to_url(&data.banner)?;
let email = diesel_option_overwrite(&data.email);
let bio = diesel_option_overwrite(&data.bio);
- let preferred_username = diesel_option_overwrite(&data.preferred_username);
+ let display_name = diesel_option_overwrite(&data.display_name);
let matrix_user_id = diesel_option_overwrite(&data.matrix_user_id);
if let Some(Some(bio)) = &bio {
}
}
- if let Some(Some(preferred_username)) = &preferred_username {
- if !is_valid_preferred_username(preferred_username.trim()) {
+ if let Some(Some(display_name)) = &display_name {
+ if !is_valid_display_name(display_name.trim()) {
return Err(ApiError::err("invalid_username").into());
}
}
avatar,
banner,
inbox_url: None,
- preferred_username,
+ display_name,
published: None,
updated: Some(naive_now()),
banned: None,
pub lang: Option<String>,
pub avatar: Option<String>,
pub banner: Option<String>,
- pub preferred_username: Option<String>,
+ pub display_name: Option<String>,
pub email: Option<String>,
pub bio: Option<String>,
pub matrix_user_id: Option<String>,
set_content_and_source(&mut person, bio)?;
}
- if let Some(i) = self.preferred_username.to_owned() {
+ // In apub, the "name" is a display name
+ if let Some(i) = self.display_name.to_owned() {
person.set_name(i);
}
.preferred_username()
.context(location_info!())?
.to_string();
- let preferred_username: Option<String> = person
+ let display_name: Option<String> = person
.name()
.map(|n| n.one())
.flatten()
.map(|s| s.to_owned().into());
check_slurs(&name)?;
- check_slurs_opt(&preferred_username)?;
+ check_slurs_opt(&display_name)?;
check_slurs_opt(&bio)?;
Ok(PersonForm {
name,
- preferred_username: Some(preferred_username),
+ display_name: Some(display_name),
banned: None,
deleted: None,
avatar: avatar.map(|o| o.map(|i| i.into())),
type Columns = (
id,
name,
- preferred_username,
+ display_name,
avatar,
banned,
published,
(
id,
name,
- preferred_username,
+ display_name,
avatar,
banned,
published,
type Columns = (
id,
name,
- preferred_username,
+ display_name,
avatar,
banned,
published,
(
id,
name,
- preferred_username,
+ display_name,
avatar,
banned,
published,
type Columns = (
id,
name,
- preferred_username,
+ display_name,
avatar,
banned,
published,
(
id,
name,
- preferred_username,
+ display_name,
avatar,
banned,
published,
diesel::update(person.find(person_id))
.set((
- preferred_username.eq::<Option<String>>(None),
+ display_name.eq::<Option<String>>(None),
bio.eq::<Option<String>>(None),
matrix_user_id.eq::<Option<String>>(None),
deleted.eq(true),
let expected_person = Person {
id: inserted_person.id,
name: "holly".into(),
- preferred_username: None,
+ display_name: None,
avatar: None,
banner: None,
banned: false,
person (id) {
id -> Int4,
name -> Varchar,
- preferred_username -> Nullable<Varchar>,
+ display_name -> Nullable<Varchar>,
avatar -> Nullable<Varchar>,
banned -> Bool,
published -> Timestamp,
person_alias_1 (id) {
id -> Int4,
name -> Varchar,
- preferred_username -> Nullable<Varchar>,
+ display_name -> Nullable<Varchar>,
avatar -> Nullable<Varchar>,
banned -> Bool,
published -> Timestamp,
person_alias_2 (id) {
id -> Int4,
name -> Varchar,
- preferred_username -> Nullable<Varchar>,
+ display_name -> Nullable<Varchar>,
avatar -> Nullable<Varchar>,
banned -> Bool,
published -> Timestamp,
pub struct Person {
pub id: PersonId,
pub name: String,
- pub preferred_username: Option<String>,
+ pub display_name: Option<String>,
pub avatar: Option<DbUrl>,
pub banned: bool,
pub published: chrono::NaiveDateTime,
pub struct PersonSafe {
pub id: PersonId,
pub name: String,
- pub preferred_username: Option<String>,
+ pub display_name: Option<String>,
pub avatar: Option<DbUrl>,
pub banned: bool,
pub published: chrono::NaiveDateTime,
pub struct PersonAlias1 {
pub id: PersonId,
pub name: String,
- pub preferred_username: Option<String>,
+ pub display_name: Option<String>,
pub avatar: Option<DbUrl>,
pub banned: bool,
pub published: chrono::NaiveDateTime,
pub struct PersonSafeAlias1 {
pub id: PersonId,
pub name: String,
- pub preferred_username: Option<String>,
+ pub display_name: Option<String>,
pub avatar: Option<DbUrl>,
pub banned: bool,
pub published: chrono::NaiveDateTime,
pub struct PersonAlias2 {
pub id: PersonId,
pub name: String,
- pub preferred_username: Option<String>,
+ pub display_name: Option<String>,
pub avatar: Option<DbUrl>,
pub banned: bool,
pub published: chrono::NaiveDateTime,
pub struct PersonSafeAlias2 {
pub id: PersonId,
pub name: String,
- pub preferred_username: Option<String>,
+ pub display_name: Option<String>,
pub avatar: Option<DbUrl>,
pub banned: bool,
pub published: chrono::NaiveDateTime,
#[table_name = "person"]
pub struct PersonForm {
pub name: String,
- pub preferred_username: Option<Option<String>>,
+ pub display_name: Option<Option<String>>,
pub avatar: Option<Option<DbUrl>>,
pub banned: Option<bool>,
pub published: Option<chrono::NaiveDateTime>,
creator: PersonSafe {
id: inserted_person.id,
name: "timmy".into(),
- preferred_username: None,
+ display_name: None,
published: inserted_person.published,
avatar: None,
actor_id: inserted_person.actor_id.to_owned(),
creator: PersonSafe {
id: inserted_person.id,
name: person_name,
- preferred_username: None,
+ display_name: None,
published: inserted_person.published,
avatar: None,
actor_id: inserted_person.actor_id.to_owned(),
use crate::utils::{
is_valid_community_name,
+ is_valid_display_name,
is_valid_post_title,
- is_valid_preferred_username,
is_valid_username,
remove_slurs,
scrape_text_for_mentions,
}
#[test]
-fn test_valid_preferred_username() {
- assert!(is_valid_preferred_username("hello @there"));
- assert!(!is_valid_preferred_username("@hello there"));
+fn test_valid_display_name() {
+ assert!(is_valid_display_name("hello @there"));
+ assert!(!is_valid_display_name("@hello there"));
}
#[test]
}
// Can't do a regex here, reverse lookarounds not supported
-pub fn is_valid_preferred_username(preferred_username: &str) -> bool {
- !preferred_username.starts_with('@')
- && preferred_username.chars().count() >= 3
- && preferred_username.chars().count() <= 20
+pub fn is_valid_display_name(name: &str) -> bool {
+ !name.starts_with('@') && name.chars().count() >= 3 && name.chars().count() <= 20
}
pub fn is_valid_community_name(name: &str) -> bool {
--- /dev/null
+alter table person rename display_name to preferred_username;
+
+-- Regenerate the person_alias views
+drop view person_alias_1, person_alias_2;
+create view person_alias_1 as select * from person;
+create view person_alias_2 as select * from person;
--- /dev/null
+alter table person rename preferred_username to display_name;
+
+-- Regenerate the person_alias views
+drop view person_alias_1, person_alias_2;
+create view person_alias_1 as select * from person;
+create view person_alias_2 as select * from person;