Skip to content

Commit

Permalink
Correct assertions in interaction.respond (#584)
Browse files Browse the repository at this point in the history
  • Loading branch information
abitofevrything authored Nov 6, 2023
1 parent 55a8c76 commit f7abb73
Showing 1 changed file with 11 additions and 13 deletions.
24 changes: 11 additions & 13 deletions lib/src/models/interaction.dart
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,7 @@ mixin MessageResponse<T> on Interaction<T> {
await manager.createResponse(id, token, InteractionResponseBuilder.channelMessage(builder, isEphemeral: isEphemeral));
} else {
assert(isEphemeral == _wasEphemeral || isEphemeral == null, 'Cannot change the value of isEphemeral between acknowledge and respond');
_didRespond = true;

await manager.createFollowup(token, builder);
}
Expand Down Expand Up @@ -260,12 +261,12 @@ class MessageComponentInteraction extends Interaction<MessageComponentInteractio

@override
Future<void> acknowledge({bool? updateMessage, bool? isEphemeral}) async {
assert(updateMessage != true || isEphemeral != true, 'Cannot set isEphemeral to true if updateMessage is set to true');

if (_didAcknowledge) {
throw AlreadyAcknowledgedError(this);
}

assert(updateMessage != true || isEphemeral != true, 'Cannot set isEphemeral to true if updateMessage is set to true');

_didAcknowledge = true;
_didUpdateMessage = updateMessage;
_wasEphemeral = isEphemeral;
Expand All @@ -279,14 +280,15 @@ class MessageComponentInteraction extends Interaction<MessageComponentInteractio

@override
Future<void> respond(Builder<Message> builder, {bool? updateMessage, bool? isEphemeral}) async {
assert(updateMessage == null || type == InteractionType.messageComponent, 'Cannot set updateMessage for non-component interactions');
assert(updateMessage != true || isEphemeral != true, 'Cannot set isEphemeral to true if updateMessage is set to true');
assert(builder is MessageUpdateBuilder == updateMessage, 'builder must be a MessageUpdateBuilder if updateMessage is true');
assert(builder is MessageBuilder != updateMessage, 'builder must be a MessageBuilder if updateMessage is null or false');
assert(updateMessage != true || builder is MessageUpdateBuilder, 'builder must be a MessageUpdateBuilder if updateMessage is true');
assert(updateMessage == true || builder is MessageBuilder, 'builder must be a MessageBuilder if updateMessage is null or false');

if (!_didAcknowledge) {
assert(updateMessage != true || isEphemeral != true, 'Cannot set isEphemeral to true if updateMessage is set to true');
if (_didRespond) {
throw AlreadyRespondedError(this);
}

if (!_didAcknowledge) {
_didAcknowledge = true;
_didRespond = true;
_didUpdateMessage = updateMessage;
Expand All @@ -301,16 +303,12 @@ class MessageComponentInteraction extends Interaction<MessageComponentInteractio
assert(updateMessage == _didUpdateMessage || updateMessage == null, 'Cannot change the value of updateMessage between acknowledge and respond');
assert(isEphemeral == _wasEphemeral || isEphemeral == null, 'Cannot change the value of isEphemeral between acknowledge and respond');

if (_didRespond) {
throw AlreadyRespondedError(this);
}

_didRespond = true;

if (updateMessage == true) {
if (_didUpdateMessage == true) {
await manager.updateOriginalResponse(token, builder as MessageUpdateBuilder);
} else {
await manager.createFollowup(token, builder as MessageBuilder, isEphemeral: isEphemeral);
await manager.createFollowup(token, builder as MessageBuilder);
}
}
}
Expand Down

0 comments on commit f7abb73

Please sign in to comment.