From c2fb0e27a0d2d08f5ca9b34b4e5c1632dbf00355 Mon Sep 17 00:00:00 2001 From: Reckless_Satoshi Date: Tue, 15 Nov 2022 08:38:31 -0800 Subject: [PATCH] Fixes for API chatroom initialization --- chat/views.py | 14 ++++++++++++-- frontend/src/basic/Main.tsx | 8 +++++++- frontend/src/basic/OrderPage/index.js | 5 +++-- .../EncryptedChat/EncryptedTurtleChat/index.tsx | 16 ++++++++++------ frontend/src/components/TradeBox/index.js | 10 ++++++---- 5 files changed, 38 insertions(+), 15 deletions(-) diff --git a/chat/views.py b/chat/views.py index 92672214..f120ec5f 100644 --- a/chat/views.py +++ b/chat/views.py @@ -48,7 +48,17 @@ class ChatView(viewsets.ViewSet): ) queryset = Message.objects.filter(order=order, index__gt=offset) - chatroom = ChatRoom.objects.get(order=order) + chatroom, created = ChatRoom.objects.get_or_create( + id=order_id, + order=order, + room_group_name=f"chat_order_{order_id}", + defaults={ + "maker": order.maker, + "maker_connected": order.maker == request.user, + "taker": order.taker, + "taker_connected": order.taker == request.user, + }, + ) # Poor idea: is_peer_connected() mockup. Update connection status based on last time a GET request was sent if chatroom.maker == request.user: @@ -171,7 +181,7 @@ class ChatView(viewsets.ViewSet): # if offset is given, reply with messages offset = serializer.data.get("offset", None) - if offset: + if offset or offset == 0: queryset = Message.objects.filter(order=order, index__gt=offset) messages = [] for message in queryset: diff --git a/frontend/src/basic/Main.tsx b/frontend/src/basic/Main.tsx index f8629ccf..98690f24 100644 --- a/frontend/src/basic/Main.tsx +++ b/frontend/src/basic/Main.tsx @@ -333,7 +333,13 @@ const Main = ({ settings, setSettings }: MainProps): JSX.Element => { appear={slideDirection.in != undefined} >
- +
)} diff --git a/frontend/src/basic/OrderPage/index.js b/frontend/src/basic/OrderPage/index.js index 2f9ce481..d77e3d51 100644 --- a/frontend/src/basic/OrderPage/index.js +++ b/frontend/src/basic/OrderPage/index.js @@ -514,11 +514,11 @@ class OrderPage extends Component { }; tokenDialog = () => { - return systemClient.getCookie('robot_token') ? ( + return systemClient.getItem('robot_token') ? ( this.setState({ openStoreToken: false })} - onClickCopy={() => systemClient.copyToClipboard(systemClient.getCookie('robot_token'))} + onClickCopy={() => systemClient.copyToClipboard(systemClient.getItem('robot_token'))} copyIconColor={this.props.copiedToken ? 'inherit' : 'primary'} onClickBack={() => this.setState({ openStoreToken: false })} onClickDone={() => @@ -532,6 +532,7 @@ class OrderPage extends Component { this.setState({ openStoreToken: false })} + setPage={this.props.setPage} /> ); }; diff --git a/frontend/src/components/TradeBox/EncryptedChat/EncryptedTurtleChat/index.tsx b/frontend/src/components/TradeBox/EncryptedChat/EncryptedTurtleChat/index.tsx index 6ad9509e..374606a0 100644 --- a/frontend/src/components/TradeBox/EncryptedChat/EncryptedTurtleChat/index.tsx +++ b/frontend/src/components/TradeBox/EncryptedChat/EncryptedTurtleChat/index.tsx @@ -169,12 +169,14 @@ const EncryptedTurtleChat: React.FC = ({ apiClient .post(baseUrl, `/api/chat`, { PGP_message: value, - offset: lastIndex + offset: lastIndex, }) .then((response) => { - if (response) { + if (response) { setPeerConnected(response.peer_connected); - setServerMessages(response.messages); + if (response.messages) { + setServerMessages(response.messages); + } } }) .finally(() => { @@ -192,12 +194,14 @@ const EncryptedTurtleChat: React.FC = ({ .post(baseUrl, `/api/chat/`, { PGP_message: encryptedMessage.toString().split('\n').join('\\'), order_id: orderId, - offset: lastIndex + offset: lastIndex, }) .then((response) => { - if (response) { + if (response) { setPeerConnected(response.peer_connected); - setServerMessages(response.messages); + if (response.messages) { + setServerMessages(response.messages); + } } }) .finally(() => { diff --git a/frontend/src/components/TradeBox/index.js b/frontend/src/components/TradeBox/index.js index a55de870..17e16e1b 100644 --- a/frontend/src/components/TradeBox/index.js +++ b/frontend/src/components/TradeBox/index.js @@ -74,7 +74,7 @@ class TradeBox extends Component { badInvoice: false, badAddress: false, badStatement: false, - turtleMode: window.ReactNativeWebView !== undefined + turtleMode: window.ReactNativeWebView !== undefined, }; } @@ -1245,7 +1245,7 @@ class TradeBox extends Component { return ( -