diff --git a/controllers/chat.go b/controllers/chat.go index ac8ac65..d7070b3 100644 --- a/controllers/chat.go +++ b/controllers/chat.go @@ -31,8 +31,7 @@ func (c *ApiController) GetGlobalChats() { } func (c *ApiController) GetChats() { - owner := c.Input().Get("owner") - + owner := "admin" chats, err := object.GetChats(owner) if err != nil { c.ResponseError(err.Error()) @@ -81,6 +80,7 @@ func (c *ApiController) AddChat() { return } + chat.Owner = "admin" success, err := object.AddChat(&chat) if err != nil { c.ResponseError(err.Error()) diff --git a/controllers/message.go b/controllers/message.go index fb77e9a..ce188ac 100644 --- a/controllers/message.go +++ b/controllers/message.go @@ -35,27 +35,26 @@ func (c *ApiController) GetGlobalMessages() { } func (c *ApiController) GetMessages() { - owner := c.Input().Get("owner") + owner := "admin" chat := c.Input().Get("chat") - if owner != "" && chat == "" { + if chat == "" { messages, err := object.GetMessages(owner) if err != nil { c.ResponseError(err.Error()) return } c.ResponseOk(messages) - } else if chat != "" && owner == "" { - messages, err := object.GetChatMessages(chat) - if err != nil { - c.ResponseError(err.Error()) - return - } - c.ResponseOk(messages) - } else { - c.ResponseError("Invalid get messages request") return } + + messages, err := object.GetChatMessages(chat) + if err != nil { + c.ResponseError(err.Error()) + return + } + + c.ResponseOk(messages) } func (c *ApiController) GetMessage() { diff --git a/controllers/provider.go b/controllers/provider.go index f05e632..37179da 100644 --- a/controllers/provider.go +++ b/controllers/provider.go @@ -31,7 +31,7 @@ func (c *ApiController) GetGlobalProviders() { } func (c *ApiController) GetProviders() { - owner := c.Input().Get("owner") + owner := "admin" providers, err := object.GetProviders(owner) if err != nil { @@ -81,6 +81,7 @@ func (c *ApiController) AddProvider() { return } + provider.Owner = "admin" success, err := object.AddProvider(&provider) if err != nil { c.ResponseError(err.Error()) diff --git a/object/chat.go b/object/chat.go index 6553f73..07132a8 100644 --- a/object/chat.go +++ b/object/chat.go @@ -58,7 +58,7 @@ func GetChats(owner string) ([]*Chat, error) { } func getChat(owner, name string) (*Chat, error) { - chat := Chat{Owner: owner, Name: name} + chat := Chat{Owner: "admin", Name: name} existed, err := adapter.engine.Get(&chat) if err != nil { return nil, err diff --git a/util/string.go b/util/string.go index 110444f..8fef583 100644 --- a/util/string.go +++ b/util/string.go @@ -72,7 +72,7 @@ func GetOwnerAndNameFromId(id string) (string, string) { panic(errors.New("GetOwnerAndNameFromId() error, wrong token count for ID: " + id)) } - return tokens[0], tokens[1] + return "admin", tokens[1] } func GetOwnerAndNameFromId3(id string) (string, string, string) { diff --git a/web/package.json b/web/package.json index 01f1e87..f8300f3 100644 --- a/web/package.json +++ b/web/package.json @@ -5,6 +5,8 @@ "dependencies": { "@ant-design/cssinjs": "^1.12.0", "@ant-design/icons": "4.6.2", + "@chatscope/chat-ui-kit-react": "^1.10.1", + "@chatscope/chat-ui-kit-styles": "^1.4.0", "@craco/craco": "6.4.5", "@cyntler/react-doc-viewer": "^1.5.2", "aliplayer-react": "^0.7.0", @@ -19,6 +21,7 @@ "eslint-plugin-unused-imports": "^2.0.0", "file-saver": "^2.0.2", "i18next": "^19.8.9", + "markdown-it": "^13.0.1", "moment": "^2.29.1", "papaparse": "^5.4.1", "rc-bullets": "^1.5.16", diff --git a/web/src/App.less b/web/src/App.less index d9ff819..747803e 100644 --- a/web/src/App.less +++ b/web/src/App.less @@ -100,3 +100,23 @@ img { color: black; } } + +.cs-message--incoming .cs-message__content { + background-color: #f3ecfc !important; +} + +.cs-message-input__content-editor-wrapper { + background-color: #f3ecfc !important; +} + +.cs-message-input__content-editor { + background-color: #f3ecfc !important; +} + +.cs-button--send { + color: #614d99; +} + +.cs-message--outgoing .cs-message__content { + background-color: #f3ecfc !important; +} diff --git a/web/src/ChatBox.js b/web/src/ChatBox.js index 2f92762..2326020 100644 --- a/web/src/ChatBox.js +++ b/web/src/ChatBox.js @@ -13,205 +13,47 @@ // limitations under the License. import React from "react"; -import {Alert, Avatar, Input, List, Spin} from "antd"; -import {CopyOutlined, DislikeOutlined, LikeOutlined, SendOutlined} from "@ant-design/icons"; -import i18next from "i18next"; +import {Avatar, ChatContainer, ConversationHeader, MainContainer, Message, MessageInput, MessageList} from "@chatscope/chat-ui-kit-react"; +import "@chatscope/chat-ui-kit-styles/dist/default/styles.min.css"; -const {TextArea} = Input; +const robot = "https://cdn.casbin.com/casdoor/resource/built-in/admin/gpt.png"; class ChatBox extends React.Component { constructor(props) { super(props); - this.state = { - inputValue: "", - }; - - this.listContainerRef = React.createRef(); } - componentDidUpdate(prevProps) { - if (prevProps.messages !== this.props.messages && this.props.messages !== undefined && this.props.messages !== null) { - this.scrollToListItem(this.props.messages.length); - } - } - - handleKeyDown = (e) => { - if (e.key === "Enter" && !e.shiftKey) { - e.preventDefault(); - - if (this.state.inputValue !== "") { - this.send(this.state.inputValue); - this.setState({inputValue: ""}); - } - } + handleSend = (innerHtml, textContent) => { + this.props.sendMessage(textContent); }; - scrollToListItem(index) { - const listContainerElement = this.listContainerRef.current; - - if (!listContainerElement) { - return; - } - - const targetItem = listContainerElement.querySelector( - `#chatbox-list-item-${index}` - ); - - if (!targetItem) { - return; - } - - const scrollDistance = targetItem.offsetTop - listContainerElement.offsetTop; - - listContainerElement.scrollTo({ - top: scrollDistance, - behavior: "smooth", - }); - } - - send = (text) => { - this.props.sendMessage(text); - this.setState({inputValue: ""}); - }; - - renderText(text) { - const lines = text.split("\n").map((line, index) => ( - - {line} -
-
- )); - - return
{lines}
; - } - - renderList() { - if (this.props.messages === undefined || this.props.messages === null) { - return ( -
- -
- ); - } - - return ( - -
- { - if (Object.keys(item).length === 0 && item.constructor === Object) { - return ; - } - - return ( - -
- } - title={ -
- { - !item.text.includes("#ERROR#") ? this.renderText(item.text) : ( - - ) - } -
- } - /> -
- - - -
-
-
- ); - }} - /> -
-
- - ); - } - - renderInput() { - return ( -
-
-