Editing user profile; Warning! Mastodon compatibility broken and editing may lost your bio

This commit is contained in:
localhost_frssoft 2022-11-04 20:55:42 +03:00
parent 53353c0e64
commit 1160d00ee1
6 changed files with 104 additions and 2 deletions

View file

@ -858,6 +858,19 @@ func (s *service) SearchPage(c *client,
return s.renderer.Render(c.rctx, c.w, renderer.SearchPage, data)
}
func (s *service) UserEditPage(c *client) (err error) {
cdata := s.cdata(c, "useredit", 0, 0, "")
u, err := c.GetAccountCurrentUser(c.ctx)
if err != nil {
return
}
data := &renderer.UserEditData{
CommonData: cdata,
User: u,
}
return s.renderer.Render(c.rctx, c.w, renderer.UserEditPage, data)
}
func (s *service) SettingsPage(c *client) (err error) {
cdata := s.cdata(c, "settings", 0, 0, "")
data := &renderer.SettingsData{
@ -1141,6 +1154,11 @@ func (s *service) SaveSettings(c *client, settings *model.Settings) (err error)
return s.sessionRepo.Add(sess)
}
func (s *service) UserSave(c *client, usersettings mastodon.Profile) (err error) {
_, err = c.AccountUpdate(c.ctx, &usersettings)
return
}
func (s *service) MuteConversation(c *client, id string) (err error) {
_, err = c.MuteConversation(c.ctx, id)
return

View file

@ -243,6 +243,43 @@ func NewHandler(s *service, logger *log.Logger, staticDir string) http.Handler {
return s.SearchPage(c, sq, qType, offset)
}, SESSION, HTML)
userEditPage := handle(func(c *client) error {
return s.UserEditPage(c)
}, SESSION, HTML)
userEdit := handle(func(c *client) error {
displayName := c.r.FormValue("display-name")
note := c.r.FormValue("note")
locked := c.r.FormValue("locked") == "true"
bot := c.r.FormValue("bot") == "true"
acceptsChatMessages := c.r.FormValue("accepts-chat-messages") == "true"
hideFavourites := c.r.FormValue("hide-favourites") == "true"
pleromaProfile := mastodon.ProfilePleroma{
AcceptsChatMessages: &acceptsChatMessages,
HideFavourites: &hideFavourites,
}
usersettings := mastodon.Profile{
DisplayName: &displayName,
Note: &note,
Locked: &locked,
Fields: nil,
Source: nil,
Avatar: "",
Header: "",
Bot: &bot,
Pleroma: &pleromaProfile,
}
err := s.UserSave(c, usersettings)
if err != nil {
return err
}
redirect(c, "/user/"+c.r.FormValue("id"))
return nil
}, SESSION, HTML)
settingsPage := handle(func(c *client) error {
return s.SettingsPage(c)
}, SESSION, HTML)
@ -790,6 +827,8 @@ func NewHandler(s *service, logger *log.Logger, staticDir string) http.Handler {
r.HandleFunc("/aboutinstance", aboutInstance).Methods(http.MethodGet)
r.HandleFunc("/emojis", emojisPage).Methods(http.MethodGet)
r.HandleFunc("/search", searchPage).Methods(http.MethodGet)
r.HandleFunc("/useredit", userEditPage).Methods(http.MethodGet)
r.HandleFunc("/useredit", userEdit).Methods(http.MethodPost)
r.HandleFunc("/settings", settingsPage).Methods(http.MethodGet)
r.HandleFunc("/filters", filtersPage).Methods(http.MethodGet)
r.HandleFunc("/signin", signin).Methods(http.MethodPost)