Scroll infinite.
This commit is contained in:
		
							parent
							
								
									8c33bc63d6
								
							
						
					
					
						commit
						477ca5917a
					
				| @ -55,14 +55,14 @@ class ChannelMessageService(BaseService): | |||||||
|         results = [] |         results = [] | ||||||
|         offset = page * page_size  |         offset = page * page_size  | ||||||
|         try: |         try: | ||||||
|             if not timestamp: |             if timestamp: | ||||||
|                 async for model in self.query("SELECT * FROM channel_message WHERE channel_uid=:channel_uid ORDER BY created_at DESC LIMIT :page_size OFFSET :offset",dict(channel_uid=channel_uid, page_size=page_size, offset=offset)): |                 async for model in self.query("SELECT * FROM channel_message WHERE channel_uid=:channel_uid AND created_at < :timestamp ORDER BY created_at DESC LIMIT :page_size OFFSET :offset",dict(channel_uid=channel_uid, page_size=page_size, offset=offset, timestamp=timestamp)): | ||||||
|                     results.append(model) |                     results.append(model) | ||||||
|             elif page >= 0: |             elif page > 0: | ||||||
|                 async for model in self.query("SELECT * FROM channel_message WHERE channel_uid=:channel_uid WHERE created_at > :timestamp ORDER BY created_at DESC LIMIT :page_size OFFSET :offset",dict(channel_uid=channel_uid, page_size=page_size, offset=offset,timestamp=timestamp )): |                 async for model in self.query("SELECT * FROM channel_message WHERE channel_uid=:channel_uid WHERE created_at < :timestamp ORDER BY created_at DESC LIMIT :page_size",dict(channel_uid=channel_uid, page_size=page_size, offset=offset,timestamp=timestamp )): | ||||||
|                     results.append(model) |                     results.append(model) | ||||||
|             else:  |             else:  | ||||||
|                 async for model in self.query("SELECT * FROM channel_message WHERE channel_uid=:channel_uid WHERE created_at < :timestamp ORDER BY created_at DESC LIMIT :page_size OFFSET :offset",dict(channel_uid=channel_uid, page_size=page_size, offset=offset,timestamp=timestamp )): |                 async for model in self.query("SELECT * FROM channel_message WHERE channel_uid=:channel_uid ORDER BY created_at DESC LIMIT :page_size OFFSET :offset",dict(channel_uid=channel_uid, page_size=page_size, offset=offset)): | ||||||
|                     results.append(model) |                     results.append(model) | ||||||
| 
 | 
 | ||||||
|         except:  |         except:  | ||||||
|  | |||||||
| @ -55,6 +55,32 @@ | |||||||
|             rect.right <= (window.innerWidth || document.documentElement.clientWidth) |             rect.right <= (window.innerWidth || document.documentElement.clientWidth) | ||||||
|         ); |         ); | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     const messagesContainer = document.querySelector(".chat-messages"); | ||||||
|  |     async function loadExtra() { | ||||||
|  |      | ||||||
|  |         const fourthMessage = messagesContainer.querySelector(".chat-messages :nth-child(4)"); | ||||||
|  |         if(!fourthMessage){ | ||||||
|  |             return | ||||||
|  |         } | ||||||
|  |         const firstMessage = messagesContainer.querySelector(".message:first-child"); | ||||||
|  |         if(fourthMessage.dataset.seen){ | ||||||
|  |             return  | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         if(isElementVisible(fourthMessage)){ | ||||||
|  |             fourthMessage.dataset.seen = true | ||||||
|  |             console.info(channelUid, fourthMessage.dataset.created_at) | ||||||
|  |             const messages = await app.rpc.get_messages(channelUid, 1, fourthMessage.dataset.created_at); | ||||||
|  |             messages.forEach((message) => { | ||||||
|  |                 firstMessage.insertAdjacentHTML("beforebegin", message.html); | ||||||
|  |             }) | ||||||
|  |             console.info(messages) | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     messagesContainer.addEventListener("scroll",()=>{ | ||||||
|  |         loadExtra() | ||||||
|  |     }); | ||||||
|     function updateLayout(doScrollDown) { |     function updateLayout(doScrollDown) { | ||||||
|         const messagesContainer = document.querySelector(".chat-messages"); |         const messagesContainer = document.querySelector(".chat-messages"); | ||||||
|         //messagesContainer.scrollTop = messagesContainer.scrollHeight + 1000; |         //messagesContainer.scrollTop = messagesContainer.scrollHeight + 1000; | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user