aboutsummaryrefslogtreecommitdiff
path: root/service/service.go
diff options
context:
space:
mode:
authorr <r@freesoftwareextremist.com>2023-10-01 13:04:07 +0000
committerr <r@freesoftwareextremist.com>2023-10-01 13:04:07 +0000
commit81bdc7c705d5d21f62927167d5b2c8e4932c9570 (patch)
tree8bdd670af920ac0541391366b5711462d9df0fab /service/service.go
parent8e3999fc3d9761f9ce71c35a7154a77c251caa66 (diff)
downloadbloat-81bdc7c705d5d21f62927167d5b2c8e4932c9570.tar.gz
bloat-81bdc7c705d5d21f62927167d5b2c8e4932c9570.zip
Add profile edit page
Diffstat (limited to 'service/service.go')
-rw-r--r--service/service.go49
1 files changed, 49 insertions, 0 deletions
diff --git a/service/service.go b/service/service.go
index bc9e5b8..7043310 100644
--- a/service/service.go
+++ b/service/service.go
@@ -774,6 +774,55 @@ func (svc *service) FiltersPage(c *client) (err error) {
return svc.renderer.Render(c.rctx, c.w, renderer.FiltersPage, data)
}
+func (svc *service) ProfilePage(c *client) (err error) {
+ u, err := c.GetAccountCurrentUser(c.ctx)
+ if err != nil {
+ return
+ }
+ // Some instances allow more than 4 fields, but make sure that there are
+ // at least 4 fields in the slice because the template depends on it.
+ if u.Source.Fields == nil {
+ u.Source.Fields = new([]mastodon.Field)
+ }
+ for len(*u.Source.Fields) < 4 {
+ *u.Source.Fields = append(*u.Source.Fields, mastodon.Field{})
+ }
+ cdata := svc.cdata(c, "edit profile", 0, 0, "")
+ data := &renderer.ProfileData{
+ CommonData: cdata,
+ User: u,
+ }
+ return svc.renderer.Render(c.rctx, c.w, renderer.ProfilePage, data)
+}
+
+func (s *service) ProfileUpdate(c *client, name, bio string, avatar, banner *multipart.FileHeader,
+ fields []mastodon.Field, locked bool) (err error) {
+ // Need to pass empty data to clear fields
+ if len(fields) == 0 {
+ fields = append(fields, mastodon.Field{})
+ }
+ p := &mastodon.Profile{
+ DisplayName: &name,
+ Note: &bio,
+ Avatar: avatar,
+ Header: banner,
+ Fields: &fields,
+ Locked: &locked,
+ }
+ _, err = c.AccountUpdate(c.ctx, p)
+ return err
+}
+
+func (s *service) ProfileDelAvatar(c *client) (err error) {
+ _, err = c.AccountDeleteAvatar(c.ctx)
+ return
+}
+
+func (s *service) ProfileDelBanner(c *client) (err error) {
+ _, err = c.AccountDeleteHeader(c.ctx)
+ return err
+}
+
func (s *service) SingleInstance() (instance string, ok bool) {
if len(s.instance) > 0 {
instance = s.instance