mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-31 06:22:25 -05:00 
			
		
		
		
	restructure a bunch, get unfaves working
This commit is contained in:
		
					parent
					
						
							
								de3b6bc6d9
							
						
					
				
			
			
				commit
				
					
						1f44b06c06
					
				
			
		
					 25 changed files with 1190 additions and 681 deletions
				
			
		|  | @ -127,6 +127,13 @@ func (p *processor) processFromClientAPI(clientMsg gtsmodel.FromClientAPI) error | |||
| 				return errors.New("undo was not parseable as *gtsmodel.Follow") | ||||
| 			} | ||||
| 			return p.federateUnfollow(follow, clientMsg.OriginAccount, clientMsg.TargetAccount) | ||||
| 		case gtsmodel.ActivityStreamsLike: | ||||
| 			// UNDO LIKE/FAVE | ||||
| 			fave, ok := clientMsg.GTSModel.(*gtsmodel.StatusFave) | ||||
| 			if !ok { | ||||
| 				return errors.New("undo was not parseable as *gtsmodel.StatusFave") | ||||
| 			} | ||||
| 			return p.federateUnfave(fave, clientMsg.OriginAccount, clientMsg.TargetAccount) | ||||
| 		} | ||||
| 	} | ||||
| 	return nil | ||||
|  | @ -210,6 +217,45 @@ func (p *processor) federateUnfollow(follow *gtsmodel.Follow, originAccount *gts | |||
| 	return err | ||||
| } | ||||
| 
 | ||||
| func (p *processor) federateUnfave(fave *gtsmodel.StatusFave, originAccount *gtsmodel.Account, targetAccount *gtsmodel.Account) error { | ||||
| 	// if both accounts are local there's nothing to do here | ||||
| 	if originAccount.Domain == "" && targetAccount.Domain == "" { | ||||
| 		return nil | ||||
| 	} | ||||
| 
 | ||||
| 	// create the AS fave | ||||
| 	asFave, err := p.tc.FaveToAS(fave) | ||||
| 	if err != nil { | ||||
| 		return fmt.Errorf("federateFave: error converting fave to as format: %s", err) | ||||
| 	} | ||||
| 
 | ||||
| 	targetAccountURI, err := url.Parse(targetAccount.URI) | ||||
| 	if err != nil { | ||||
| 		return fmt.Errorf("error parsing uri %s: %s", targetAccount.URI, err) | ||||
| 	} | ||||
| 
 | ||||
| 	// create an Undo and set the appropriate actor on it | ||||
| 	undo := streams.NewActivityStreamsUndo() | ||||
| 	undo.SetActivityStreamsActor(asFave.GetActivityStreamsActor()) | ||||
| 
 | ||||
| 	// Set the fave as the 'object' property. | ||||
| 	undoObject := streams.NewActivityStreamsObjectProperty() | ||||
| 	undoObject.AppendActivityStreamsLike(asFave) | ||||
| 	undo.SetActivityStreamsObject(undoObject) | ||||
| 
 | ||||
| 	// Set the To of the undo as the target of the fave | ||||
| 	undoTo := streams.NewActivityStreamsToProperty() | ||||
| 	undoTo.AppendIRI(targetAccountURI) | ||||
| 	undo.SetActivityStreamsTo(undoTo) | ||||
| 
 | ||||
| 	outboxIRI, err := url.Parse(originAccount.OutboxURI) | ||||
| 	if err != nil { | ||||
| 		return fmt.Errorf("federateFave: error parsing outboxURI %s: %s", originAccount.OutboxURI, err) | ||||
| 	} | ||||
| 	_, err = p.federator.FederatingActor().Send(context.Background(), outboxIRI, undo) | ||||
| 	return err | ||||
| } | ||||
| 
 | ||||
| func (p *processor) federateAcceptFollowRequest(follow *gtsmodel.Follow, originAccount *gtsmodel.Account, targetAccount *gtsmodel.Account) error { | ||||
| 	// if both accounts are local there's nothing to do here | ||||
| 	if originAccount.Domain == "" && targetAccount.Domain == "" { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue