forked from Qortal-Forker/qortal
		
	Added optional filtering by reference in GET /chat/messages
This commit is contained in:
		@@ -69,6 +69,7 @@ public class ChatResource {
 | 
			
		||||
	public List<ChatMessage> searchChat(@QueryParam("before") Long before, @QueryParam("after") Long after,
 | 
			
		||||
			@QueryParam("txGroupId") Integer txGroupId,
 | 
			
		||||
			@QueryParam("involving") List<String> involvingAddresses,
 | 
			
		||||
			@QueryParam("reference") String reference,
 | 
			
		||||
			@Parameter(ref = "limit") @QueryParam("limit") Integer limit,
 | 
			
		||||
			@Parameter(ref = "offset") @QueryParam("offset") Integer offset,
 | 
			
		||||
			@Parameter(ref = "reverse") @QueryParam("reverse") Boolean reverse) {
 | 
			
		||||
@@ -87,11 +88,16 @@ public class ChatResource {
 | 
			
		||||
		if (after != null && after < 1500000000000L)
 | 
			
		||||
			throw ApiExceptionFactory.INSTANCE.createException(request, ApiError.INVALID_CRITERIA);
 | 
			
		||||
 | 
			
		||||
		byte[] referenceBytes = null;
 | 
			
		||||
		if (reference != null)
 | 
			
		||||
			referenceBytes = Base58.decode(reference);
 | 
			
		||||
 | 
			
		||||
		try (final Repository repository = RepositoryManager.getRepository()) {
 | 
			
		||||
			return repository.getChatRepository().getMessagesMatchingCriteria(
 | 
			
		||||
					before,
 | 
			
		||||
					after,
 | 
			
		||||
					txGroupId,
 | 
			
		||||
					referenceBytes,
 | 
			
		||||
					involvingAddresses,
 | 
			
		||||
					limit, offset, reverse);
 | 
			
		||||
		} catch (DataException e) {
 | 
			
		||||
 
 | 
			
		||||
@@ -46,6 +46,7 @@ public class ChatMessagesWebSocket extends ApiWebSocket {
 | 
			
		||||
						null,
 | 
			
		||||
						txGroupId,
 | 
			
		||||
						null,
 | 
			
		||||
						null,
 | 
			
		||||
						null, null, null);
 | 
			
		||||
 | 
			
		||||
				sendMessages(session, chatMessages);
 | 
			
		||||
@@ -72,6 +73,7 @@ public class ChatMessagesWebSocket extends ApiWebSocket {
 | 
			
		||||
					null,
 | 
			
		||||
					null,
 | 
			
		||||
					null,
 | 
			
		||||
					null,
 | 
			
		||||
					involvingAddresses,
 | 
			
		||||
					null, null, null);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@ public interface ChatRepository {
 | 
			
		||||
	 * Expects EITHER non-null txGroupID OR non-null sender and recipient addresses.
 | 
			
		||||
	 */
 | 
			
		||||
	public List<ChatMessage> getMessagesMatchingCriteria(Long before, Long after,
 | 
			
		||||
			Integer txGroupId, List<String> involving,
 | 
			
		||||
			Integer txGroupId, byte[] reference, List<String> involving,
 | 
			
		||||
			Integer limit, Integer offset, Boolean reverse) throws DataException;
 | 
			
		||||
 | 
			
		||||
	public ChatMessage toChatMessage(ChatTransactionData chatTransactionData) throws DataException;
 | 
			
		||||
 
 | 
			
		||||
@@ -23,7 +23,7 @@ public class HSQLDBChatRepository implements ChatRepository {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public List<ChatMessage> getMessagesMatchingCriteria(Long before, Long after, Integer txGroupId,
 | 
			
		||||
	public List<ChatMessage> getMessagesMatchingCriteria(Long before, Long after, Integer txGroupId, byte[] referenceBytes,
 | 
			
		||||
			List<String> involving, Integer limit, Integer offset, Boolean reverse)
 | 
			
		||||
			throws DataException {
 | 
			
		||||
		// Check args meet expectations
 | 
			
		||||
@@ -57,6 +57,11 @@ public class HSQLDBChatRepository implements ChatRepository {
 | 
			
		||||
			bindParams.add(after);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (referenceBytes != null) {
 | 
			
		||||
			whereClauses.add("reference = ?");
 | 
			
		||||
			bindParams.add(referenceBytes);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (txGroupId != null) {
 | 
			
		||||
			whereClauses.add("tx_group_id = " + txGroupId); // int safe to use literally
 | 
			
		||||
			whereClauses.add("recipient IS NULL");
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user