diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordState.java b/runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordState.java index b9039cee6d..0fc41574cb 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordState.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordState.java @@ -32,7 +32,6 @@ import java.time.Instant; import java.util.ArrayList; import java.util.List; import java.util.Optional; -import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Collectors; import javax.inject.Inject; import javax.inject.Named; @@ -250,27 +249,16 @@ class DiscordState final Duration actionTimeout = Duration.ofMinutes(config.actionTimeout()); final Instant now = Instant.now(); - final AtomicBoolean updatedAny = new AtomicBoolean(); final boolean removedAny = events.removeAll(events.stream() + // Only include clearable events + .filter(event -> event.getType().isShouldBeCleared()) // Find only events that should time out .filter(event -> event.getType().isShouldTimeout() && now.isAfter(event.getUpdated().plus(actionTimeout))) - // Reset start times on timed events that should restart - .peek(event -> - { - if (event.getType().isShouldRestart()) - { - event.setStart(null); - updatedAny.set(true); - } - }) - // Now filter out events that should restart as we do not want to remove them - .filter(event -> !event.getType().isShouldRestart()) - .filter(event -> event.getType().isShouldBeCleared()) .collect(Collectors.toList()) ); - if (removedAny || updatedAny.get()) + if (removedAny) { updatePresenceWithLatestEvent(); } diff --git a/runelite-client/src/test/java/net/runelite/client/plugins/discord/DiscordStateTest.java b/runelite-client/src/test/java/net/runelite/client/plugins/discord/DiscordStateTest.java index dae0188f42..5213e5e174 100644 --- a/runelite-client/src/test/java/net/runelite/client/plugins/discord/DiscordStateTest.java +++ b/runelite-client/src/test/java/net/runelite/client/plugins/discord/DiscordStateTest.java @@ -27,7 +27,6 @@ package net.runelite.client.plugins.discord; import com.google.inject.Guice; import com.google.inject.testing.fieldbinder.Bind; import com.google.inject.testing.fieldbinder.BoundFieldModule; -import java.util.List; import javax.inject.Inject; import javax.inject.Named; import net.runelite.api.Client; @@ -35,7 +34,6 @@ import net.runelite.client.discord.DiscordPresence; import net.runelite.client.discord.DiscordService; import net.runelite.client.ws.PartyService; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -44,6 +42,7 @@ import static org.mockito.ArgumentMatchers.any; import org.mockito.Mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; import org.mockito.junit.MockitoJUnitRunner; @@ -90,13 +89,12 @@ public class DiscordStateTest when(discordConfig.elapsedTimeType()).thenReturn(DiscordConfig.ElapsedTimeType.ACTIVITY); discordState.triggerEvent(DiscordGameEventType.IN_MENU); - verify(discordService).updatePresence(any(DiscordPresence.class)); + verify(discordService).updatePresence(any(DiscordPresence.class)); // menu presence discordState.checkForTimeout(); - ArgumentCaptor captor = ArgumentCaptor.forClass(DiscordPresence.class); - verify(discordService, times(2)).updatePresence(captor.capture()); - List captured = captor.getAllValues(); - assertNull(captured.get(captured.size() - 1).getEndTimestamp()); + + // menu is not clearable and so no changes will be made + verifyNoMoreInteractions(discordService); } @Test