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
+
{