loading up the forgejo repo on tangled to test page performance
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

federated-star: finalize receive activity (#3871)

PR will finalize the ability to receive a federated star from a remote instance.

This is part of: https://codeberg.org/forgejo/forgejo/pulls/1680

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3871
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: Michael Jerger <michael.jerger@meissa-gmbh.de>
Co-committed-by: Michael Jerger <michael.jerger@meissa-gmbh.de>

authored by

Michael Jerger
Michael Jerger
and committed by
Earl Warren
b01f3bb2 32222d7d

+20 -1
-1
.deadcode-out
··· 45 45 46 46 package "code.gitea.io/gitea/models/forgefed" 47 47 func GetFederationHost 48 - func UpdateFederationHost 49 48 50 49 package "code.gitea.io/gitea/models/forgejo/semver" 51 50 func GetVersion
+15
services/federation/federation_service.go
··· 11 11 "strings" 12 12 13 13 "code.gitea.io/gitea/models/forgefed" 14 + "code.gitea.io/gitea/models/repo" 14 15 "code.gitea.io/gitea/models/user" 15 16 "code.gitea.io/gitea/modules/activitypub" 16 17 "code.gitea.io/gitea/modules/auth/password" ··· 77 78 log.Info("Created federatedUser from ap: %v", user) 78 79 } 79 80 log.Info("Got user:%v", user.Name) 81 + 82 + // execute the activity if the repo was not stared already 83 + alreadyStared := repo.IsStaring(ctx, user.ID, repositoryID) 84 + if !alreadyStared { 85 + err = repo.StarRepo(ctx, user.ID, repositoryID, true) 86 + if err != nil { 87 + return http.StatusNotAcceptable, "Error staring", err 88 + } 89 + } 90 + federationHost.LatestActivity = activity.StartTime 91 + err = forgefed.UpdateFederationHost(ctx, federationHost) 92 + if err != nil { 93 + return http.StatusNotAcceptable, "Error updating federatedHost", err 94 + } 80 95 81 96 return 0, "", nil 82 97 }
+5
tests/integration/api_activitypub_repository_test.go
··· 203 203 204 204 federatedUser = unittest.AssertExistsAndLoadBean(t, &user.FederatedUser{ExternalID: "30", FederationHostID: federationHost.ID}) 205 205 unittest.AssertExistsAndLoadBean(t, &user.User{ID: federatedUser.UserID}) 206 + 207 + // Replay activity2. 208 + resp, err = c.Post(activity2, repoInboxURL) 209 + assert.NoError(t, err) 210 + assert.Equal(t, http.StatusNotAcceptable, resp.StatusCode) 206 211 }) 207 212 } 208 213