## Tasks
https://docs.google.com/spreadsheets/d/1JdAOi325rmprT05IBPxTbmuvUFee7LB5cB7WvLC6tSk/edit#gid=0
## Open Questions
- ❗Architecture @todo: Do we distinguish between emails and browser-notifications push notifications?
- ❗Architecture @todo: How do we deal with scheduled emails?
- ❗Disable all comments in this space!
- How do mentions work? Can I decide network-wide? Or per Space.
- what happens, if i don't receive emails for a blog, but want comments on a specific post?
- add to ``spaces_notifications_post_blocklist`` (as allowlist)
- what happens if im @mentioned in a post/comment?
- check if i would receive the post/comment. if not add me to ``spaces_notifications_post_blocklist`` (as allowlist)
- "Always notify me via email of follow-up posts in any topics I reply to"
- UI: Un-/Mute a post.
- Send an email, when a comment is assigned?
- When I'm not a member of a blog:
## Database architecture [TBUA-23](https://vorhaben.th-koeln.de/browse/TBUA-23)
- All tables are blocklists by default. We should probably loose the `blocklist` suffix, to simplify things (even if all entries are blocklist-entries by default)
```sql
-- Blocklist/allowlist posts for a blog (comments/posts). If a user is a member of a blog she is notified by default
CREATE TABLE `spaces_notifications_blog_blocklist` (
`blog_id` bigint(20) NOT NULL,
`user_id` bigint(20) NOT NULL,
`blocklist_posts` tyniint() NOT NULL, default 1
`blocklist_comments` tyniint() NOT NULL, default 1
PRIMARY KEY (`blog_id`,`user_id`)
)
-- Blocklist/allowlist comments for a post (when deciding about post-email: only relevant for @mentions)
CREATE TABLE `spaces_notifications_post_blocklist` (
`blog_id` bigint(20) NOT NULL,
`post_id` bigint(20) NOT NULL,
`user_id` bigint(20) NOT NULL,
`is_allowlist` tyniint() NOT NULL, default 0
PRIMARY KEY (`blog_id`,`post_id`,`user_id`)
)
-- Blocklist/allowlist comments & posts for term
CREATE TABLE `spaces_notifications_term_blocklist` (
`blog_id` bigint(20) NOT NULL,
`term_id` bigint(20) NOT NULL,
`user_id` bigint(20) NOT NULL,
`is_allowlist` tyniint() NOT NULL, default 0
PRIMARY KEY (`blog_id`,`post_id`,`user_id`)
)
```
``spaces_notifications_post_blocklist`` (only a allowlist, if a user is not member of the given blog)
- ✅ \#not-any-post-for-blog
- ✅ \#blocklist-post-ids (comments on post-id)
- ✅ \#subscribe-single-post (when a user is not a member of a space)
- ✅ \#blocklist term-ids
- ~~\#allowlist-taxonomy-ids (when user not memer)~~
- ✨\#blocklist-comments
- ✅\#blocklist-comments-but-one-post
- ✅\#subscribe-single-post
- \#mentioned-in-post