forked from open-webui/open-webui
feat: update shared chat
This commit is contained in:
parent
0b823f90e6
commit
9975cb17a9
3 changed files with 23 additions and 10 deletions
|
@ -98,7 +98,7 @@ class ChatTable:
|
|||
except:
|
||||
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
|
||||
chat = Chat.get(Chat.id == chat_id)
|
||||
# Check if the chat is already shared
|
||||
|
@ -122,6 +122,24 @@ class ChatTable:
|
|||
|
||||
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:
|
||||
try:
|
||||
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)
|
||||
if chat:
|
||||
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(
|
||||
**{**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:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
||||
|
|
|
@ -18,13 +18,8 @@
|
|||
const shareLocalChat = async () => {
|
||||
const _chat = chat;
|
||||
|
||||
let chatShareUrl = '';
|
||||
if (_chat.share_id) {
|
||||
chatShareUrl = `${window.location.origin}/s/${_chat.share_id}`;
|
||||
} else {
|
||||
const sharedChat = await shareChatById(localStorage.token, $chatId);
|
||||
chatShareUrl = `${window.location.origin}/s/${sharedChat.id}`;
|
||||
}
|
||||
const chatShareUrl = `${window.location.origin}/s/${sharedChat.id}`;
|
||||
|
||||
toast.success($i18n.t('Copied shared conversation URL to clipboard!'));
|
||||
copyToClipboard(chatShareUrl);
|
||||
|
|
Loading…
Reference in a new issue