diff --git a/crates/api/src/local_user/donation_dialog_shown.rs b/crates/api/src/local_user/donation_dialog_shown.rs index 103d6382d..977121543 100644 --- a/crates/api/src/local_user/donation_dialog_shown.rs +++ b/crates/api/src/local_user/donation_dialog_shown.rs @@ -1,6 +1,6 @@ use actix_web::web::{Data, Json}; -use chrono::Utc; -use lemmy_api_common::{context::LemmyContext, SuccessResponse}; +use chrono::{DateTime, Utc}; +use lemmy_api_common::{context::LemmyContext, person::DonationDialogShown, SuccessResponse}; use lemmy_db_schema::source::local_user::{LocalUser, LocalUserUpdateForm}; use lemmy_db_views::structs::LocalUserView; use lemmy_utils::error::LemmyResult; @@ -8,9 +8,15 @@ use lemmy_utils::error::LemmyResult; pub async fn donation_dialog_shown( context: Data<LemmyContext>, local_user_view: LocalUserView, + data: Json<DonationDialogShown>, ) -> LemmyResult<Json<SuccessResponse>> { + let last = if data.hide_permanently.unwrap_or_default() { + DateTime::<Utc>::MAX_UTC + } else { + Utc::now() + }; let form = LocalUserUpdateForm { - last_donation_notification: Some(Utc::now()), + last_donation_notification: Some(last), ..Default::default() }; LocalUser::update(&mut context.pool(), local_user_view.local_user.id, &form).await?; diff --git a/crates/api_common/src/person.rs b/crates/api_common/src/person.rs index ab7330ad1..212a3712d 100644 --- a/crates/api_common/src/person.rs +++ b/crates/api_common/src/person.rs @@ -567,3 +567,12 @@ pub struct ListLoginsResponse { pub struct ResendVerificationEmail { pub email: SensitiveString, } + +#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// Make a request to resend your verification email. +pub struct DonationDialogShown { + #[cfg_attr(feature = "full", ts(optional))] + pub hide_permanently: Option<bool>, +} diff --git a/crates/api_common/src/site.rs b/crates/api_common/src/site.rs index b921badd0..4fdb718fc 100644 --- a/crates/api_common/src/site.rs +++ b/crates/api_common/src/site.rs @@ -259,8 +259,6 @@ pub struct CreateSite { #[cfg_attr(feature = "full", ts(optional))] pub comment_downvotes: Option<FederationMode>, #[cfg_attr(feature = "full", ts(optional))] - pub disable_donation_dialog: Option<bool>, - #[cfg_attr(feature = "full", ts(optional))] pub disallow_nsfw_content: Option<bool>, } @@ -392,10 +390,6 @@ pub struct EditSite { /// What kind of comment downvotes your site allows. #[cfg_attr(feature = "full", ts(optional))] pub comment_downvotes: Option<FederationMode>, - /// If this is true, users will never see the dialog asking to support Lemmy development with - /// donations. - #[cfg_attr(feature = "full", ts(optional))] - pub disable_donation_dialog: Option<bool>, /// Block NSFW content being created #[cfg_attr(feature = "full", ts(optional))] pub disallow_nsfw_content: Option<bool>, diff --git a/crates/api_crud/src/site/create.rs b/crates/api_crud/src/site/create.rs index 8fc2d9a8a..f06983c2e 100644 --- a/crates/api_crud/src/site/create.rs +++ b/crates/api_crud/src/site/create.rs @@ -103,7 +103,6 @@ pub async fn create_site( post_downvotes: data.post_downvotes, comment_upvotes: data.comment_upvotes, comment_downvotes: data.comment_downvotes, - disable_donation_dialog: data.disable_donation_dialog, disallow_nsfw_content: data.disallow_nsfw_content, ..Default::default() }; diff --git a/crates/api_crud/src/site/update.rs b/crates/api_crud/src/site/update.rs index 3202295bf..d2c18e85c 100644 --- a/crates/api_crud/src/site/update.rs +++ b/crates/api_crud/src/site/update.rs @@ -112,7 +112,6 @@ pub async fn update_site( post_downvotes: data.post_downvotes, comment_upvotes: data.comment_upvotes, comment_downvotes: data.comment_downvotes, - disable_donation_dialog: data.disable_donation_dialog, disallow_nsfw_content: data.disallow_nsfw_content, ..Default::default() }; diff --git a/crates/db_schema/src/schema.rs b/crates/db_schema/src/schema.rs index d955ae482..53d42e079 100644 --- a/crates/db_schema/src/schema.rs +++ b/crates/db_schema/src/schema.rs @@ -436,7 +436,6 @@ diesel::table! { post_downvotes -> FederationModeEnum, comment_upvotes -> FederationModeEnum, comment_downvotes -> FederationModeEnum, - disable_donation_dialog -> Bool, default_post_time_range_seconds -> Nullable<Int4>, disallow_nsfw_content -> Bool, users -> Int8, diff --git a/crates/db_schema/src/source/local_site.rs b/crates/db_schema/src/source/local_site.rs index 870a1536e..372e49483 100644 --- a/crates/db_schema/src/source/local_site.rs +++ b/crates/db_schema/src/source/local_site.rs @@ -83,9 +83,6 @@ pub struct LocalSite { pub comment_upvotes: FederationMode, /// What kind of comment downvotes your site allows. pub comment_downvotes: FederationMode, - /// If this is true, users will never see the dialog asking to support Lemmy development with - /// donations. - pub disable_donation_dialog: bool, #[cfg_attr(feature = "full", ts(optional))] /// A default time range limit to apply to post sorts, in seconds. pub default_post_time_range_seconds: Option<i32>, @@ -163,8 +160,6 @@ pub struct LocalSiteInsertForm { #[new(default)] pub comment_downvotes: Option<FederationMode>, #[new(default)] - pub disable_donation_dialog: Option<bool>, - #[new(default)] pub default_post_time_range_seconds: Option<Option<i32>>, #[new(default)] pub disallow_nsfw_content: bool, @@ -201,7 +196,6 @@ pub struct LocalSiteUpdateForm { pub post_downvotes: Option<FederationMode>, pub comment_upvotes: Option<FederationMode>, pub comment_downvotes: Option<FederationMode>, - pub disable_donation_dialog: Option<bool>, pub default_post_time_range_seconds: Option<Option<i32>>, pub disallow_nsfw_content: Option<bool>, } diff --git a/migrations/2025-01-10-135505_donation-dialog/down.sql b/migrations/2025-01-10-135505_donation-dialog/down.sql index 8956c15eb..7ee78595c 100644 --- a/migrations/2025-01-10-135505_donation-dialog/down.sql +++ b/migrations/2025-01-10-135505_donation-dialog/down.sql @@ -1,6 +1,3 @@ ALTER TABLE local_user DROP COLUMN last_donation_notification; -ALTER TABLE local_site - DROP COLUMN disable_donation_dialog; - diff --git a/migrations/2025-01-10-135505_donation-dialog/up.sql b/migrations/2025-01-10-135505_donation-dialog/up.sql index 0f263e004..33e6ae834 100644 --- a/migrations/2025-01-10-135505_donation-dialog/up.sql +++ b/migrations/2025-01-10-135505_donation-dialog/up.sql @@ -3,6 +3,3 @@ ALTER TABLE local_user ADD COLUMN last_donation_notification timestamptz NOT NULL DEFAULT (now() - (random() * (interval '12 months'))); -ALTER TABLE local_site - ADD COLUMN disable_donation_dialog boolean NOT NULL DEFAULT FALSE; -