summaryrefslogtreecommitdiff
path: root/internal/processing
diff options
context:
space:
mode:
authorLibravatar Vyr Cossont <VyrCossont@users.noreply.github.com>2024-11-26 08:23:00 -0800
committerLibravatar GitHub <noreply@github.com>2024-11-26 08:23:00 -0800
commit6a8af426474acd1ffd5cb3265a2372003977326a (patch)
tree9f22c7d3eabc784728da22d60f0ec05ed93ac6ac /internal/processing
parent[chore] Sign the bloody thing, fix the other bloody thing (#3572) (diff)
downloadgotosocial-6a8af426474acd1ffd5cb3265a2372003977326a.tar.xz
[bugfix] Allow unsetting filter expiration dates (#3560)
* Regression tests for #3497 (v1 and v2) * use Nullable type for v2 form.expires_in --------- Co-authored-by: tobi <tobi.smethurst@protonmail.com>
Diffstat (limited to 'internal/processing')
-rw-r--r--internal/processing/filters/v1/create.go2
-rw-r--r--internal/processing/filters/v1/update.go2
-rw-r--r--internal/processing/filters/v2/create.go2
-rw-r--r--internal/processing/filters/v2/update.go13
4 files changed, 12 insertions, 7 deletions
diff --git a/internal/processing/filters/v1/create.go b/internal/processing/filters/v1/create.go
index 18367dfce..86019d2a6 100644
--- a/internal/processing/filters/v1/create.go
+++ b/internal/processing/filters/v1/create.go
@@ -43,7 +43,7 @@ func (p *Processor) Create(ctx context.Context, account *gtsmodel.Account, form
if *form.Irreversible {
filter.Action = gtsmodel.FilterActionHide
}
- if form.ExpiresIn != nil {
+ if form.ExpiresIn != nil && *form.ExpiresIn != 0 {
filter.ExpiresAt = time.Now().Add(time.Second * time.Duration(*form.ExpiresIn))
}
for _, context := range form.Context {
diff --git a/internal/processing/filters/v1/update.go b/internal/processing/filters/v1/update.go
index 81340b4be..15c5de365 100644
--- a/internal/processing/filters/v1/update.go
+++ b/internal/processing/filters/v1/update.go
@@ -67,7 +67,7 @@ func (p *Processor) Update(
action = gtsmodel.FilterActionHide
}
expiresAt := time.Time{}
- if form.ExpiresIn != nil {
+ if form.ExpiresIn != nil && *form.ExpiresIn != 0 {
expiresAt = time.Now().Add(time.Second * time.Duration(*form.ExpiresIn))
}
contextHome := false
diff --git a/internal/processing/filters/v2/create.go b/internal/processing/filters/v2/create.go
index 7095a643c..60dd46f43 100644
--- a/internal/processing/filters/v2/create.go
+++ b/internal/processing/filters/v2/create.go
@@ -41,7 +41,7 @@ func (p *Processor) Create(ctx context.Context, account *gtsmodel.Account, form
Title: form.Title,
Action: typeutils.APIFilterActionToFilterAction(*form.FilterAction),
}
- if form.ExpiresIn != nil {
+ if form.ExpiresIn != nil && *form.ExpiresIn != 0 {
filter.ExpiresAt = time.Now().Add(time.Second * time.Duration(*form.ExpiresIn))
}
for _, context := range form.Context {
diff --git a/internal/processing/filters/v2/update.go b/internal/processing/filters/v2/update.go
index 0d443d58e..d5b5cce01 100644
--- a/internal/processing/filters/v2/update.go
+++ b/internal/processing/filters/v2/update.go
@@ -21,8 +21,6 @@ import (
"context"
"errors"
"fmt"
- "time"
-
apimodel "github.com/superseriousbusiness/gotosocial/internal/api/model"
"github.com/superseriousbusiness/gotosocial/internal/db"
"github.com/superseriousbusiness/gotosocial/internal/gtserror"
@@ -30,6 +28,7 @@ import (
"github.com/superseriousbusiness/gotosocial/internal/id"
"github.com/superseriousbusiness/gotosocial/internal/typeutils"
"github.com/superseriousbusiness/gotosocial/internal/util"
+ "time"
)
// Update an existing filter for the given account, using the provided parameters.
@@ -68,10 +67,16 @@ func (p *Processor) Update(
filterColumns = append(filterColumns, "action")
filter.Action = typeutils.APIFilterActionToFilterAction(*form.FilterAction)
}
- // TODO: (Vyr) is it possible to unset a filter expiration with this API?
if form.ExpiresIn != nil {
+ expiresIn := *form.ExpiresIn
filterColumns = append(filterColumns, "expires_at")
- filter.ExpiresAt = time.Now().Add(time.Second * time.Duration(*form.ExpiresIn))
+ if expiresIn == 0 {
+ // Unset the expiration date.
+ filter.ExpiresAt = time.Time{}
+ } else {
+ // Update the expiration date.
+ filter.ExpiresAt = time.Now().Add(time.Second * time.Duration(expiresIn))
+ }
}
if form.Context != nil {
filterColumns = append(filterColumns,