fixed bug: double answering with deferred message if user prints into chat very quickly

pull/11/head
bvn13 2019-11-04 10:12:52 +03:00
parent 6cbf281698
commit ebb4002892
3 changed files with 17 additions and 11 deletions

View File

@ -6,7 +6,7 @@
<groupId>ru.bvn13</groupId>
<artifactId>jircbot</artifactId>
<version>2.2.1</version>
<version>2.2.2</version>
<packaging>jar</packaging>
<parent>
@ -18,8 +18,6 @@
<properties>
<bot.version>2.2.1</bot.version>
<java.version>1.8</java.version>
<pircbotx.version>2.3-SNAPSHOT</pircbotx.version>

View File

@ -16,7 +16,10 @@ import ru.bvn13.jircbot.documentation.DocumentationProvider;
import ru.bvn13.jircbot.documentation.ListenerDescription;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import static ru.bvn13.jircbot.documentation.ListenerDescription.CommandDescription;
@ -36,6 +39,8 @@ public class DeferredMessagesListener extends ImprovedListenerAdapter implements
private DeferredMessageService deferredMessageService;
private Map<String, Object> mutexes = new ConcurrentHashMap<>();
@Autowired
public DeferredMessagesListener(DocumentationProvider documentationProvider) {
registerDescription(documentationProvider);
@ -127,12 +132,14 @@ public class DeferredMessagesListener extends ImprovedListenerAdapter implements
}
private void sendDeferredMessage(final MessageEvent event) {
if (event.getUser() != null) {
String userIdent = event.getUser().getNick() + "!" + event.getUser().getLogin() + "@" + event.getUser().getHostname();
Object mutex = mutexes.containsKey(userIdent) ? mutexes.get(userIdent) : new Object();
mutexes.put(userIdent, mutex);
synchronized (mutex) {
List<DeferredMessage> deferredMessages = deferredMessageService.getDeferredMessagesForUser(this.getChannelName(event), event.getUser().getNick().toLowerCase(), userIdent);
if (deferredMessages != null && deferredMessages.size() > 0) {
DeferredMessage msg = deferredMessages.get(0);
@ -142,6 +149,7 @@ public class DeferredMessagesListener extends ImprovedListenerAdapter implements
}
}
}
}
@Override
public void onJoin(JoinEvent event) throws Exception {

View File

@ -1,5 +1,5 @@
jircbot.version=2.2.1
jircbot.version=2.2.2
jircbot.config=config.json