feat: per-entity federation privacy toggles for reviews and watchlist
- add federate_reviews + federate_watchlist to UserSettings (default true) - new UserFederationSettingsQuery port with FederationFlags struct - remove get_user_federate_goals from LocalApContentQuery - gate ReviewLogged, ReviewUpdated, WatchlistEntryAdded, on_poster_synced on flags - goals gating migrated to UserFederationSettingsQuery - ReviewDeleted and WatchlistEntryRemoved ungated (tombstones always fire) - sqlite + postgres migrations and adapter impls - settings API and SPA toggles
This commit is contained in:
@@ -4,27 +4,34 @@ use crate::value_objects::UserId;
|
||||
pub struct UserSettings {
|
||||
user_id: UserId,
|
||||
federate_goals: bool,
|
||||
federate_reviews: bool,
|
||||
federate_watchlist: bool,
|
||||
}
|
||||
|
||||
impl UserSettings {
|
||||
pub fn new(user_id: UserId) -> Self {
|
||||
Self {
|
||||
user_id,
|
||||
federate_goals: false,
|
||||
federate_goals: true,
|
||||
federate_reviews: true,
|
||||
federate_watchlist: true,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn from_persistence(user_id: UserId, federate_goals: bool) -> Self {
|
||||
pub fn from_persistence(
|
||||
user_id: UserId,
|
||||
federate_goals: bool,
|
||||
federate_reviews: bool,
|
||||
federate_watchlist: bool,
|
||||
) -> Self {
|
||||
Self {
|
||||
user_id,
|
||||
federate_goals,
|
||||
federate_reviews,
|
||||
federate_watchlist,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn set_federate_goals(&mut self, value: bool) {
|
||||
self.federate_goals = value;
|
||||
}
|
||||
|
||||
pub fn user_id(&self) -> &UserId {
|
||||
&self.user_id
|
||||
}
|
||||
@@ -32,4 +39,24 @@ impl UserSettings {
|
||||
pub fn federate_goals(&self) -> bool {
|
||||
self.federate_goals
|
||||
}
|
||||
|
||||
pub fn set_federate_goals(&mut self, value: bool) {
|
||||
self.federate_goals = value;
|
||||
}
|
||||
|
||||
pub fn federate_reviews(&self) -> bool {
|
||||
self.federate_reviews
|
||||
}
|
||||
|
||||
pub fn set_federate_reviews(&mut self, value: bool) {
|
||||
self.federate_reviews = value;
|
||||
}
|
||||
|
||||
pub fn federate_watchlist(&self) -> bool {
|
||||
self.federate_watchlist
|
||||
}
|
||||
|
||||
pub fn set_federate_watchlist(&mut self, value: bool) {
|
||||
self.federate_watchlist = value;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user