Notifications accept.
This commit is contained in:
		
							parent
							
								
									c3c94461c2
								
							
						
					
					
						commit
						578c182f27
					
				| @ -1,9 +1,17 @@ | |||||||
| from snek.system.service import BaseService | from snek.system.service import BaseService | ||||||
| 
 | from snek.system.model import now | ||||||
| 
 | 
 | ||||||
| class NotificationService(BaseService): | class NotificationService(BaseService): | ||||||
|     mapper_name = "notification" |     mapper_name = "notification" | ||||||
| 
 | 
 | ||||||
|  |     async def mark_as_read(self, user_uid, channel_message_uid): | ||||||
|  |         model = await self.get(user_uid, object_uid=channel_message_uid) | ||||||
|  |         model['read_at'] = now() | ||||||
|  |         await self.save(model) | ||||||
|  | 
 | ||||||
|  |     async def get_unread_stats(self,user_uid): | ||||||
|  |         records = await self.query("SELECT object_type, COUNT(*) as count FROM notification WHERE user_uid=:user_uid AND read_at IS NULL GROUP BY object_type",dict(user_uid=user_uid)) | ||||||
|  | 
 | ||||||
|     async def create(self, object_uid, object_type, user_uid, message): |     async def create(self, object_uid, object_type, user_uid, message): | ||||||
|         model = await self.new() |         model = await self.new() | ||||||
|         model["object_uid"] = object_uid |         model["object_uid"] = object_uid | ||||||
|  | |||||||
| @ -39,6 +39,11 @@ class RPCView(BaseView): | |||||||
|         def is_logged_in(self): |         def is_logged_in(self): | ||||||
|             return self.view.session.get("logged_in", False) |             return self.view.session.get("logged_in", False) | ||||||
| 
 | 
 | ||||||
|  |         async def mark_as_read(self, message_uid): | ||||||
|  |             self._require_login() | ||||||
|  |             await self.services.notification.mark_as_read(self.user_uid, message_uid) | ||||||
|  |             return True | ||||||
|  | 
 | ||||||
|         async def login(self, username, password): |         async def login(self, username, password): | ||||||
|             success = await self.services.user.validate_login(username, password) |             success = await self.services.user.validate_login(username, password) | ||||||
|             if not success: |             if not success: | ||||||
|  | |||||||
| @ -46,6 +46,9 @@ class WebView(BaseView): | |||||||
|         messages = [await self.app.services.channel_message.to_extended_dict(message) for message in await self.app.services.channel_message.offset( |         messages = [await self.app.services.channel_message.to_extended_dict(message) for message in await self.app.services.channel_message.offset( | ||||||
|             channel["uid"] |             channel["uid"] | ||||||
|         )] |         )] | ||||||
|  |         for message in messages: | ||||||
|  |             await self.app.services.notification.mark_as_read(self.session.get("uid"),message["uid"]) | ||||||
|  | 
 | ||||||
|         channels = [] |         channels = [] | ||||||
|         async for subscribed_channel in self.app.services.channel_member.find(user_uid=self.session.get("uid"), deleted_at=None, is_banned=False): |         async for subscribed_channel in self.app.services.channel_member.find(user_uid=self.session.get("uid"), deleted_at=None, is_banned=False): | ||||||
|             item = {} |             item = {} | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user