mirror of
https://git.phreedom.club/localhost_frssoft/bloat.git
synced 2024-11-25 13:21:28 +00:00
Editing user profile; Warning! Mastodon compatibility broken and editing may lost your bio
This commit is contained in:
parent
53353c0e64
commit
1160d00ee1
|
@ -13,6 +13,9 @@ type AccountPleroma struct {
|
||||||
Relationship Relationship `json:"relationship"`
|
Relationship Relationship `json:"relationship"`
|
||||||
IsAdmin bool `json:"is_admin"`
|
IsAdmin bool `json:"is_admin"`
|
||||||
IsModerator bool `json:"is_moderator"`
|
IsModerator bool `json:"is_moderator"`
|
||||||
|
IsConfirmed bool `json:"is_confirmed"`
|
||||||
|
AcceptsChatMessages bool `json:"accepts_chat_messages"`
|
||||||
|
HideFavourites *bool `json:"hide_favorites"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Account hold information for mastodon account.
|
// Account hold information for mastodon account.
|
||||||
|
@ -37,6 +40,7 @@ type Account struct {
|
||||||
Fields []Field `json:"fields"`
|
Fields []Field `json:"fields"`
|
||||||
Bot bool `json:"bot"`
|
Bot bool `json:"bot"`
|
||||||
Pleroma *AccountPleroma `json:"pleroma"`
|
Pleroma *AccountPleroma `json:"pleroma"`
|
||||||
|
MastodonAccount bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// Field is a Mastodon account profile field.
|
// Field is a Mastodon account profile field.
|
||||||
|
@ -60,6 +64,7 @@ func (c *Client) GetAccount(ctx context.Context, id string) (*Account, error) {
|
||||||
var account Account
|
var account Account
|
||||||
params := url.Values{}
|
params := url.Values{}
|
||||||
if account.Pleroma != nil {
|
if account.Pleroma != nil {
|
||||||
|
account.MastodonAccount = false
|
||||||
params.Set("with_relationships", "1")
|
params.Set("with_relationships", "1")
|
||||||
}
|
}
|
||||||
err := c.doAPI(ctx, http.MethodGet, fmt.Sprintf("/api/v1/accounts/%s", url.PathEscape(string(id))), params, &account, nil)
|
err := c.doAPI(ctx, http.MethodGet, fmt.Sprintf("/api/v1/accounts/%s", url.PathEscape(string(id))), params, &account, nil)
|
||||||
|
@ -73,9 +78,16 @@ func (c *Client) GetAccount(ctx context.Context, id string) (*Account, error) {
|
||||||
}
|
}
|
||||||
if len(rs) > 0 {
|
if len(rs) > 0 {
|
||||||
if account.Pleroma != nil {
|
if account.Pleroma != nil {
|
||||||
account.Pleroma = &AccountPleroma{*rs[0], account.Pleroma.IsAdmin, account.Pleroma.IsModerator}
|
account.Pleroma = &AccountPleroma{*rs[0],
|
||||||
|
account.Pleroma.IsAdmin,
|
||||||
|
account.Pleroma.IsModerator,
|
||||||
|
account.Pleroma.IsConfirmed,
|
||||||
|
account.Pleroma.AcceptsChatMessages,
|
||||||
|
account.Pleroma.HideFavourites,
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
account.Pleroma = &AccountPleroma{*rs[0], false, false}
|
account.MastodonAccount = true
|
||||||
|
account.Pleroma = &AccountPleroma{*rs[0], false, false, false, false, nil}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -105,6 +117,23 @@ type Profile struct {
|
||||||
// Set the base64 encoded character string of the image.
|
// Set the base64 encoded character string of the image.
|
||||||
Avatar string
|
Avatar string
|
||||||
Header string
|
Header string
|
||||||
|
|
||||||
|
//Other settings
|
||||||
|
Bot *bool
|
||||||
|
Pleroma *ProfilePleroma
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
type ProfilePleroma struct {
|
||||||
|
AcceptsChatMessages *bool
|
||||||
|
ActorType *string
|
||||||
|
AllowFollowingMove *bool
|
||||||
|
Discoverable *bool
|
||||||
|
HideFavourites *bool
|
||||||
|
HideFollowers *bool
|
||||||
|
HideFollows *bool
|
||||||
|
HideFollowersCount *bool
|
||||||
|
HideFollowsCount *bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// AccountUpdate updates the information of the current user.
|
// AccountUpdate updates the information of the current user.
|
||||||
|
@ -143,6 +172,15 @@ func (c *Client) AccountUpdate(ctx context.Context, profile *Profile) (*Account,
|
||||||
params.Set("header", profile.Header)
|
params.Set("header", profile.Header)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if profile.Bot != nil {
|
||||||
|
params.Set("bot", strconv.FormatBool(*profile.Bot))
|
||||||
|
}
|
||||||
|
if profile.Pleroma != nil {
|
||||||
|
if profile.Pleroma.AcceptsChatMessages != nil {
|
||||||
|
params.Set("accepts_chat_messages", strconv.FormatBool(*profile.Pleroma.AcceptsChatMessages))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var account Account
|
var account Account
|
||||||
err := c.doAPI(ctx, http.MethodPatch, "/api/v1/accounts/update_credentials", params, &account, nil)
|
err := c.doAPI(ctx, http.MethodPatch, "/api/v1/accounts/update_credentials", params, &account, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -109,6 +109,11 @@ type UserData struct {
|
||||||
NextLink string
|
NextLink string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type UserEditData struct {
|
||||||
|
*CommonData
|
||||||
|
User *mastodon.Account
|
||||||
|
}
|
||||||
|
|
||||||
type UserSearchData struct {
|
type UserSearchData struct {
|
||||||
*CommonData
|
*CommonData
|
||||||
User *mastodon.Account
|
User *mastodon.Account
|
||||||
|
|
|
@ -34,6 +34,7 @@ const (
|
||||||
RetweetedByPage = "retweetedby.tmpl"
|
RetweetedByPage = "retweetedby.tmpl"
|
||||||
SearchPage = "search.tmpl"
|
SearchPage = "search.tmpl"
|
||||||
SettingsPage = "settings.tmpl"
|
SettingsPage = "settings.tmpl"
|
||||||
|
UserEditPage = "useredit.tmpl"
|
||||||
FiltersPage = "filters.tmpl"
|
FiltersPage = "filters.tmpl"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -858,6 +858,19 @@ func (s *service) SearchPage(c *client,
|
||||||
return s.renderer.Render(c.rctx, c.w, renderer.SearchPage, data)
|
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) {
|
func (s *service) SettingsPage(c *client) (err error) {
|
||||||
cdata := s.cdata(c, "settings", 0, 0, "")
|
cdata := s.cdata(c, "settings", 0, 0, "")
|
||||||
data := &renderer.SettingsData{
|
data := &renderer.SettingsData{
|
||||||
|
@ -1141,6 +1154,11 @@ func (s *service) SaveSettings(c *client, settings *model.Settings) (err error)
|
||||||
return s.sessionRepo.Add(sess)
|
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) {
|
func (s *service) MuteConversation(c *client, id string) (err error) {
|
||||||
_, err = c.MuteConversation(c.ctx, id)
|
_, err = c.MuteConversation(c.ctx, id)
|
||||||
return
|
return
|
||||||
|
|
|
@ -243,6 +243,43 @@ func NewHandler(s *service, logger *log.Logger, staticDir string) http.Handler {
|
||||||
return s.SearchPage(c, sq, qType, offset)
|
return s.SearchPage(c, sq, qType, offset)
|
||||||
}, SESSION, HTML)
|
}, 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: ¬e,
|
||||||
|
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 {
|
settingsPage := handle(func(c *client) error {
|
||||||
return s.SettingsPage(c)
|
return s.SettingsPage(c)
|
||||||
}, SESSION, HTML)
|
}, 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("/aboutinstance", aboutInstance).Methods(http.MethodGet)
|
||||||
r.HandleFunc("/emojis", emojisPage).Methods(http.MethodGet)
|
r.HandleFunc("/emojis", emojisPage).Methods(http.MethodGet)
|
||||||
r.HandleFunc("/search", searchPage).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("/settings", settingsPage).Methods(http.MethodGet)
|
||||||
r.HandleFunc("/filters", filtersPage).Methods(http.MethodGet)
|
r.HandleFunc("/filters", filtersPage).Methods(http.MethodGet)
|
||||||
r.HandleFunc("/signin", signin).Methods(http.MethodPost)
|
r.HandleFunc("/signin", signin).Methods(http.MethodPost)
|
||||||
|
|
|
@ -125,6 +125,7 @@
|
||||||
- <a href="/user/{{.User.ID}}/mutes"> mutes </a>
|
- <a href="/user/{{.User.ID}}/mutes"> mutes </a>
|
||||||
- <a href="/user/{{.User.ID}}/blocks"> blocks </a>
|
- <a href="/user/{{.User.ID}}/blocks"> blocks </a>
|
||||||
{{if .User.Locked}}- <a href="/user/{{.User.ID}}/requests"> requests </a>{{end}}
|
{{if .User.Locked}}- <a href="/user/{{.User.ID}}/requests"> requests </a>{{end}}
|
||||||
|
- <a href="/useredit"> edit </a>
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
<div>
|
<div>
|
||||||
|
|
Loading…
Reference in a new issue