| package common | |
| import ( | |
| "github.com/google/wire" | |
| "github.com/openmeterio/openmeter/app/config" | |
| "github.com/openmeterio/openmeter/pkg/featuregate" | |
| ) | |
| var FeatureGateChecker = wire.NewSet( | |
| featuregate.NewNoop, | |
| wire.FieldsOf(new(config.Configuration), "FeatureGate"), | |
| NewFeatureGateChecker, | |
| ) | |
| func NewFeatureGateChecker(gate featuregate.Gate, config config.FeatureGateConfiguration, creditsConfig config.CreditsConfiguration) *featuregate.FeatureGateChecker { | |
| flags := make(featuregate.Flags) | |
| if config.Flags != nil { | |
| flags = config.Flags | |
| } | |
| flagOverrides := map[featuregate.FeatureFlag]bool{ | |
| featuregate.CtxKeyCredits: creditsConfig.Enabled, | |
| } | |
| if !config.Enabled { | |
| return featuregate.NewFeatureGateChecker(featuregate.NewNoop(), flags, flagOverrides) | |
| } | |
| return featuregate.NewFeatureGateChecker(gate, flags, flagOverrides) | |
| } | |