Skip to content

Commit ddbc8fe

Browse files
committed
fix: preserve inactive asset reports (WI-949)
1 parent e690936 commit ddbc8fe

2 files changed

Lines changed: 12 additions & 7 deletions

File tree

frontend/src/lib/dialogs/AssetReportModal.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@
164164
item_type_id: formData.run_mode === 'form' ? formData.item_type_id : null,
165165
workspace_id: formData.run_mode === 'form' ? formData.workspace_id : null,
166166
config: configJson,
167-
is_active: true
167+
is_active: mode === 'edit' ? (assetReport.is_active ?? true) : true
168168
};
169169
170170
if (mode === 'create') {

internal/handlers/asset_reports.go

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,11 @@ type AssetReportHandler struct {
8383
assetPerm *services.AssetPermissionService
8484
}
8585

86+
type createAssetReportRequest struct {
87+
models.AssetReport
88+
IsActive *bool `json:"is_active"`
89+
}
90+
8691
func NewAssetReportHandler(
8792
repo *repository.AssetReportRepository,
8893
channelRepo *repository.ChannelRepository,
@@ -300,10 +305,15 @@ func (h *AssetReportHandler) Create(w http.ResponseWriter, r *http.Request) {
300305
return
301306
}
302307

303-
ar, ok := decodeChannelJSON[models.AssetReport](w, r)
308+
input, ok := decodeChannelJSON[createAssetReportRequest](w, r)
304309
if !ok {
305310
return
306311
}
312+
ar := input.AssetReport
313+
ar.IsActive = true
314+
if input.IsActive != nil {
315+
ar.IsActive = *input.IsActive
316+
}
307317
if !sanitizeAssetReport(w, r, &ar) {
308318
return
309319
}
@@ -351,11 +361,6 @@ func (h *AssetReportHandler) Create(w http.ResponseWriter, r *http.Request) {
351361
if !h.validateAssetReportFormBinding(w, r, user.ID, &ar) {
352362
return
353363
}
354-
// Reports default to active on create — JSON's false zero-value collides
355-
// with "field omitted", so we always activate here. Callers that want to
356-
// land an inactive report can follow up with PUT (Update preserves the
357-
// requested is_active value verbatim).
358-
ar.IsActive = true
359364
if ar.DisplayOrder == 0 {
360365
maxOrder, mErr := h.repo.MaxDisplayOrder(ar.ChannelID)
361366
if mErr != nil {

0 commit comments

Comments
 (0)