Skip to content

Commit cbfa6b0

Browse files
committed
components: Replace TimeoutCancellationException by ComponentTimeoutException
1 parent 67e15d6 commit cbfa6b0

File tree

3 files changed

+13
-11
lines changed

3 files changed

+13
-11
lines changed

BotCommands-core/src/main/java/io/github/freya022/botcommands/internal/utils/TimeoutExceptionAccessor.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,6 @@
55

66
@NullMarked
77
public class TimeoutExceptionAccessor {
8-
public static TimeoutCancellationException createComponentTimeoutException() {
9-
return new TimeoutCancellationException("Timed out waiting for component");
10-
}
11-
128
public static TimeoutCancellationException createModalTimeoutException() {
139
return new TimeoutCancellationException("Timed out waiting for modal");
1410
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package io.github.freya022.botcommands.api.components.exceptions
2+
3+
import kotlinx.coroutines.CancellationException
4+
5+
/**
6+
* Exception thrown when a component timed out while a coroutine was awaiting a component interaction.
7+
*/
8+
class ComponentTimeoutException(message: String) : CancellationException(message)

BotCommands-core/src/main/kotlin/io/github/freya022/botcommands/internal/components/controller/ComponentTimeoutManager.kt

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
package io.github.freya022.botcommands.internal.components.controller
22

33
import io.github.freya022.botcommands.api.components.annotations.RequiresComponents
4+
import io.github.freya022.botcommands.api.components.exceptions.ComponentTimeoutException
45
import io.github.freya022.botcommands.api.core.BContext
56
import io.github.freya022.botcommands.api.core.service.ServiceContainer
67
import io.github.freya022.botcommands.api.core.service.annotations.BService
78
import io.github.freya022.botcommands.api.core.service.lazy
89
import io.github.freya022.botcommands.internal.components.handler.ComponentTimeoutExecutor
910
import io.github.freya022.botcommands.internal.components.repositories.ComponentRepository
1011
import io.github.freya022.botcommands.internal.core.ExceptionHandler
11-
import io.github.freya022.botcommands.internal.utils.TimeoutExceptionAccessor
1212
import io.github.oshai.kotlinlogging.KotlinLogging
1313
import kotlinx.coroutines.CancellationException
1414
import kotlinx.coroutines.Job
@@ -66,13 +66,11 @@ internal class ComponentTimeoutManager(
6666
if (continuations.isEmpty()) return
6767

6868
// Continuations must be canceled
69-
if (throwTimeouts) {
70-
val timeoutException = TimeoutExceptionAccessor.createComponentTimeoutException()
71-
continuations.forEach { it.cancel(timeoutException) }
72-
} else {
73-
val cancellationException = CancellationException("Component was deleted")
74-
continuations.forEach { it.cancel(cancellationException) }
69+
val exception = when {
70+
throwTimeouts -> ComponentTimeoutException("Timed out waiting for component")
71+
else -> CancellationException("Component was deleted")
7572
}
73+
continuations.forEach { it.cancel(exception) }
7674
}
7775

7876
internal fun cancelTimeout(componentId: Int) {

0 commit comments

Comments
 (0)