Skip to main content

cloudillo_push/
settings.rs

1//! Push notification settings registration
2//!
3//! Settings for controlling which action types trigger push notifications.
4//! Users can enable/disable notifications for each action type.
5
6use crate::prelude::*;
7use cloudillo_core::settings::{
8	PermissionLevel, SettingDefinition, SettingScope, SettingValue, SettingsRegistry,
9};
10
11/// Register all push notification settings
12pub fn register_settings(registry: &mut SettingsRegistry) -> ClResult<()> {
13	// Master switch for push notifications
14	registry.register(
15		SettingDefinition::builder("notify.push")
16			.description("Enable push notifications")
17			.default(SettingValue::Bool(true))
18			.scope(SettingScope::Tenant)
19			.permission(PermissionLevel::User)
20			.build()?,
21	)?;
22
23	// Direct messages (MSG)
24	registry.register(
25		SettingDefinition::builder("notify.push.message")
26			.description("Notify on direct messages")
27			.default(SettingValue::Bool(true))
28			.scope(SettingScope::Tenant)
29			.permission(PermissionLevel::User)
30			.build()?,
31	)?;
32
33	// Connection requests (CONN)
34	registry.register(
35		SettingDefinition::builder("notify.push.connection")
36			.description("Notify on connection requests")
37			.default(SettingValue::Bool(true))
38			.scope(SettingScope::Tenant)
39			.permission(PermissionLevel::User)
40			.build()?,
41	)?;
42
43	// File shares (FSHR)
44	registry.register(
45		SettingDefinition::builder("notify.push.file_share")
46			.description("Notify when files are shared with you")
47			.default(SettingValue::Bool(true))
48			.scope(SettingScope::Tenant)
49			.permission(PermissionLevel::User)
50			.build()?,
51	)?;
52
53	// Follows (FLLW)
54	registry.register(
55		SettingDefinition::builder("notify.push.follow")
56			.description("Notify when someone follows you")
57			.default(SettingValue::Bool(false))
58			.scope(SettingScope::Tenant)
59			.permission(PermissionLevel::User)
60			.build()?,
61	)?;
62
63	// Comments on your posts (CMNT)
64	registry.register(
65		SettingDefinition::builder("notify.push.comment")
66			.description("Notify on comments to your posts")
67			.default(SettingValue::Bool(true))
68			.scope(SettingScope::Tenant)
69			.permission(PermissionLevel::User)
70			.build()?,
71	)?;
72
73	// Reactions to your posts (REACT)
74	registry.register(
75		SettingDefinition::builder("notify.push.reaction")
76			.description("Notify on reactions to your posts")
77			.default(SettingValue::Bool(false))
78			.scope(SettingScope::Tenant)
79			.permission(PermissionLevel::User)
80			.build()?,
81	)?;
82
83	// Mentions in posts (@username)
84	registry.register(
85		SettingDefinition::builder("notify.push.mention")
86			.description("Notify when you are mentioned in a post")
87			.default(SettingValue::Bool(true))
88			.scope(SettingScope::Tenant)
89			.permission(PermissionLevel::User)
90			.build()?,
91	)?;
92
93	// Posts from followed users (POST) - disabled by default as it can be spammy
94	registry.register(
95		SettingDefinition::builder("notify.push.post")
96			.description("Notify on new posts from people you follow")
97			.default(SettingValue::Bool(false))
98			.scope(SettingScope::Tenant)
99			.permission(PermissionLevel::User)
100			.build()?,
101	)?;
102
103	Ok(())
104}
105
106// vim: ts=4