fixed bug: not storing deferred messages according to channel.

pull/2/head
Vyacheslav N. Boyko 2018-02-01 17:14:36 +03:00
parent b01beb535c
commit 093c5ea38f
4 changed files with 13 additions and 7 deletions

View File

@ -16,6 +16,10 @@ import java.util.Date;
@Table(name = "deferred_messages")
public class DeferredMessage extends BaseModel {
@Getter
@Setter
private String channelName;
@Getter
@Setter
private String sender;

View File

@ -11,5 +11,5 @@ import java.util.List;
*/
@Repository
public interface DeferredMessageRepository extends JpaRepository<DeferredMessage, Long> {
List<DeferredMessage> getDeferredMessagesByRecipientAndSentOrderByCreatedAt(String recipient, Boolean sent);
List<DeferredMessage> getDeferredMessagesByChannelNameAndRecipientAndSentOrderByCreatedAt(String channelName, String recipient, Boolean sent);
}

View File

@ -17,12 +17,13 @@ public class DeferredMessageService {
@Autowired
private DeferredMessageRepository deferredMessageRepository;
public List<DeferredMessage> getDeferredMessagesForUser(String user) {
return deferredMessageRepository.getDeferredMessagesByRecipientAndSentOrderByCreatedAt(user, false);
public List<DeferredMessage> getDeferredMessagesForUser(String channelName, String user) {
return deferredMessageRepository.getDeferredMessagesByChannelNameAndRecipientAndSentOrderByCreatedAt(channelName, user, false);
}
public void saveDeferredMessage(String sender, String recipient, String message) {
public void saveDeferredMessage(String channelName, String sender, String recipient, String message) {
DeferredMessage msg = new DeferredMessage();
msg.setChannelName(channelName);
msg.setSender(sender);
msg.setRecipient(recipient);
msg.setMessage(message);

View File

@ -55,16 +55,17 @@ public class DeferredMessagesListener extends ImprovedListenerAdapter {
}
String userName = event.getUser().getNick();
String channelname = this.getChannelName(event);
if (commands[0].equalsIgnoreCase("me")) {
// deferred to myself
deferredMessageService.saveDeferredMessage(userName, userName.toLowerCase(), commands[1]);
deferredMessageService.saveDeferredMessage(channelname, userName, userName.toLowerCase(), commands[1]);
this.sendNotice(event,"Saved message to "+userName);
} else {
if (commands[0].equalsIgnoreCase(event.getBot().getUserBot().getNick())) {
this.sendNotice(event,"Sorry, message cannot be deferred to me.");
} else {
// deferred to somebody
deferredMessageService.saveDeferredMessage(userName, commands[0].toLowerCase(), commands[1]);
deferredMessageService.saveDeferredMessage(channelname, userName, commands[0].toLowerCase(), commands[1]);
this.sendNotice(event, "Saved message to " + commands[0]);
}
}
@ -74,7 +75,7 @@ public class DeferredMessagesListener extends ImprovedListenerAdapter {
private void sendDeferredMessage(final GenericMessageEvent event) {
List<DeferredMessage> deferredMessages = deferredMessageService.getDeferredMessagesForUser(event.getUser().getNick().toLowerCase());
List<DeferredMessage> deferredMessages = deferredMessageService.getDeferredMessagesForUser(this.getChannelName(event), event.getUser().getNick().toLowerCase());
if (deferredMessages != null && deferredMessages.size() > 0) {
DeferredMessage msg = deferredMessages.get(0);
String more = "" + (deferredMessages.size() > 1 ? " ("+(deferredMessages.size()-1)+" message/-s more)" : "");