-
Notifications
You must be signed in to change notification settings - Fork 3
Open
Labels
Description
在用户创建的主题回收回复,收到感谢,或者在一些回复中被 @ 了。需要通知用户。
数据模型设计
当前的通知类型有如下一些:
- 收到回复
- 收到
@ - 收到感谢
- 创建主题被收藏
- 关注的用户有了新动态
- 关注的节点有了新主题
通知消息类别与位操作
这些用户又有不同的重要程度,用户应该可以忽略不重要的消息。
由于这些消息种类不是特别多。可以使用位运算方便后面操作与查询 。
使用 64 位的整型存储可以支持最多64种不同类型的通知。对于此类系统来说完全足够了。
一个用户要面对 64 个开关也是够了。
当前针对上面的通知类型,细化声明如下:
class NotificationCategory(IntFlag, EnumChoiceMixin):
RECEIVE_REPLY = 1 << 0 # 收到回复
RECEIVE_MENTION = 1 << 1 # 收到 @
RECEIVE_REPLY_LIKE = 1 << 2 # 收到回复感谢
RECEIVE_POST_LIKE = 1 << 3 # 收到主题感谢
RECEIVE_REPLY_FAV = 1 << 4 # 收到回复被收藏
RECEIVE_POST_FAV = 1 << 5 # 收到主题被收藏
FOLLOWED_USER_NEW_REPLY = 1 << 6 # 关注用户有了新回复
FOLLOWED_USER_NEW_POST = 1 << 7 # 关注用户创建了新主题
FOLLOWED_POST_NEW_REPLY = 1 << 8 # 关注的主题有了新回复
FOLLOWED_NODE_NEW_POST = 1 << 9 # 关注的节点有了新主题
@property
def label(self):
return _notification_category_to_text[self]
_notification_category_to_text = {
NotificationCategory.RECEIVE_REPLY: "收到回复",
NotificationCategory.RECEIVE_MENTION: "收到@",
NotificationCategory.RECEIVE_REPLY_LIKE: "收到回复感谢",
NotificationCategory.RECEIVE_POST_LIKE: "收到主题感谢",
NotificationCategory.RECEIVE_REPLY_FAV: "收到回复收藏",
NotificationCategory.RECEIVE_POST_FAV: "收到主题收藏",
NotificationCategory.FOLLOWED_USER_NEW_REPLY: "关注用户有了新回复",
NotificationCategory.FOLLOWED_USER_NEW_POST: "关注用户创建了新主题",
NotificationCategory.FOLLOWED_POST_NEW_REPLY: "关注的主题有了新回复",
NotificationCategory.FOLLOWED_NODE_NEW_POST: "关注的节点有了新主题",
}Reactions are currently unavailable