3
0
mirror of https://github.com/Qortal/qortal.git synced 2025-02-14 11:15:49 +00:00

add signatures to websockt

This commit is contained in:
AlphaX-Projects 2023-02-10 10:27:28 +01:00
parent e7a3e511bd
commit ea356d1026
2 changed files with 17 additions and 8 deletions

View File

@ -17,17 +17,19 @@ public class ActiveChats {
private Long timestamp; private Long timestamp;
private String sender; private String sender;
private String senderName; private String senderName;
private byte[] signature;
protected GroupChat() { protected GroupChat() {
/* JAXB */ /* JAXB */
} }
public GroupChat(int groupId, String groupName, Long timestamp, String sender, String senderName) { public GroupChat(int groupId, String groupName, Long timestamp, String sender, String senderName, byte[] signature) {
this.groupId = groupId; this.groupId = groupId;
this.groupName = groupName; this.groupName = groupName;
this.timestamp = timestamp; this.timestamp = timestamp;
this.sender = sender; this.sender = sender;
this.senderName = senderName; this.senderName = senderName;
this.signature = signature;
} }
public int getGroupId() { public int getGroupId() {
@ -49,6 +51,10 @@ public class ActiveChats {
public String getSenderName() { public String getSenderName() {
return this.senderName; return this.senderName;
} }
public byte[] getSignature() {
return this.signature;
}
} }
@XmlAccessorType(XmlAccessType.FIELD) @XmlAccessorType(XmlAccessType.FIELD)
@ -118,4 +124,4 @@ public class ActiveChats {
return this.direct; return this.direct;
} }
} }

View File

@ -177,11 +177,11 @@ public class HSQLDBChatRepository implements ChatRepository {
private List<GroupChat> getActiveGroupChats(String address) throws DataException { private List<GroupChat> getActiveGroupChats(String address) throws DataException {
// Find groups where address is a member and potential latest message details // Find groups where address is a member and potential latest message details
String groupsSql = "SELECT group_id, group_name, latest_timestamp, sender, sender_name " String groupsSql = "SELECT group_id, group_name, latest_timestamp, sender, sender_name, signature "
+ "FROM GroupMembers " + "FROM GroupMembers "
+ "JOIN Groups USING (group_id) " + "JOIN Groups USING (group_id) "
+ "LEFT OUTER JOIN LATERAL(" + "LEFT OUTER JOIN LATERAL("
+ "SELECT created_when AS latest_timestamp, sender, name AS sender_name " + "SELECT created_when AS latest_timestamp, sender, name AS sender_name, signature "
+ "FROM ChatTransactions " + "FROM ChatTransactions "
+ "JOIN Transactions USING (signature) " + "JOIN Transactions USING (signature) "
+ "LEFT OUTER JOIN Names AS SenderNames ON SenderNames.owner = sender " + "LEFT OUTER JOIN Names AS SenderNames ON SenderNames.owner = sender "
@ -205,8 +205,9 @@ public class HSQLDBChatRepository implements ChatRepository {
String sender = resultSet.getString(4); String sender = resultSet.getString(4);
String senderName = resultSet.getString(5); String senderName = resultSet.getString(5);
byte[] signature = resultSet.getBytes(6);
GroupChat groupChat = new GroupChat(groupId, groupName, timestamp, sender, senderName); GroupChat groupChat = new GroupChat(groupId, groupName, timestamp, sender, senderName, signature);
groupChats.add(groupChat); groupChats.add(groupChat);
} while (resultSet.next()); } while (resultSet.next());
} }
@ -215,7 +216,7 @@ public class HSQLDBChatRepository implements ChatRepository {
} }
// We need different SQL to handle group-less chat // We need different SQL to handle group-less chat
String grouplessSql = "SELECT created_when, sender, SenderNames.name " String grouplessSql = "SELECT created_when, sender, SenderNames.name, signature "
+ "FROM ChatTransactions " + "FROM ChatTransactions "
+ "JOIN Transactions USING (signature) " + "JOIN Transactions USING (signature) "
+ "LEFT OUTER JOIN Names AS SenderNames ON SenderNames.owner = sender " + "LEFT OUTER JOIN Names AS SenderNames ON SenderNames.owner = sender "
@ -228,15 +229,17 @@ public class HSQLDBChatRepository implements ChatRepository {
Long timestamp = null; Long timestamp = null;
String sender = null; String sender = null;
String senderName = null; String senderName = null;
byte[] signature = null;
if (resultSet != null) { if (resultSet != null) {
// We found a recipient-less, group-less CHAT message, so report its details // We found a recipient-less, group-less CHAT message, so report its details
timestamp = resultSet.getLong(1); timestamp = resultSet.getLong(1);
sender = resultSet.getString(2); sender = resultSet.getString(2);
senderName = resultSet.getString(3); senderName = resultSet.getString(3);
signature = resultSet.getBytes(4);
} }
GroupChat groupChat = new GroupChat(0, null, timestamp, sender, senderName); GroupChat groupChat = new GroupChat(0, null, timestamp, sender, senderName, signature);
groupChats.add(groupChat); groupChats.add(groupChat);
} catch (SQLException e) { } catch (SQLException e) {
throw new DataException("Unable to fetch active group chats from repository", e); throw new DataException("Unable to fetch active group chats from repository", e);
@ -291,4 +294,4 @@ public class HSQLDBChatRepository implements ChatRepository {
return directChats; return directChats;
} }
} }