Skip draft version for uncategorised-only merges
Pattern merges and adoptions that stay entirely within the uncategorised category never change the visitor-facing snapshot. Only trigger ensureDraftVersionForBanner when a merge group belongs to a consent category. Signed-off-by: Émile Ré <emile@getprobo.com>
This commit is contained in:
@@ -85,6 +85,15 @@ func (h *patternAnalysisHandler) Process(ctx context.Context, banner coredata.Co
|
|||||||
func(ctx context.Context, tx pg.Tx) error {
|
func(ctx context.Context, tx pg.Tx) error {
|
||||||
scope := coredata.NewScopeFromObjectID(banner.ID)
|
scope := coredata.NewScopeFromObjectID(banner.ID)
|
||||||
|
|
||||||
|
var uncategorised coredata.CookieCategory
|
||||||
|
hasUncategorised := true
|
||||||
|
if err := uncategorised.LoadUncategorisedByCookieBannerID(ctx, tx, scope, banner.ID); err != nil {
|
||||||
|
if !errors.Is(err, coredata.ErrResourceNotFound) {
|
||||||
|
return fmt.Errorf("cannot load uncategorised category: %w", err)
|
||||||
|
}
|
||||||
|
hasUncategorised = false
|
||||||
|
}
|
||||||
|
|
||||||
var exactPatterns coredata.CookiePatterns
|
var exactPatterns coredata.CookiePatterns
|
||||||
if err := exactPatterns.LoadAllByCookieBannerID(
|
if err := exactPatterns.LoadAllByCookieBannerID(
|
||||||
ctx,
|
ctx,
|
||||||
@@ -98,7 +107,7 @@ func (h *patternAnalysisHandler) Process(ctx context.Context, banner coredata.Co
|
|||||||
|
|
||||||
mergeGroups := findMergeGroups(exactPatterns, patternMergeThreshold)
|
mergeGroups := findMergeGroups(exactPatterns, patternMergeThreshold)
|
||||||
|
|
||||||
merged := false
|
consentChanged := false
|
||||||
for key, group := range mergeGroups {
|
for key, group := range mergeGroups {
|
||||||
|
|
||||||
maxAge := mostCommonMaxAge(group)
|
maxAge := mostCommonMaxAge(group)
|
||||||
@@ -144,7 +153,10 @@ func (h *patternAnalysisHandler) Process(ctx context.Context, banner coredata.Co
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
merged = true
|
if !hasUncategorised || key.categoryID != uncategorised.ID {
|
||||||
|
consentChanged = true
|
||||||
|
}
|
||||||
|
|
||||||
h.logger.InfoCtx(
|
h.logger.InfoCtx(
|
||||||
ctx,
|
ctx,
|
||||||
"merged exact patterns into prefix pattern",
|
"merged exact patterns into prefix pattern",
|
||||||
@@ -154,15 +166,11 @@ func (h *patternAnalysisHandler) Process(ctx context.Context, banner coredata.Co
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
adopted, err := h.adoptUncategorisedPatterns(ctx, tx, scope, banner)
|
if _, err := h.adoptUncategorisedPatterns(ctx, tx, scope, banner); err != nil {
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("cannot adopt uncategorised patterns: %w", err)
|
return fmt.Errorf("cannot adopt uncategorised patterns: %w", err)
|
||||||
}
|
}
|
||||||
if adopted {
|
|
||||||
merged = true
|
|
||||||
}
|
|
||||||
|
|
||||||
if merged {
|
if consentChanged {
|
||||||
if _, err := h.svc.ensureDraftVersionForBanner(ctx, tx, scope, banner.ID); err != nil {
|
if _, err := h.svc.ensureDraftVersionForBanner(ctx, tx, scope, banner.ID); err != nil {
|
||||||
return fmt.Errorf("cannot ensure draft version: %w", err)
|
return fmt.Errorf("cannot ensure draft version: %w", err)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user