forked from open-webui/open-webui
		
	feat: update shared chat
This commit is contained in:
		
							parent
							
								
									865c268312
								
							
						
					
					
						commit
						dd9cbd0ab9
					
				
					 3 changed files with 23 additions and 10 deletions
				
			
		|  | @ -98,7 +98,7 @@ class ChatTable: | ||||||
|         except: |         except: | ||||||
|             return None |             return None | ||||||
| 
 | 
 | ||||||
|     def insert_shared_chat(self, chat_id: str) -> Optional[ChatModel]: |     def insert_shared_chat_by_chat_id(self, chat_id: str) -> Optional[ChatModel]: | ||||||
|         # Get the existing chat to share |         # Get the existing chat to share | ||||||
|         chat = Chat.get(Chat.id == chat_id) |         chat = Chat.get(Chat.id == chat_id) | ||||||
|         # Check if the chat is already shared |         # Check if the chat is already shared | ||||||
|  | @ -122,6 +122,24 @@ class ChatTable: | ||||||
| 
 | 
 | ||||||
|         return shared_chat if (shared_result and result) else None |         return shared_chat if (shared_result and result) else None | ||||||
| 
 | 
 | ||||||
|  |     def update_shared_chat_by_chat_id(self, chat_id: str) -> Optional[ChatModel]: | ||||||
|  |         try: | ||||||
|  |             print("update_shared_chat_by_id") | ||||||
|  |             chat = Chat.get(Chat.id == chat_id) | ||||||
|  |             print(chat) | ||||||
|  | 
 | ||||||
|  |             query = Chat.update( | ||||||
|  |                 title=chat.title, | ||||||
|  |                 chat=chat.chat, | ||||||
|  |             ).where(Chat.id == chat.share_id) | ||||||
|  | 
 | ||||||
|  |             query.execute() | ||||||
|  | 
 | ||||||
|  |             chat = Chat.get(Chat.id == chat.share_id) | ||||||
|  |             return ChatModel(**model_to_dict(chat)) | ||||||
|  |         except: | ||||||
|  |             return None | ||||||
|  | 
 | ||||||
|     def delete_shared_chat_by_chat_id(self, chat_id: str) -> bool: |     def delete_shared_chat_by_chat_id(self, chat_id: str) -> bool: | ||||||
|         try: |         try: | ||||||
|             query = Chat.delete().where(Chat.user_id == f"shared-{chat_id}") |             query = Chat.delete().where(Chat.user_id == f"shared-{chat_id}") | ||||||
|  |  | ||||||
|  | @ -199,12 +199,12 @@ async def share_chat_by_id(id: str, user=Depends(get_current_user)): | ||||||
|     chat = Chats.get_chat_by_id_and_user_id(id, user.id) |     chat = Chats.get_chat_by_id_and_user_id(id, user.id) | ||||||
|     if chat: |     if chat: | ||||||
|         if chat.share_id: |         if chat.share_id: | ||||||
|             shared_chat = Chats.get_chat_by_id_and_user_id(chat.share_id, "shared") |             shared_chat = Chats.update_shared_chat_by_chat_id(chat.id) | ||||||
|             return ChatResponse( |             return ChatResponse( | ||||||
|                 **{**shared_chat.model_dump(), "chat": json.loads(shared_chat.chat)} |                 **{**shared_chat.model_dump(), "chat": json.loads(shared_chat.chat)} | ||||||
|             ) |             ) | ||||||
| 
 | 
 | ||||||
|         shared_chat = Chats.insert_shared_chat(chat.id) |         shared_chat = Chats.insert_shared_chat_by_chat_id(chat.id) | ||||||
|         if not shared_chat: |         if not shared_chat: | ||||||
|             raise HTTPException( |             raise HTTPException( | ||||||
|                 status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, |                 status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, | ||||||
|  |  | ||||||
|  | @ -18,13 +18,8 @@ | ||||||
| 	const shareLocalChat = async () => { | 	const shareLocalChat = async () => { | ||||||
| 		const _chat = chat; | 		const _chat = chat; | ||||||
| 
 | 
 | ||||||
| 		let chatShareUrl = ''; | 		const sharedChat = await shareChatById(localStorage.token, $chatId); | ||||||
| 		if (_chat.share_id) { | 		const chatShareUrl = `${window.location.origin}/s/${sharedChat.id}`; | ||||||
| 			chatShareUrl = `${window.location.origin}/s/${_chat.share_id}`; |  | ||||||
| 		} else { |  | ||||||
| 			const sharedChat = await shareChatById(localStorage.token, $chatId); |  | ||||||
| 			chatShareUrl = `${window.location.origin}/s/${sharedChat.id}`; |  | ||||||
| 		} |  | ||||||
| 
 | 
 | ||||||
| 		toast.success($i18n.t('Copied shared conversation URL to clipboard!')); | 		toast.success($i18n.t('Copied shared conversation URL to clipboard!')); | ||||||
| 		copyToClipboard(chatShareUrl); | 		copyToClipboard(chatShareUrl); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Timothy J. Baek
						Timothy J. Baek