Update profile page URL template to match mitra-web
This commit is contained in:
parent
848a0685de
commit
cdb304a8b7
6 changed files with 24 additions and 15 deletions
|
@ -17,6 +17,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||||
|
|
||||||
- Documented valid role names for `set-role` command.
|
- Documented valid role names for `set-role` command.
|
||||||
- Granted `delete_any_post` and `delete_any_profile` permissions to admin role.
|
- Granted `delete_any_post` and `delete_any_profile` permissions to admin role.
|
||||||
|
- Updated profile page URL template to match mitra-web.
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
use uuid::Uuid;
|
|
||||||
|
|
||||||
use mitra_utils::did::Did;
|
use mitra_utils::did::Did;
|
||||||
|
|
||||||
use crate::activitypub::vocabulary::{
|
use crate::activitypub::vocabulary::{
|
||||||
|
@ -101,7 +99,7 @@ pub fn parse_identity_proof(
|
||||||
|
|
||||||
pub fn attach_payment_option(
|
pub fn attach_payment_option(
|
||||||
instance_url: &str,
|
instance_url: &str,
|
||||||
user_id: &Uuid,
|
username: &str,
|
||||||
payment_option: PaymentOption,
|
payment_option: PaymentOption,
|
||||||
) -> ActorAttachment {
|
) -> ActorAttachment {
|
||||||
let (name, href) = match payment_option {
|
let (name, href) = match payment_option {
|
||||||
|
@ -109,12 +107,12 @@ pub fn attach_payment_option(
|
||||||
PaymentOption::Link(_) => unimplemented!(),
|
PaymentOption::Link(_) => unimplemented!(),
|
||||||
PaymentOption::EthereumSubscription(_) => {
|
PaymentOption::EthereumSubscription(_) => {
|
||||||
let name = "EthereumSubscription".to_string();
|
let name = "EthereumSubscription".to_string();
|
||||||
let href = get_subscription_page_url(instance_url, user_id);
|
let href = get_subscription_page_url(instance_url, username);
|
||||||
(name, href)
|
(name, href)
|
||||||
},
|
},
|
||||||
PaymentOption::MoneroSubscription(_) => {
|
PaymentOption::MoneroSubscription(_) => {
|
||||||
let name = "MoneroSubscription".to_string();
|
let name = "MoneroSubscription".to_string();
|
||||||
let href = get_subscription_page_url(instance_url, user_id);
|
let href = get_subscription_page_url(instance_url, username);
|
||||||
(name, href)
|
(name, href)
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -177,7 +175,6 @@ pub fn parse_extra_field(
|
||||||
mod tests {
|
mod tests {
|
||||||
use mitra_utils::{
|
use mitra_utils::{
|
||||||
caip2::ChainId,
|
caip2::ChainId,
|
||||||
id::generate_ulid,
|
|
||||||
};
|
};
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
|
@ -200,14 +197,14 @@ mod tests {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_payment_option() {
|
fn test_payment_option() {
|
||||||
let user_id = generate_ulid();
|
let username = "testuser";
|
||||||
let payment_option =
|
let payment_option =
|
||||||
PaymentOption::ethereum_subscription(ChainId::ethereum_mainnet());
|
PaymentOption::ethereum_subscription(ChainId::ethereum_mainnet());
|
||||||
let subscription_page_url =
|
let subscription_page_url =
|
||||||
format!("https://example.com/profile/{}/subscription", user_id);
|
"https://example.com/@testuser/subscription";
|
||||||
let attachment = attach_payment_option(
|
let attachment = attach_payment_option(
|
||||||
INSTANCE_URL,
|
INSTANCE_URL,
|
||||||
&user_id,
|
username,
|
||||||
payment_option,
|
payment_option,
|
||||||
);
|
);
|
||||||
assert_eq!(attachment.object_type, LINK);
|
assert_eq!(attachment.object_type, LINK);
|
||||||
|
|
|
@ -329,7 +329,7 @@ pub fn get_local_actor(
|
||||||
for payment_option in user.profile.payment_options.clone().into_inner() {
|
for payment_option in user.profile.payment_options.clone().into_inner() {
|
||||||
let attachment = attach_payment_option(
|
let attachment = attach_payment_option(
|
||||||
instance_url,
|
instance_url,
|
||||||
&user.id,
|
&user.profile.username,
|
||||||
payment_option,
|
payment_option,
|
||||||
);
|
);
|
||||||
attachments.push(attachment);
|
attachments.push(attachment);
|
||||||
|
|
|
@ -84,7 +84,10 @@ async fn actor_view(
|
||||||
let db_client = &**get_database_client(&db_pool).await?;
|
let db_client = &**get_database_client(&db_pool).await?;
|
||||||
let user = get_user_by_name(db_client, &username).await?;
|
let user = get_user_by_name(db_client, &username).await?;
|
||||||
if !is_activitypub_request(request.headers()) {
|
if !is_activitypub_request(request.headers()) {
|
||||||
let page_url = get_profile_page_url(&config.instance_url(), &user.id);
|
let page_url = get_profile_page_url(
|
||||||
|
&config.instance_url(),
|
||||||
|
&user.profile.username,
|
||||||
|
);
|
||||||
let response = HttpResponse::Found()
|
let response = HttpResponse::Found()
|
||||||
.append_header((http_header::LOCATION, page_url))
|
.append_header((http_header::LOCATION, page_url))
|
||||||
.finish();
|
.finish();
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
|
|
||||||
// Assuming frontend is on the same host as backend
|
// Assuming frontend is on the same host as backend
|
||||||
pub fn get_profile_page_url(instance_url: &str, profile_id: &Uuid) -> String {
|
pub fn get_profile_page_url(instance_url: &str, username: &str) -> String {
|
||||||
format!("{}/profile/{}", instance_url, profile_id)
|
format!("{}/@{}", instance_url, username)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_post_page_url(instance_url: &str, post_id: &Uuid) -> String {
|
pub fn get_post_page_url(instance_url: &str, post_id: &Uuid) -> String {
|
||||||
|
@ -14,9 +14,9 @@ pub fn get_tag_page_url(instance_url: &str, tag_name: &str) -> String {
|
||||||
format!("{}/tag/{}", instance_url, tag_name)
|
format!("{}/tag/{}", instance_url, tag_name)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_subscription_page_url(instance_url: &str, profile_id: &Uuid) -> String {
|
pub fn get_subscription_page_url(instance_url: &str, username: &str) -> String {
|
||||||
format!(
|
format!(
|
||||||
"{}/subscription",
|
"{}/subscription",
|
||||||
get_profile_page_url(instance_url, profile_id),
|
get_profile_page_url(instance_url, username),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -115,6 +115,10 @@ mod tests {
|
||||||
actor_address.to_string(),
|
actor_address.to_string(),
|
||||||
"user@example.com",
|
"user@example.com",
|
||||||
);
|
);
|
||||||
|
assert_eq!(
|
||||||
|
actor_address.acct(local_hostname),
|
||||||
|
local_profile.acct,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
@ -138,6 +142,10 @@ mod tests {
|
||||||
actor_address.to_string(),
|
actor_address.to_string(),
|
||||||
remote_profile.acct,
|
remote_profile.acct,
|
||||||
);
|
);
|
||||||
|
assert_eq!(
|
||||||
|
actor_address.acct(local_hostname),
|
||||||
|
remote_profile.acct,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
Loading…
Reference in a new issue