mirror of
https://github.com/vanitasvitae/Smack.git
synced 2025-12-12 05:51:08 +01:00
Introduce XMPPConnection.add(Message|Presence)Interceptor
add deprecate addStanzaInterceptor().
This commit is contained in:
parent
5db6191110
commit
e2d206e741
24 changed files with 419 additions and 102 deletions
|
|
@ -1,6 +1,6 @@
|
|||
/**
|
||||
*
|
||||
* Copyright 2017-2018 Florian Schmaus.
|
||||
* Copyright 2017-2019 Florian Schmaus.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -24,7 +24,6 @@ import java.util.concurrent.CopyOnWriteArraySet;
|
|||
|
||||
import org.jivesoftware.smack.AsyncButOrdered;
|
||||
import org.jivesoftware.smack.Manager;
|
||||
import org.jivesoftware.smack.SmackException.NotConnectedException;
|
||||
import org.jivesoftware.smack.StanzaListener;
|
||||
import org.jivesoftware.smack.XMPPConnection;
|
||||
import org.jivesoftware.smack.filter.AndFilter;
|
||||
|
|
@ -36,6 +35,7 @@ import org.jivesoftware.smack.filter.StanzaExtensionFilter;
|
|||
import org.jivesoftware.smack.filter.StanzaFilter;
|
||||
import org.jivesoftware.smack.filter.ToTypeFilter;
|
||||
import org.jivesoftware.smack.packet.Message;
|
||||
import org.jivesoftware.smack.packet.MessageView;
|
||||
import org.jivesoftware.smack.packet.Presence;
|
||||
import org.jivesoftware.smack.packet.Stanza;
|
||||
import org.jivesoftware.smack.roster.AbstractRosterListener;
|
||||
|
|
@ -124,22 +124,20 @@ public final class ChatManager extends Manager {
|
|||
}
|
||||
}, INCOMING_MESSAGE_FILTER);
|
||||
|
||||
connection.addStanzaInterceptor(new StanzaListener() {
|
||||
@Override
|
||||
public void processStanza(Stanza stanza) throws NotConnectedException, InterruptedException {
|
||||
Message message = (Message) stanza;
|
||||
if (!shouldAcceptMessage(message)) {
|
||||
return;
|
||||
}
|
||||
|
||||
final EntityBareJid to = message.getTo().asEntityBareJidOrThrow();
|
||||
final Chat chat = chatWith(to);
|
||||
|
||||
for (OutgoingChatMessageListener listener : outgoingListeners) {
|
||||
listener.newOutgoingMessage(to, message, chat);
|
||||
}
|
||||
connection.addMessageInterceptor(messageBuilder -> {
|
||||
if (!shouldAcceptMessage(messageBuilder)) {
|
||||
return;
|
||||
}
|
||||
}, OUTGOING_MESSAGE_FILTER);
|
||||
|
||||
final EntityBareJid to = messageBuilder.getTo().asEntityBareJidOrThrow();
|
||||
final Chat chat = chatWith(to);
|
||||
|
||||
for (OutgoingChatMessageListener listener : outgoingListeners) {
|
||||
listener.newOutgoingMessage(to, messageBuilder, chat);
|
||||
}
|
||||
}, m -> {
|
||||
return OUTGOING_MESSAGE_FILTER.accept(m);
|
||||
});
|
||||
|
||||
Roster roster = Roster.getInstanceFor(connection);
|
||||
roster.addRosterListener(new AbstractRosterListener() {
|
||||
|
|
@ -181,8 +179,8 @@ public final class ChatManager extends Manager {
|
|||
});
|
||||
}
|
||||
|
||||
private boolean shouldAcceptMessage(Message message) {
|
||||
if (!message.getBodies().isEmpty()) {
|
||||
private boolean shouldAcceptMessage(MessageView message) {
|
||||
if (message.hasExtension(Message.Body.QNAME)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/**
|
||||
*
|
||||
* Copyright 2017 Florian Schmaus.
|
||||
* Copyright 2017-2019 Florian Schmaus.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -16,12 +16,12 @@
|
|||
*/
|
||||
package org.jivesoftware.smack.chat2;
|
||||
|
||||
import org.jivesoftware.smack.packet.Message;
|
||||
import org.jivesoftware.smack.packet.MessageBuilder;
|
||||
|
||||
import org.jxmpp.jid.EntityBareJid;
|
||||
|
||||
public interface OutgoingChatMessageListener {
|
||||
|
||||
void newOutgoingMessage(EntityBareJid to, Message message, Chat chat);
|
||||
void newOutgoingMessage(EntityBareJid to, MessageBuilder messageBuilder, Chat chat);
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue