Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tidy up nick change handling. #695

Merged
merged 2 commits into from Jul 4, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 0 additions & 2 deletions src/main/java/com/dmdirc/Query.java
Expand Up @@ -176,8 +176,6 @@ public void onNickChanged(final NickChangeEvent event) {
final ClientInfo client = event.getClient();
final String oldNick = event.getOldNick();
if (client.getNickname().equals(getNickname())) {
connection.updateQuery(this, oldNick, client.getNickname());

getEventBus().publish(new QueryNickChangeEvent(this, oldNick, client.getNickname()));
updateTitle();

Expand Down
32 changes: 20 additions & 12 deletions src/main/java/com/dmdirc/Server.java
Expand Up @@ -79,11 +79,11 @@
import javax.annotation.Nullable;
import javax.net.ssl.SSLException;

import net.engio.mbassy.listener.Handler;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import net.engio.mbassy.listener.Handler;

import static com.dmdirc.util.LogUtils.APP_ERROR;
import static com.google.common.base.Preconditions.checkNotNull;

Expand Down Expand Up @@ -144,7 +144,7 @@ public class Server implements Connection {
private final ServerEventHandler eventHandler;
/** Our ignore list. */
private final IgnoreList ignoreList = new IgnoreList();
/** Our string convertor. */
/** Our string converter. */
private StringConverter converter = new DefaultStringConverter();
/** ParserFactory we use for creating parsers. */
private final ParserFactory parserFactory;
Expand Down Expand Up @@ -483,15 +483,23 @@ public Query getQuery(final String host, final boolean focus) {
return queries.get(lnick);
}

@Override
public void updateQuery(final Query query, final String oldNick, final String newNick) {
windowModel.getInputModel().get().getTabCompleter()
.removeEntry(TabCompletionType.QUERY_NICK, oldNick);
windowModel.getInputModel().get().getTabCompleter()
.addEntry(TabCompletionType.QUERY_NICK, newNick);
/**
* Updates tab completer and queries after a user changes their nickname.
*
* @param client The client that changed nickname
* @param oldNick The old nickname they used.
*/
void handleNickChange(final ClientInfo client, final String oldNick) {
if (queries.containsKey(converter.toLowerCase(oldNick))) {
windowModel.getInputModel().get().getTabCompleter()
.removeEntry(TabCompletionType.QUERY_NICK, oldNick);
windowModel.getInputModel().get().getTabCompleter()
.addEntry(TabCompletionType.QUERY_NICK, client.getNickname());

queries.put(converter.toLowerCase(newNick), query);
queries.remove(converter.toLowerCase(oldNick));
queries.put(
converter.toLowerCase(client.getNickname()),
queries.remove(converter.toLowerCase(oldNick)));
}
}

@Override
Expand Down Expand Up @@ -1005,7 +1013,7 @@ public void requestUserInfo(final User user) {
* {@code orElse} value.
*/
private <T> T withParserReadLock(
final Function<? super Parser, ? extends T> func,
final Function<Parser, T> func,
final T orElse) {
try {
parserLock.readLock().lock();
Expand Down
6 changes: 4 additions & 2 deletions src/main/java/com/dmdirc/ServerEventHandler.java
Expand Up @@ -93,11 +93,11 @@

import javax.annotation.Nonnull;

import net.engio.mbassy.listener.Handler;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import net.engio.mbassy.listener.Handler;

import static com.dmdirc.util.LogUtils.APP_ERROR;
import static com.dmdirc.util.LogUtils.USER_ERROR;

Expand Down Expand Up @@ -408,6 +408,8 @@ public void onNickChanged(final NickChangeEvent event) {
event.getOldNick(), event.getClient().getNickname()));
owner.updateTitle();
}

owner.handleNickChange(event.getClient(), event.getOldNick());
}

@Handler
Expand Down
13 changes: 0 additions & 13 deletions src/main/java/com/dmdirc/interfaces/Connection.java
Expand Up @@ -292,19 +292,6 @@ public interface Connection {
*/
void updateIgnoreList();

/**
* Updates the state of this server following a nick change of someone that the user has a query
* open with. Namely, this updates the tabcompleter with the new name, and ensures that the
* <code>queries</code> map uses the correct nickname.
*
* @param query The query object being updated
* @param oldNick The old nickname of the user
* @param newNick The new nickname of the user
*
* @since 0.6.4
*/
void updateQuery(final Query query, final String oldNick, final String newNick);

/**
* Updates the name and title of this window.
*/
Expand Down