|
|
|
|
package api
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"context"
|
|
|
|
|
"fmt"
|
|
|
|
|
|
|
|
|
|
"github.com/RasmusLindroth/go-mastodon"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func (ac *AccountClient) GetUserByID(id mastodon.ID) (Item, error) {
|
|
|
|
|
var item Item
|
|
|
|
|
acc, err := ac.Client.GetAccount(context.Background(), id)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
rel, err := ac.Client.GetAccountRelationships(context.Background(), []string{string(acc.ID)})
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
if len(rel) == 0 {
|
|
|
|
|
return nil, fmt.Errorf("couldn't find user relationship")
|
|
|
|
|
}
|
|
|
|
|
item = NewUserItem(&User{
|
|
|
|
|
Data: acc,
|
|
|
|
|
Relation: rel[0],
|
|
|
|
|
}, false)
|
|
|
|
|
return item, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (ac *AccountClient) FollowToggle(u *User) (*mastodon.Relationship, error) {
|
|
|
|
|
if u.Relation.Following {
|
|
|
|
|
return ac.UnfollowUser(u.Data)
|
|
|
|
|
}
|
|
|
|
|
return ac.FollowUser(u.Data)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (ac *AccountClient) FollowUser(u *mastodon.Account) (*mastodon.Relationship, error) {
|
|
|
|
|
return ac.Client.AccountFollow(context.Background(), u.ID)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (ac *AccountClient) UnfollowUser(u *mastodon.Account) (*mastodon.Relationship, error) {
|
|
|
|
|
return ac.Client.AccountUnfollow(context.Background(), u.ID)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (ac *AccountClient) BlockToggle(u *User) (*mastodon.Relationship, error) {
|
|
|
|
|
if u.Relation.Blocking {
|
|
|
|
|
return ac.UnblockUser(u.Data)
|
|
|
|
|
}
|
|
|
|
|
return ac.BlockUser(u.Data)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (ac *AccountClient) BlockUser(u *mastodon.Account) (*mastodon.Relationship, error) {
|
|
|
|
|
return ac.Client.AccountBlock(context.Background(), u.ID)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (ac *AccountClient) UnblockUser(u *mastodon.Account) (*mastodon.Relationship, error) {
|
|
|
|
|
return ac.Client.AccountUnblock(context.Background(), u.ID)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (ac *AccountClient) MuteToggle(u *User) (*mastodon.Relationship, error) {
|
|
|
|
|
if u.Relation.Blocking {
|
|
|
|
|
return ac.UnmuteUser(u.Data)
|
|
|
|
|
}
|
|
|
|
|
return ac.MuteUser(u.Data)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (ac *AccountClient) MuteUser(u *mastodon.Account) (*mastodon.Relationship, error) {
|
|
|
|
|
return ac.Client.AccountMute(context.Background(), u.ID)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (ac *AccountClient) UnmuteUser(u *mastodon.Account) (*mastodon.Relationship, error) {
|
|
|
|
|
return ac.Client.AccountUnmute(context.Background(), u.ID)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (ac *AccountClient) FollowRequestAccept(u *mastodon.Account) error {
|
|
|
|
|
return ac.Client.FollowRequestAuthorize(context.Background(), u.ID)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (ac *AccountClient) FollowRequestDeny(u *mastodon.Account) error {
|
|
|
|
|
return ac.Client.FollowRequestReject(context.Background(), u.ID)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (ac *AccountClient) SavePreferences(p *mastodon.Profile) error {
|
|
|
|
|
acc, err := ac.Client.AccountUpdate(context.Background(), p)
|
|
|
|
|
if err == nil {
|
|
|
|
|
ac.Me = acc
|
|
|
|
|
}
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (ac *AccountClient) AddUserToList(u *mastodon.Account, l *mastodon.List) error {
|
|
|
|
|
return ac.Client.AddToList(context.Background(), l.ID, u.ID)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (ac *AccountClient) DeleteUserFromList(u *mastodon.Account, l *mastodon.List) error {
|
|
|
|
|
return ac.Client.RemoveFromList(context.Background(), l.ID, u.ID)
|
|
|
|
|
}
|