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

fix: allow IEventSubSocket#register with null transport #815

Merged
merged 3 commits into from Jul 20, 2023
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
@@ -1,27 +1,82 @@
package com.github.twitch4j.eventsub.socket;

import com.github.twitch4j.eventsub.EventSubSubscription;
import com.github.twitch4j.eventsub.EventSubSubscriptionStatus;
import com.github.twitch4j.eventsub.EventSubTransport;
import com.github.twitch4j.eventsub.condition.EventSubCondition;
import com.github.twitch4j.eventsub.subscriptions.SubscriptionType;
import lombok.EqualsAndHashCode;
import lombok.Value;

import java.time.Instant;

@Value
@EqualsAndHashCode(callSuper = false)
@EqualsAndHashCode(onlyExplicitlyIncluded = true, callSuper = false, cacheStrategy = EqualsAndHashCode.CacheStrategy.LAZY)
class SubscriptionWrapper extends EventSubSubscription {
@EqualsAndHashCode.Exclude
EventSubSubscription subscription;
String rawType;
String rawVersion;
EventSubCondition condition;

private SubscriptionWrapper(EventSubSubscription sub) {
super(sub.getId(), sub.getStatus(), sub.getType(), sub.getCondition(),
sub.getCreatedAt(), sub.getTransport(), sub.getCost(), sub.isBatchingEnabled(),
sub.getRawType(), sub.getRawVersion());
super();
this.subscription = sub;
this.rawType = sub.getRawType();
this.rawVersion = sub.getRawVersion();
this.condition = sub.getCondition();
}

@Override
@EqualsAndHashCode.Include
public String getRawType() {
return subscription.getRawType();
}

@Override
@EqualsAndHashCode.Include
public String getRawVersion() {
return subscription.getRawVersion();
}

@Override
@EqualsAndHashCode.Include
public EventSubCondition getCondition() {
return subscription.getCondition();
}

@Override
public String getId() {
return subscription.getId();
}

@Override
public EventSubSubscriptionStatus getStatus() {
return subscription.getStatus();
}

@Override
public SubscriptionType<?, ?, ?> getType() {
return subscription.getType();
}

@Override
public Instant getCreatedAt() {
return subscription.getCreatedAt();
}

@Override
public EventSubTransport getTransport() {
return subscription.getTransport();
}

@Override
@Deprecated
public void setTransport(EventSubTransport transport) {
subscription.setTransport(transport);
}

@Override
public Integer getCost() {
return subscription.getCost();
}

@Override
public Boolean isBatchingEnabled() {
return subscription.isBatchingEnabled();
}

static SubscriptionWrapper wrap(EventSubSubscription sub) {
Expand Down
Expand Up @@ -370,6 +370,7 @@ private EventSubSubscription unsubscribeNoHelix(@NotNull EventSubSubscription re
return subscriptions.remove(SubscriptionWrapper.wrap(remove));
}

@Synchronized
private void onInitialConnection(final String websocketId) {
final Collection<EventSubSubscription> oldSubs = new ArrayDeque<>(subscriptions.size());
subscriptions.keySet().removeIf(oldSubs::add);
Expand Down