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 (
-
);
@@ -1467,7 +1467,9 @@ class TradeBox extends Component {
- ) : <>>}
+ ) : (
+ <>>
+ )}
{' '}