diff --git a/backend/controller/campaign.go b/backend/controller/campaign.go index fcba6cd..e1f32c1 100644 --- a/backend/controller/campaign.go +++ b/backend/controller/campaign.go @@ -278,6 +278,9 @@ func (c *Campaign) GetAll(g *gin.Context) { } // parse request companyID := companyIDFromRequestQuery(g) + // default to including test campaigns for backward compatibility + // only exclude when explicitly set to "false" + includeTestCampaigns := g.Query("includeTest") != "false" queryArgs, ok := c.handleQueryArgs(g) if !ok { return @@ -292,6 +295,7 @@ func (c *Campaign) GetAll(g *gin.Context) { &repository.CampaignOption{ QueryArgs: queryArgs, WithCampaignTemplate: true, + IncludeTestCampaigns: includeTestCampaigns, }, ) // handle responses diff --git a/backend/repository/campaign.go b/backend/repository/campaign.go index b458496..3a89f9d 100644 --- a/backend/repository/campaign.go +++ b/backend/repository/campaign.go @@ -844,6 +844,9 @@ func (r *Campaign) GetAll( if err != nil { return result, errs.Wrap(err) } + // apply test campaign filter based on options + db = r.applyTestCampaignFilter(db, options) + var dbCampaigns []database.Campaign res := db.Find(&dbCampaigns) if res.Error != nil { diff --git a/frontend/src/lib/api/api.js b/frontend/src/lib/api/api.js index 58f24f8..9d084b3 100644 --- a/frontend/src/lib/api/api.js +++ b/frontend/src/lib/api/api.js @@ -78,8 +78,10 @@ const appendQuery = (query) => { if (search) { urlQuery += `&search=${search}`; } - if (includeTest) { + if (includeTest === true) { urlQuery += `&includeTest=true`; + } else if (includeTest === false) { + urlQuery += `&includeTest=false`; } return urlQuery; diff --git a/frontend/src/routes/campaign/+page.svelte b/frontend/src/routes/campaign/+page.svelte index d8ba318..64b53bf 100644 --- a/frontend/src/routes/campaign/+page.svelte +++ b/frontend/src/routes/campaign/+page.svelte @@ -226,6 +226,13 @@ const appStateService = AppStateService.instance; let contextCompanyID = null; let campaigns = []; + let includeTestCampaigns = true; + + // handler for when include test campaigns toggle changes + const handleIncludeTestToggleChange = async () => { + await tick(); + await refreshCampaigns(); + }; let campaignsHasNextPage = false; let templateMap = new BiMap({}); let recipientGroupsByID = {}; @@ -700,7 +707,11 @@ const getCampaigns = async () => { try { - const res = await api.campaign.getAll(tableURLParams, contextCompanyID); + const options = { + ...tableURLParams, + includeTest: includeTestCampaigns + }; + const res = await api.campaign.getAll(options, contextCompanyID); if (!res.success) { throw res.error; } @@ -1280,9 +1291,17 @@
-
+
Campaigns -
+
+ + Include test campaigns + {