[feature] Let accounts set default status format, and use this when processing new statuses (#739)

* add post_format to acct & use it when making post

* update swagger docs

* add status_format updating to frontend

* fix up tests

* post_format => status_format

* add status_format to account validation
This commit is contained in:
tobi
2022-08-06 12:09:21 +02:00
committed by GitHub
parent 3ab3f58342
commit f5689a9e5f
17 changed files with 259 additions and 21 deletions

View File

@@ -114,6 +114,14 @@ func (p *processor) Update(ctx context.Context, account *gtsmodel.Account, form
privacy := p.tc.APIVisToVis(apimodel.Visibility(*form.Source.Privacy))
account.Privacy = privacy
}
if form.Source.StatusFormat != nil {
if err := validate.StatusFormat(*form.Source.StatusFormat); err != nil {
return nil, gtserror.NewErrorBadRequest(err, err.Error())
}
account.StatusFormat = *form.Source.StatusFormat
}
}
updatedAccount, err := p.db.UpdateAccount(ctx, account)

View File

@@ -23,6 +23,7 @@ import (
"errors"
"fmt"
"github.com/superseriousbusiness/gotosocial/internal/api/model"
apimodel "github.com/superseriousbusiness/gotosocial/internal/api/model"
"github.com/superseriousbusiness/gotosocial/internal/db"
"github.com/superseriousbusiness/gotosocial/internal/gtserror"
@@ -269,9 +270,21 @@ func (p *processor) ProcessContent(ctx context.Context, form *apimodel.AdvancedS
return nil
}
// if format wasn't specified we should set the default
// if format wasn't specified we should try to figure out what format this user prefers
if form.Format == "" {
form.Format = apimodel.StatusFormatDefault
acct, err := p.db.GetAccountByID(ctx, accountID)
if err != nil {
return fmt.Errorf("error processing new content: couldn't retrieve account from db to check post format: %s", err)
}
switch acct.StatusFormat {
case "plain":
form.Format = model.StatusFormatPlain
case "markdown":
form.Format = model.StatusFormatMarkdown
default:
form.Format = model.StatusFormatDefault
}
}
// parse content out of the status depending on what format has been submitted