mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2025-11-18 09:17:30 -06:00
some updates to statuses and accounts
This commit is contained in:
parent
30718d7d10
commit
0b8b0948f6
11 changed files with 251 additions and 132 deletions
|
|
@ -364,7 +364,7 @@ func (f *federatingDB) Get(c context.Context, id *url.URL) (value vocab.Type, er
|
|||
//
|
||||
// Under certain conditions and network activities, Create may be called
|
||||
// multiple times for the same ActivityStreams object.
|
||||
func (f *federatingDB) Create(c context.Context, asType vocab.Type) error {
|
||||
func (f *federatingDB) Create(ctx context.Context, asType vocab.Type) error {
|
||||
l := f.log.WithFields(
|
||||
logrus.Fields{
|
||||
"func": "Create",
|
||||
|
|
@ -373,6 +373,24 @@ func (f *federatingDB) Create(c context.Context, asType vocab.Type) error {
|
|||
)
|
||||
l.Debugf("received CREATE asType %+v", asType)
|
||||
|
||||
targetAcctI := ctx.Value(util.APAccount)
|
||||
if targetAcctI == nil {
|
||||
l.Error("target account wasn't set on context")
|
||||
}
|
||||
targetAcct, ok := targetAcctI.(*gtsmodel.Account)
|
||||
if !ok {
|
||||
l.Error("target account was set on context but couldn't be parsed")
|
||||
}
|
||||
|
||||
fromFederatorChanI := ctx.Value(util.APFromFederatorChanKey)
|
||||
if fromFederatorChanI == nil {
|
||||
l.Error("from federator channel wasn't set on context")
|
||||
}
|
||||
fromFederatorChan, ok := fromFederatorChanI.(chan gtsmodel.FromFederator)
|
||||
if !ok {
|
||||
l.Error("from federator channel was set on context but couldn't be parsed")
|
||||
}
|
||||
|
||||
switch gtsmodel.ActivityStreamsActivity(asType.GetTypeName()) {
|
||||
case gtsmodel.ActivityStreamsCreate:
|
||||
create, ok := asType.(vocab.ActivityStreamsCreate)
|
||||
|
|
@ -391,6 +409,12 @@ func (f *federatingDB) Create(c context.Context, asType vocab.Type) error {
|
|||
if err := f.db.Put(status); err != nil {
|
||||
return fmt.Errorf("database error inserting status: %s", err)
|
||||
}
|
||||
|
||||
fromFederatorChan <- gtsmodel.FromFederator{
|
||||
APObjectType: gtsmodel.ActivityStreamsNote,
|
||||
APActivityType: gtsmodel.ActivityStreamsCreate,
|
||||
Activity: status,
|
||||
}
|
||||
}
|
||||
}
|
||||
case gtsmodel.ActivityStreamsFollow:
|
||||
|
|
@ -407,6 +431,12 @@ func (f *federatingDB) Create(c context.Context, asType vocab.Type) error {
|
|||
if err := f.db.Put(followRequest); err != nil {
|
||||
return fmt.Errorf("database error inserting follow request: %s", err)
|
||||
}
|
||||
|
||||
if !targetAcct.Locked {
|
||||
if err := f.db.AcceptFollowRequest(followRequest.AccountID, followRequest.TargetAccountID); err != nil {
|
||||
return fmt.Errorf("database error accepting follow request: %s", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -71,49 +71,7 @@ func (f *federator) PostInboxRequestBodyHook(ctx context.Context, r *http.Reques
|
|||
l.Debug(err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// derefence the actor of the activity already
|
||||
// var requestingActorIRI *url.URL
|
||||
// actorProp := activity.GetActivityStreamsActor()
|
||||
// if actorProp != nil {
|
||||
// for i := actorProp.Begin(); i != actorProp.End(); i = i.Next() {
|
||||
// if i.IsIRI() {
|
||||
// requestingActorIRI = i.GetIRI()
|
||||
// break
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// if requestingActorIRI != nil {
|
||||
|
||||
// requestedAccountI := ctx.Value(util.APAccount)
|
||||
// requestedAccount, ok := requestedAccountI.(*gtsmodel.Account)
|
||||
// if !ok {
|
||||
// return nil, errors.New("requested account was not set on request context")
|
||||
// }
|
||||
|
||||
// requestingActor := >smodel.Account{}
|
||||
// if err := f.db.GetWhere("uri", requestingActorIRI.String(), requestingActor); err != nil {
|
||||
// // there's been a proper error so return it
|
||||
// if _, ok := err.(db.ErrNoEntries); !ok {
|
||||
// return nil, fmt.Errorf("error getting requesting actor with id %s: %s", requestingActorIRI.String(), err)
|
||||
// }
|
||||
|
||||
// // we don't know this account (yet) so let's dereference it right now
|
||||
// person, err := f.DereferenceRemoteAccount(requestedAccount.Username, publicKeyOwnerURI)
|
||||
// if err != nil {
|
||||
// return ctx, false, fmt.Errorf("error dereferencing account with public key id %s: %s", publicKeyOwnerURI.String(), err)
|
||||
// }
|
||||
|
||||
// a, err := f.typeConverter.ASRepresentationToAccount(person)
|
||||
// if err != nil {
|
||||
// return ctx, false, fmt.Errorf("error converting person with public key id %s to account: %s", publicKeyOwnerURI.String(), err)
|
||||
// }
|
||||
// requestingAccount = a
|
||||
// }
|
||||
// }
|
||||
|
||||
// set the activity on the context for use later on
|
||||
|
||||
return context.WithValue(ctx, util.APActivity, activity), nil
|
||||
}
|
||||
|
||||
|
|
@ -285,14 +243,6 @@ func (f *federator) FederatingCallbacks(ctx context.Context) (wrapped pub.Federa
|
|||
}
|
||||
|
||||
wrapped = pub.FederatingWrappedCallbacks{
|
||||
// Follow handles additional side effects for the Follow ActivityStreams
|
||||
// type, specific to the application using go-fed.
|
||||
//
|
||||
// The wrapping function can have one of several default behaviors,
|
||||
// depending on the value of the OnFollow setting.
|
||||
Follow: func(context.Context, vocab.ActivityStreamsFollow) error {
|
||||
return nil
|
||||
},
|
||||
// OnFollow determines what action to take for this particular callback
|
||||
// if a Follow Activity is handled.
|
||||
OnFollow: onFollow,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue