diff options
| author | 2022-04-15 14:33:01 +0200 | |
|---|---|---|
| committer | 2022-04-15 14:33:01 +0200 | |
| commit | 26683b3d49beea9b1f0e8f78df4720285d4c0825 (patch) | |
| tree | 06bf09cdee7a60c41947a0bd03d6a42ad83ee784 /internal/api/client | |
| parent | [bugfix] Fix broken only_media and only_public flags on /api/v1/accounts/:id/... (diff) | |
| download | gotosocial-26683b3d49beea9b1f0e8f78df4720285d4c0825.tar.xz | |
[feature] Web profile pages for accounts (#449)
* add default avatars
* allow webModule to error
* return errWithCode from account get
* add AccountGetLocalByUsername
* check nil requesting account
* add timestampShort function for just month/year
* move loading logic to New + add default avatars
* add profile page view
* update swagger docs
* add excludeReblogs to GetAccountStatuses
* ignore casing when selecting local account by username
* appropriate redirects
* css fiddling
* add 'about' heading
* adjust thread page to work with routing
* return AP representation if requested + authorized
* simplify auth check
* go fmt
* golangci-lint ignore math/rand
Diffstat (limited to 'internal/api/client')
| -rw-r--r-- | internal/api/client/account/account.go | 2 | ||||
| -rw-r--r-- | internal/api/client/account/accountget.go | 6 | ||||
| -rw-r--r-- | internal/api/client/account/statuses.go | 24 | 
3 files changed, 27 insertions, 5 deletions
diff --git a/internal/api/client/account/account.go b/internal/api/client/account/account.go index c38a8cfb4..4205baa2c 100644 --- a/internal/api/client/account/account.go +++ b/internal/api/client/account/account.go @@ -34,6 +34,8 @@ const (  	LimitKey = "limit"  	// ExcludeRepliesKey is for specifying whether to exclude replies in a list of returned statuses by an account.  	ExcludeRepliesKey = "exclude_replies" +	// ExcludeReblogsKey is for specifying whether to exclude reblogs in a list of returned statuses by an account. +	ExcludeReblogsKey = "exclude_reblogs"  	// PinnedKey is for specifying whether to include pinned statuses in a list of returned statuses by an account.  	PinnedKey = "pinned"  	// MaxIDKey is for specifying the maximum ID of the status to retrieve. diff --git a/internal/api/client/account/accountget.go b/internal/api/client/account/accountget.go index 6085d2d3e..1fa7014eb 100644 --- a/internal/api/client/account/accountget.go +++ b/internal/api/client/account/accountget.go @@ -22,6 +22,7 @@ import (  	"net/http"  	"github.com/gin-gonic/gin" +	"github.com/sirupsen/logrus"  	"github.com/superseriousbusiness/gotosocial/internal/api"  	"github.com/superseriousbusiness/gotosocial/internal/oauth"  ) @@ -76,9 +77,10 @@ func (m *Module) AccountGETHandler(c *gin.Context) {  		return  	} -	acctInfo, err := m.processor.AccountGet(c.Request.Context(), authed, targetAcctID) +	acctInfo, errWithCode := m.processor.AccountGet(c.Request.Context(), authed, targetAcctID)  	if err != nil { -		c.JSON(http.StatusNotFound, gin.H{"error": "not found"}) +		logrus.Debug(errWithCode.Error()) +		c.JSON(errWithCode.Code(), gin.H{"error": errWithCode.Safe()})  		return  	} diff --git a/internal/api/client/account/statuses.go b/internal/api/client/account/statuses.go index 67a9f7cb8..b440e582a 100644 --- a/internal/api/client/account/statuses.go +++ b/internal/api/client/account/statuses.go @@ -60,6 +60,12 @@ import (  //   default: false  //   in: query  //   required: false +// - name: exclude_reblogs +//   type: boolean +//   description: Exclude statuses that are a reblog/boost of another status. +//   default: false +//   in: query +//   required: false  // - name: max_id  //   type: string  //   description: |- @@ -75,7 +81,7 @@ import (  //   required: false  // - name: pinned_only  //   type: boolean -//   description: Show only pinned statuses. In other words,e xclude statuses that are not pinned to the given account ID. +//   description: Show only pinned statuses. In other words, exclude statuses that are not pinned to the given account ID.  //   default: false  //   in: query  //   required: false @@ -149,13 +155,25 @@ func (m *Module) AccountStatusesGETHandler(c *gin.Context) {  	if excludeRepliesString != "" {  		i, err := strconv.ParseBool(excludeRepliesString)  		if err != nil { -			l.Debugf("error parsing replies string: %s", err) +			l.Debugf("error parsing exclude replies string: %s", err)  			c.JSON(http.StatusBadRequest, gin.H{"error": "couldn't parse exclude replies query param"})  			return  		}  		excludeReplies = i  	} +	excludeReblogs := false +	excludeReblogsString := c.Query(ExcludeReblogsKey) +	if excludeReblogsString != "" { +		i, err := strconv.ParseBool(excludeReblogsString) +		if err != nil { +			l.Debugf("error parsing exclude reblogs string: %s", err) +			c.JSON(http.StatusBadRequest, gin.H{"error": "couldn't parse exclude reblogs query param"}) +			return +		} +		excludeReblogs = i +	} +  	maxID := ""  	maxIDString := c.Query(MaxIDKey)  	if maxIDString != "" { @@ -204,7 +222,7 @@ func (m *Module) AccountStatusesGETHandler(c *gin.Context) {  		publicOnly = i  	} -	statuses, errWithCode := m.processor.AccountStatusesGet(c.Request.Context(), authed, targetAcctID, limit, excludeReplies, maxID, minID, pinnedOnly, mediaOnly, publicOnly) +	statuses, errWithCode := m.processor.AccountStatusesGet(c.Request.Context(), authed, targetAcctID, limit, excludeReplies, excludeReblogs, maxID, minID, pinnedOnly, mediaOnly, publicOnly)  	if errWithCode != nil {  		l.Debugf("error from processor account statuses get: %s", errWithCode)  		c.JSON(errWithCode.Code(), gin.H{"error": errWithCode.Safe()})  | 
