diff --git a/miner/src/main/java/fr/rakambda/channelpointsminer/miner/api/gql/gql/data/types/DropCampaignSummary.java b/miner/src/main/java/fr/rakambda/channelpointsminer/miner/api/gql/gql/data/types/DropCampaignSummary.java index 27172295..fbabbdc0 100644 --- a/miner/src/main/java/fr/rakambda/channelpointsminer/miner/api/gql/gql/data/types/DropCampaignSummary.java +++ b/miner/src/main/java/fr/rakambda/channelpointsminer/miner/api/gql/gql/data/types/DropCampaignSummary.java @@ -19,4 +19,8 @@ public class DropCampaignSummary extends GQLType{ @JsonProperty("includesSubRequirement") private boolean includesSubRequirement; + @JsonProperty("isPermanentlyDismissible") + private boolean permanentlyDismissible; + @JsonProperty("isSitewide") + private boolean sitewide; } diff --git a/miner/src/main/java/fr/rakambda/channelpointsminer/miner/runnable/UpdateStreamInfo.java b/miner/src/main/java/fr/rakambda/channelpointsminer/miner/runnable/UpdateStreamInfo.java index b8a25027..d38eed90 100644 --- a/miner/src/main/java/fr/rakambda/channelpointsminer/miner/runnable/UpdateStreamInfo.java +++ b/miner/src/main/java/fr/rakambda/channelpointsminer/miner/runnable/UpdateStreamInfo.java @@ -6,6 +6,7 @@ import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.setdropscommunityhighlighttohidden.SetDropsCommunityHighlightToHiddenData; import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.types.Channel; import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.types.DropCampaign; +import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.types.DropCampaignSummary; import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.types.SetDropsCommunityHighlightToHiddenPayload; import fr.rakambda.channelpointsminer.miner.factory.TimeFactory; import fr.rakambda.channelpointsminer.miner.log.LogContext; @@ -23,11 +24,6 @@ @Log4j2 @RequiredArgsConstructor public class UpdateStreamInfo implements Runnable{ - private static final Collection DISMISSIBLE_CAMPAIGNS = Set.of( - "dc4ff0b4-4de0-11ef-9ec3-621fb0811846", - "cbc3c726-8c0a-11ef-9b38-1ede7ff66562" - ); - @NotNull private final IMiner miner; @@ -154,7 +150,7 @@ private void updateCampaigns(@NotNull Streamer streamer){ .map(DropsHighlightServiceAvailableDropsData::getChannel) .map(Channel::getViewerDropCampaigns) .flatMap(Collection::stream) - .filter(dropCampaign -> DISMISSIBLE_CAMPAIGNS.contains(dropCampaign.getId())) + .filter(dropCampaign -> isDismissibleGlobalCompaign(dropCampaign)) .forEach(dropCampaign -> dismissCampaign(miner, streamer, dropCampaign)); } } @@ -163,6 +159,12 @@ private void updateCampaigns(@NotNull Streamer streamer){ } } + private boolean isDismissibleGlobalCompaign(@NotNull DropCampaign dropCampaign){ + return Optional.ofNullable(dropCampaign.getSummary()) + .map(summary -> summary.isSitewide() && summary.isPermanentlyDismissible()) + .orElse(false); + } + private void dismissCampaign(@NotNull IMiner miner, @NotNull Streamer streamer, @NotNull DropCampaign dropCampaign){ var result = miner.getGqlApi().setDropsCommunityHighlightToHidden(streamer.getId(), dropCampaign.getId()); var isHidden = result diff --git a/miner/src/test/java/fr/rakambda/channelpointsminer/miner/api/gql/gql/GQLApiDropsHighlightServiceAvailableDropsTest.java b/miner/src/test/java/fr/rakambda/channelpointsminer/miner/api/gql/gql/GQLApiDropsHighlightServiceAvailableDropsTest.java index 423b2517..105adbc2 100644 --- a/miner/src/test/java/fr/rakambda/channelpointsminer/miner/api/gql/gql/GQLApiDropsHighlightServiceAvailableDropsTest.java +++ b/miner/src/test/java/fr/rakambda/channelpointsminer/miner/api/gql/gql/GQLApiDropsHighlightServiceAvailableDropsTest.java @@ -55,6 +55,8 @@ void nominalWithDrops(UnirestMock unirest){ .build())) .build())) .summary(DropCampaignSummary.builder() + .sitewide(true) + .permanentlyDismissible(true) .includesSubRequirement(true) .build()) .build())) diff --git a/miner/src/test/java/fr/rakambda/channelpointsminer/miner/runnable/UpdateStreamInfoTest.java b/miner/src/test/java/fr/rakambda/channelpointsminer/miner/runnable/UpdateStreamInfoTest.java index 65ddc171..c7cd6faa 100644 --- a/miner/src/test/java/fr/rakambda/channelpointsminer/miner/runnable/UpdateStreamInfoTest.java +++ b/miner/src/test/java/fr/rakambda/channelpointsminer/miner/runnable/UpdateStreamInfoTest.java @@ -9,6 +9,7 @@ import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.types.Channel; import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.types.ChatRoomBanStatus; import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.types.DropCampaign; +import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.types.DropCampaignSummary; import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.types.StreamPlaybackAccessToken; import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.types.User; import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.videoplayerstreaminfooverlaychannel.VideoPlayerStreamInfoOverlayChannelData; @@ -91,6 +92,8 @@ class UpdateStreamInfoTest{ private Channel channel; @Mock private DropCampaign dropCampaign; + @Mock + private DropCampaignSummary dropCampaignSummary; private URL spadeUrl; private URL m3u8Url; @@ -444,6 +447,10 @@ void updateWithDataStreamingUpdateCampaignDismissibleAndSettingActivated(){ when(gqlApi.dropsHighlightServiceAvailableDrops(STREAMER_ID)).thenReturn(Optional.of(dropsHighlightServiceAvailableDrops)); when(gqlApi.chatRoomBanStatus(STREAMER_ID, ACCOUNT_ID)).thenReturn(Optional.of(gqlResponseChatRoomBanStatus)); + when(dropCampaign.getSummary()).thenReturn(dropCampaignSummary); + when(dropCampaignSummary.isSitewide()).thenReturn(true); + when(dropCampaignSummary.isPermanentlyDismissible()).thenReturn(true); + assertDoesNotThrow(() -> tested.run()); verify(gqlApi).videoPlayerStreamInfoOverlayChannel(STREAMER_USERNAME); diff --git a/miner/src/test/resources/api/gql/gql/dropsHighlightServiceAvailableDrops_withDrops.json b/miner/src/test/resources/api/gql/gql/dropsHighlightServiceAvailableDrops_withDrops.json index 5d2bc757..c1027aeb 100644 --- a/miner/src/test/resources/api/gql/gql/dropsHighlightServiceAvailableDrops_withDrops.json +++ b/miner/src/test/resources/api/gql/gql/dropsHighlightServiceAvailableDrops_withDrops.json @@ -43,6 +43,8 @@ } ], "summary": { + "isPermanentlyDismissible": true, + "isSitewide": true, "includesSubRequirement": true, "__typename": "DropCampaignSummary" },