Skip to content

Commit

Permalink
Remove notification for match available
Browse files Browse the repository at this point in the history
  • Loading branch information
BlackYps committed Nov 15, 2020
1 parent a67ca04 commit 30d36c9
Show file tree
Hide file tree
Showing 8 changed files with 2 additions and 164 deletions.
4 changes: 0 additions & 4 deletions src/main/java/com/faforever/client/game/GameService.java
Original file line number Diff line number Diff line change
Expand Up @@ -496,10 +496,6 @@ public Game getByUid(int uid) {
return game;
}

public void addOnMatchmakerQueueNotificationListener(Consumer<MatchmakerInfoMessage> listener) {
fafService.addOnMessageListener(MatchmakerInfoMessage.class, listener);
}

public CompletableFuture<Void> startSearchMatchmaker() {

inMatchmakerQueue.set(true);
Expand Down
55 changes: 0 additions & 55 deletions src/main/java/com/faforever/client/main/MainController.java
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,6 @@ public void initialize() {
notificationService.addPersistentNotificationListener(change -> runLater(() -> updateNotificationsButton(change.getSet())));
notificationService.addImmediateNotificationListener(notification -> runLater(() -> displayImmediateNotification(notification)));
notificationService.addTransientNotificationListener(notification -> runLater(() -> transientNotificationsController.addNotification(notification)));
gameService.addOnMatchmakerQueueNotificationListener(this::onMatchmakerMessage);
// Always load chat immediately so messages or joined channels don't need to be cached until we display them.
getView(NavigationItem.CHAT);

Expand Down Expand Up @@ -321,60 +320,6 @@ private void updateNotificationsButton(Collection<? extends PersistentNotificati
notificationButton.pseudoClassStateChanged(NOTIFICATION_ERROR_PSEUDO_CLASS, highestSeverity == Severity.ERROR);
}


//TODO: adapt for TMM
private void onMatchmakerMessage(MatchmakerInfoMessage message) {
if (message.getQueues() == null
|| gameService.gameRunningProperty().get()
|| gameService.inMatchmakerQueueProperty().get()
|| !preferencesService.getPreferences().getNotification().getLadder1v1ToastEnabled()
|| !playerService.getCurrentPlayer().isPresent()) {
return;
}

Player currentPlayer = playerService.getCurrentPlayer().get();

int deviationFor80PercentQuality = (int) (ratingBeta / 2.5f);
int deviationFor75PercentQuality = (int) (ratingBeta / 1.25f);
float leaderboardRatingDeviation = currentPlayer.getLeaderboardRatingDeviation();

Function<MatchmakerInfoMessage.MatchmakerQueue, List<RatingRange>> ratingRangesSupplier;
if (leaderboardRatingDeviation <= deviationFor80PercentQuality) {
ratingRangesSupplier = MatchmakerInfoMessage.MatchmakerQueue::getBoundary80s;
} else if (leaderboardRatingDeviation <= deviationFor75PercentQuality) {
ratingRangesSupplier = MatchmakerInfoMessage.MatchmakerQueue::getBoundary75s;
} else {
return;
}

float leaderboardRatingMean = currentPlayer.getLeaderboardRatingMean();
boolean showNotification = false;
for (MatchmakerInfoMessage.MatchmakerQueue matchmakerQueue : message.getQueues()) {
if (!Objects.equals("ladder1v1", matchmakerQueue.getQueueName())) {
continue;
}
List<RatingRange> ratingRanges = ratingRangesSupplier.apply(matchmakerQueue);

for (RatingRange ratingRange : ratingRanges) {
if (ratingRange.getMin() <= leaderboardRatingMean && leaderboardRatingMean <= ratingRange.getMax()) {
showNotification = true;
break;
}
}
}

if (!showNotification) {
return;
}

notificationService.addNotification(new TransientNotification(
i18n.get("ranked1v1.notification.title"),
i18n.get("ranked1v1.notification.message"),
uiService.getThemeImage(UiService.LADDER_1V1_IMAGE),
event -> eventBus.post(new OpenTeamMatchmakingEvent())
));
}

public void display() {
eventBus.post(UpdateApplicationBadgeEvent.ofNewValue(0));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ public class NotificationsPrefs {
private final BooleanProperty errorSoundEnabled;
private final BooleanProperty friendOnlineToastEnabled;
private final BooleanProperty friendOfflineToastEnabled;
private final BooleanProperty ladder1v1ToastEnabled;
private final BooleanProperty friendOnlineSoundEnabled;
private final BooleanProperty friendOfflineSoundEnabled;
private final BooleanProperty friendJoinsGameSoundEnabled;
Expand All @@ -42,7 +41,6 @@ public NotificationsPrefs() {
toastPosition = new SimpleObjectProperty<>(ToastPosition.BOTTOM_RIGHT);
friendOnlineToastEnabled = new SimpleBooleanProperty(true);
friendOfflineToastEnabled = new SimpleBooleanProperty(true);
ladder1v1ToastEnabled = new SimpleBooleanProperty(true);
friendOnlineSoundEnabled = new SimpleBooleanProperty(true);
friendOfflineSoundEnabled = new SimpleBooleanProperty(true);
friendJoinsGameSoundEnabled = new SimpleBooleanProperty(true);
Expand Down Expand Up @@ -153,18 +151,6 @@ public BooleanProperty friendOfflineToastEnabledProperty() {
return friendOfflineToastEnabled;
}

public boolean getLadder1v1ToastEnabled() {
return ladder1v1ToastEnabled.get();
}

public void setLadder1v1ToastEnabled(boolean ladder1v1ToastEnabled) {
this.ladder1v1ToastEnabled.set(ladder1v1ToastEnabled);
}

public BooleanProperty ladder1v1ToastEnabledProperty() {
return ladder1v1ToastEnabled;
}

public boolean isFriendOnlineSoundEnabled() {
return friendOnlineSoundEnabled.get();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import com.faforever.client.config.ClientProperties;
import com.faforever.client.fx.Controller;
import com.faforever.client.fx.JavaFxUtil;
import com.faforever.client.fx.NodeListCell;
import com.faforever.client.fx.PlatformService;
import com.faforever.client.fx.StringListCell;
import com.faforever.client.i18n.I18n;
Expand Down Expand Up @@ -112,7 +111,6 @@ public class SettingsController implements Controller<Node> {
public CheckBox playFriendJoinsGameSoundCheckBox;
public CheckBox playFriendPlaysGameSoundCheckBox;
public CheckBox displayPmReceivedToastCheckBox;
public CheckBox displayLadder1v1ToastCheckBox;
public CheckBox playPmReceivedSoundCheckBox;
public CheckBox afterGameReviewCheckBox;
public Region settingsRoot;
Expand Down Expand Up @@ -284,7 +282,6 @@ public void initialize() {
displayFriendJoinsGameToastCheckBox.selectedProperty().bindBidirectional(preferences.getNotification().friendJoinsGameToastEnabledProperty());
displayFriendPlaysGameToastCheckBox.selectedProperty().bindBidirectional(preferences.getNotification().friendPlaysGameToastEnabledProperty());
displayPmReceivedToastCheckBox.selectedProperty().bindBidirectional(preferences.getNotification().privateMessageToastEnabledProperty());
displayLadder1v1ToastCheckBox.selectedProperty().bindBidirectional(preferences.getNotification().ladder1v1ToastEnabledProperty());
playFriendOnlineSoundCheckBox.selectedProperty().bindBidirectional(preferences.getNotification().friendOnlineSoundEnabledProperty());
playFriendOfflineSoundCheckBox.selectedProperty().bindBidirectional(preferences.getNotification().friendOfflineSoundEnabledProperty());
playFriendJoinsGameSoundCheckBox.selectedProperty().bindBidirectional(preferences.getNotification().friendJoinsGameSoundEnabledProperty());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -134,15 +134,6 @@ public void run() {
}
}, 7000);

timer.schedule(new TimerTask() {
@Override
public void run() {
MatchmakerInfoMessage matchmakerServerMessage = new MatchmakerInfoMessage();
matchmakerServerMessage.setQueues(singletonList(new MatchmakerQueue("ladder1v1", null, 1, 1, singletonList(new RatingRange(100, 200)), singletonList(new RatingRange(100, 200)))));
messageListeners.getOrDefault(matchmakerServerMessage.getClass(), Collections.emptyList()).forEach(consumer -> consumer.accept(matchmakerServerMessage));
}
}, 7000);

List<GameInfoMessage> gameInfoMessages = Arrays.asList(
createGameInfo(1, "Mock game 500 - 800", PUBLIC, "faf", "scmp_010", 1, 6, "Mock user"),
createGameInfo(2, "Mock game 500+", PUBLIC, "faf", "scmp_011", 2, 6, "Mock user"),
Expand Down
2 changes: 0 additions & 2 deletions src/main/resources/i18n/messages.properties
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,6 @@ coop.leaderboard.couldNotLoad=Co-Op leaderboard could not be loaded.
coop.couldNotLoad=Co-Op missions could not be loaded: {0}
coop.watchReplay=Watch
ranked1v1.gamesPlayed=Games played
ranked1v1.notification.title=1v1 ranked match available
ranked1v1.notification.message=Click here to open the 1v1 tab
teammatchmaking.leaveParty=Leave party
teammatchmaking.invitePlayer=Invite players
teammatchmaking.invite=Invite
Expand Down
6 changes: 2 additions & 4 deletions src/main/resources/theme/settings/settings.fxml
Original file line number Diff line number Diff line change
Expand Up @@ -457,10 +457,8 @@
<Label styleClass="setting-title" text="%settings.notifications.pmReceived" GridPane.rowIndex="5" />
<CheckBox fx:id="displayPmReceivedToastCheckBox" mnemonicParsing="false" GridPane.columnIndex="1" GridPane.halignment="CENTER" GridPane.rowIndex="5" GridPane.valignment="CENTER" />
<CheckBox fx:id="playPmReceivedSoundCheckBox" mnemonicParsing="false" GridPane.columnIndex="2" GridPane.halignment="CENTER" GridPane.rowIndex="5" GridPane.valignment="CENTER" />
<Label styleClass="setting-title" text="%settings.notifications.ranked1v1" GridPane.rowIndex="6" />
<CheckBox fx:id="displayLadder1v1ToastCheckBox" mnemonicParsing="false" GridPane.columnIndex="1" GridPane.halignment="CENTER" GridPane.rowIndex="6" GridPane.valignment="CENTER" />
<Label styleClass="setting-title" text="%settings.notifications.afterGameReview" GridPane.rowIndex="7" />
<CheckBox fx:id="afterGameReviewCheckBox" mnemonicParsing="false" GridPane.columnIndex="1" GridPane.halignment="CENTER" GridPane.rowIndex="7" GridPane.valignment="CENTER" />
<Label styleClass="setting-title" text="%settings.notifications.afterGameReview" GridPane.rowIndex="6" />
<CheckBox fx:id="afterGameReviewCheckBox" mnemonicParsing="false" GridPane.columnIndex="1" GridPane.halignment="CENTER" GridPane.rowIndex="6" GridPane.valignment="CENTER" />
</children>
</GridPane>
</children>
Expand Down
73 changes: 0 additions & 73 deletions src/test/java/com/faforever/client/main/MainControllerTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -243,12 +243,6 @@ public void testOpenStartTabWithItemNotSet() throws Exception {
verify(notificationService, times(1)).addNotification(any(PersistentNotification.class));
}

@Test
public void testOnMatchMakerMessageDisplaysNotification80Quality() {
prepareTestMatchmakerMessageTest(100);
verify(notificationService).addNotification(any(TransientNotification.class));
}

@Test
public void testOnChat() throws Exception {
instance.chatButton.pseudoClassStateChanged(HIGHLIGHTED, true);
Expand All @@ -257,73 +251,6 @@ public void testOnChat() throws Exception {

}

private void prepareTestMatchmakerMessageTest(float deviation) {
@SuppressWarnings("unchecked")
ArgumentCaptor<Consumer<MatchmakerInfoMessage>> matchmakerMessageCaptor = ArgumentCaptor.forClass(Consumer.class);
preferences.getNotification().setLadder1v1ToastEnabled(true);
when(playerService.getCurrentPlayer()).thenReturn(
Optional.ofNullable(PlayerBuilder.create("JUnit").leaderboardRatingMean(1500).leaderboardRatingDeviation(deviation).get())
);

verify(gameService).addOnMatchmakerQueueNotificationListener(matchmakerMessageCaptor.capture());

MatchmakerInfoMessage matchmakerMessage = new MatchmakerInfoMessage();
String timeString = DateTimeFormatter.ISO_INSTANT.format(Instant.now().plusSeconds(65));
matchmakerMessage.setQueues(singletonList(new MatchmakerInfoMessage.MatchmakerQueue("ladder1v1", timeString, 1, 0,
singletonList(new RatingRange(1500, 1510)), singletonList(new RatingRange(1500, 1510)))));
matchmakerMessageCaptor.getValue().accept(matchmakerMessage);
}

@Test
public void testOnMatchMakerMessageDisplaysNotification75Quality() {
prepareTestMatchmakerMessageTest(101);
verify(notificationService).addNotification(any(TransientNotification.class));
}

@Test
public void testOnMatchMakerMessageDoesNotDisplaysNotificationLessThan75Quality() {
prepareTestMatchmakerMessageTest(201);
verify(notificationService, never()).addNotification(any(TransientNotification.class));
}

@Test
public void testOnMatchMakerMessageDoesNotDisplaysNotificationWhenGameIsRunning() {
gameRunningProperty.set(true);
prepareTestMatchmakerMessageTest(100);
verify(notificationService, never()).addNotification(any(TransientNotification.class));
}

@Test
public void testOnMatchMakerMessageDisplaysNotificationNullQueues() {
@SuppressWarnings("unchecked")
ArgumentCaptor<Consumer<MatchmakerInfoMessage>> matchmakerMessageCaptor = ArgumentCaptor.forClass(Consumer.class);

verify(gameService).addOnMatchmakerQueueNotificationListener(matchmakerMessageCaptor.capture());

MatchmakerInfoMessage matchmakerMessage = new MatchmakerInfoMessage();
matchmakerMessage.setQueues(null);
matchmakerMessageCaptor.getValue().accept(matchmakerMessage);

verify(notificationService, never()).addNotification(any(TransientNotification.class));
}

@Test
public void testOnMatchMakerMessageDisplaysNotificationWithQueuesButDisabled() {
@SuppressWarnings("unchecked")
ArgumentCaptor<Consumer<MatchmakerInfoMessage>> matchmakerMessageCaptor = ArgumentCaptor.forClass(Consumer.class);
preferences.getNotification().setLadder1v1ToastEnabled(true);

verify(gameService).addOnMatchmakerQueueNotificationListener(matchmakerMessageCaptor.capture());

MatchmakerInfoMessage matchmakerMessage = new MatchmakerInfoMessage();
String timeString = DateTimeFormatter.ISO_INSTANT.format(Instant.now().plusSeconds(65));
matchmakerMessage.setQueues(singletonList(new MatchmakerInfoMessage.MatchmakerQueue("ladder1v1", timeString, 1, 0,
singletonList(new RatingRange(1500, 1510)), singletonList(new RatingRange(1500, 1510)))));
matchmakerMessageCaptor.getValue().accept(matchmakerMessage);

verify(notificationService, never()).addNotification(any(TransientNotification.class));
}

@Test
/**
* Test fails in certain 2 Screen setups
Expand Down

0 comments on commit 30d36c9

Please sign in to comment.