account page: can now reorder entries under shops sections by drag and drop

This commit is contained in:
2026-01-26 13:51:40 -07:00
parent a2d8993e0e
commit a50c0ef18d
14 changed files with 682 additions and 88 deletions
+39 -1
View File
@@ -2,6 +2,7 @@ package accounts
import (
"errors"
"fmt"
"strconv"
"github.com/gin-gonic/gin"
@@ -32,9 +33,10 @@ func Routes(
}
r.POST("", response.Handler(as.createAccount))
r.PUT("/:acctID/platforms/:platform/order-index", pub.Publish("/:acctID/platforms"), response.Handler(as.setOrderOfPlatformOnAccountPage))
syncGroups := r.Group("/:acctID/inventory/sync-groups")
syncGroups.POST("", response.Handler(as.saveNewSyncGroup))
syncGroups.POST("", pub.Publish("/:acctID/inventory/sync-groups"), response.Handler(as.saveNewSyncGroup))
draftListings := syncGroups.Group("/draft/listings", pub.Publish("/:acctID/inventory/sync-groups/draft/listings"))
draftListings.POST("", response.Handler(as.createSyncGroupListingDraft))
@@ -184,3 +186,39 @@ func getOrderIndexForSyncGroupListingDraftFromPath(c *gin.Context) (int, error)
return orderIndex, nil
}
func (s *accountSubrouter) setOrderOfPlatformOnAccountPage(c *gin.Context) (response.Response, error) {
acctID := auth.GetIdentity(c).Account.AccountID
var orderIndex int
if v, ok := c.GetPostForm("order-index"); !ok {
return nil, response.BadRequest().
Msg("no order-index provided")
} else if i, err := strconv.Atoi(v); err != nil {
return nil, response.BadRequest().
Msgf("order-index must be a non-negative integer: %s", v)
} else if i < 0 {
return nil, response.BadRequest().
Msgf("order-index must be a non-negative integer: %s", v)
} else {
orderIndex = i
}
var platform accounts.Platform
if v := c.Param("platform"); v == "" {
return nil, response.BadRequest().
Msg("no platform provided")
} else if p, err := accounts.NewPlatform(v); err != nil {
return nil, response.BadRequest().
Wrap(err).
Msgf("unrecognized platform: %v", v)
} else {
platform = p
}
if err := s.accts.SetOrderOfPlatformOnAccountPage(c, acctID, platform, orderIndex); err != nil {
return nil, fmt.Errorf("failed to save record: %w", err)
}
return response.Status(200), nil
}
+7 -1
View File
@@ -150,7 +150,13 @@ func (e ErrorResponse) GetHTML() ([]byte, bool) {
}
func GetError(err error) (e ErrorResponse, ok bool) {
ok = errors.As(err, &e)
if ok = errors.As(err, &e); ok {
return e, true
}
var ptr *ErrorResponse
if ok = errors.As(err, &ptr); ok {
return *ptr, true
}
return e, ok
}
+6
View File
@@ -1,6 +1,7 @@
package response
import (
"errors"
"fmt"
"io"
"net/http"
@@ -45,6 +46,11 @@ func HandleErrors(c *gin.Context) {
}
}
if !ok {
var err error
for _, e := range c.Errors {
err = errors.Join(err, e)
}
c.String(http.StatusInternalServerError, err.Error())
return
}