Add last-message-reply-recipient-timeout setting for timing out reply-recipient in private messaging.

This commit is contained in:
Ali Moghnieh 2015-11-24 22:09:59 +00:00
parent 2d376bc72f
commit ca387687a5
4 changed files with 16 additions and 1 deletions

View file

@ -231,4 +231,6 @@ public interface ISettings extends IConf {
boolean isLastMessageReplyRecipient(); boolean isLastMessageReplyRecipient();
BigDecimal getMinimumPayAmount(); BigDecimal getMinimumPayAmount();
long getLastMessageReplyRecipientTimeout();
} }

View file

@ -1125,4 +1125,8 @@ public class Settings implements net.ess3.api.ISettings {
@Override public BigDecimal getMinimumPayAmount() { @Override public BigDecimal getMinimumPayAmount() {
return new BigDecimal(config.getString("minimum-pay-amount", "0.001")); return new BigDecimal(config.getString("minimum-pay-amount", "0.001"));
} }
@Override public long getLastMessageReplyRecipientTimeout() {
return config.getLong("last-message-reply-recipient-timeout", 180);
}
} }

View file

@ -33,6 +33,7 @@ public class SimpleMessageRecipient implements IMessageRecipient {
private final IEssentials ess; private final IEssentials ess;
private final IMessageRecipient parent; private final IMessageRecipient parent;
private long lastMessageMs;
private WeakReference<IMessageRecipient> replyRecipient; private WeakReference<IMessageRecipient> replyRecipient;
public SimpleMessageRecipient(IEssentials ess, IMessageRecipient parent) { public SimpleMessageRecipient(IEssentials ess, IMessageRecipient parent) {
@ -103,12 +104,15 @@ public class SimpleMessageRecipient implements IMessageRecipient {
if (ess.getSettings().isLastMessageReplyRecipient()) { if (ess.getSettings().isLastMessageReplyRecipient()) {
// If this recipient doesn't have a reply recipient, initiate by setting the first // If this recipient doesn't have a reply recipient, initiate by setting the first
// message sender to this recipient's replyRecipient. // message sender to this recipient's replyRecipient.
if (getReplyRecipient() == null || !getReplyRecipient().isReachable()) { long timeout = ess.getSettings().getLastMessageReplyRecipientTimeout() * 1000;
if (getReplyRecipient() == null || !getReplyRecipient().isReachable()
|| System.currentTimeMillis() - this.lastMessageMs > timeout) {
setReplyRecipient(sender); setReplyRecipient(sender);
} }
} else { // Old message functionality, always set the reply recipient to the last person who sent us a message. } else { // Old message functionality, always set the reply recipient to the last person who sent us a message.
setReplyRecipient(sender); setReplyRecipient(sender);
} }
this.lastMessageMs = System.currentTimeMillis();
return afk ? MessageResponse.SUCCESS_BUT_AFK : MessageResponse.SUCCESS; return afk ? MessageResponse.SUCCESS_BUT_AFK : MessageResponse.SUCCESS;
} }

View file

@ -539,6 +539,11 @@ use-bukkit-permissions: false
# Minimum acceptable amount to be used in /pay. # Minimum acceptable amount to be used in /pay.
minimum-pay-amount: 0.001 minimum-pay-amount: 0.001
# If last-message-reply-recipient is true, this specifies the duration, in seconds, that would need to elapse for the
# reply-recipient to update when receiving a message.
# Default is 180 (3 minutes)
last-message-reply-recipient-timeout: 180
############################################################ ############################################################
# +------------------------------------------------------+ # # +------------------------------------------------------+ #
# | EssentialsHelp | # # | EssentialsHelp | #