check method

  1. @override
RoutingDropped? check(
  1. CampaignRequest request
)
override

The drop this gate decides, or null to let the request continue.

Implementation

@override
RoutingDropped? check(CampaignRequest request) {
  final config = request.campaign.config;
  VariableScope.reportMissing(
    config.defaultVariables,
    request.payload.variables,
    request.campaign.campaignKey,
  );
  return switch (config) {
    InlineTimerCampaignConfig() => _checkTimer(request, config),
    CanvasSurveyCampaignConfig(:final canvasSurveyConfig)
        when canvasSurveyConfig.nodes.isEmpty ||
            canvasSurveyConfig.blocks.isEmpty =>
      request.invalidConfig('survey has no content', 'empty_content'),
    GuideCampaignConfig(:final guideConfig) when guideConfig.stepCount == 0 =>
      request.invalidConfig('guide has no steps', 'empty_content'),
    _ => null,
  };
}