feat(app): follow request acceptance

master
Xeronith 2022-08-19 17:33:54 +04:30
rodzic 8488e6f657
commit c3af1bfd6a
4 zmienionych plików z 28 dodań i 8 usunięć

Wyświetl plik

@ -9,8 +9,9 @@ import (
// Follower struct defines a follower
type Follower struct {
gorm.Model
Target string `gorm:"not null"`
Handle string `gorm:"not null"`
Target string `gorm:"not null"`
Handle string `gorm:"not null"`
Accepted bool `gorm:"not null"`
}
// CreateFollower creates a new entry in the followers's table
@ -22,3 +23,8 @@ func CreateFollower(follower *Follower) *gorm.DB {
func FindFollowers(dest interface{}, userIden interface{}) *gorm.DB {
return db.DB.Model(&Follower{}).Find(dest, "`target` = ?", userIden)
}
// AcceptFollower accepts a follow request
func AcceptFollower(id interface{}) *gorm.DB {
return db.DB.Model(&Follower{}).Where("id = ?", id).Update("accepted", true)
}

Wyświetl plik

@ -1,11 +1,13 @@
package types
type FollowerDTO struct {
Target string `json:"target" validate:"required"`
Handle string `json:"handle" validate:"required"`
Target string `json:"target" validate:"required"`
Handle string `json:"handle" validate:"required"`
Accepted bool `json:"accepted"`
}
type FollowerResponse struct {
Target string `json:"target"`
Handle string `json:"handle"`
Target string `json:"target"`
Handle string `json:"handle"`
Accepted bool `json:"accepted"`
}

Wyświetl plik

@ -37,3 +37,14 @@ var Followers = route.New(HttpGet, "/u/:username/followers", func(x IContext) er
x.Response().Header("Content-Type", "application/activity+json; charset=utf-8")
return x.WriteString(string(json))
})
var AcceptFollowRequest = route.New(HttpPut, "/u/:username/followers/:id/accept", func(x IContext) error {
id := x.Request().Params("id")
err := repos.AcceptFollower(id).Error
if err != nil {
return x.InternalServerError(err.Error())
}
return x.Nothing()
})

Wyświetl plik

@ -66,8 +66,9 @@ var InboxPost = route.New(HttpPost, "/u/:username/inbox", func(x IContext) error
}
if err := repos.CreateFollower(&repos.Follower{
Target: x.StringUtil().Format("%s://%s/u/%s", config.PROTOCOL, config.DOMAIN, username),
Handle: follower,
Target: x.StringUtil().Format("%s://%s/u/%s", config.PROTOCOL, config.DOMAIN, username),
Handle: follower,
Accepted: true,
}); err.Error != nil {
return x.Conflict(err.Error.Error())
}