fork
Configure Feed
Select the types of activity you want to include in your feed.
Live video on the AT Protocol
fork
Configure Feed
Select the types of activity you want to include in your feed.
1package spxrpc
2
3import (
4 "context"
5 "fmt"
6
7 "github.com/bluesky-social/indigo/api/atproto"
8 "github.com/bluesky-social/indigo/atproto/syntax"
9 "go.opentelemetry.io/otel"
10 placestreamtypes "stream.place/streamplace/pkg/streamplace"
11)
12
13func (s *Server) handlePlaceStreamGraphGetFollowingUser(ctx context.Context, subjectDID string, userDID string) (*placestreamtypes.GraphGetFollowingUser_Output, error) {
14 ctx, span := otel.Tracer("server").Start(ctx, "handlePlaceStreamGraphGetFollowingUser")
15 defer span.End()
16
17 _, didErr := syntax.ParseDID(userDID)
18 if userDID == "" || didErr != nil {
19 return nil, fmt.Errorf("missing or invalid user DID")
20 }
21
22 follow, err := s.model.GetUserFollowingUser(ctx, userDID, subjectDID)
23 if err != nil {
24 return nil, fmt.Errorf("failed to get user following: %w", err)
25 }
26
27 output := &placestreamtypes.GraphGetFollowingUser_Output{}
28 if follow != nil {
29 output.Follow = &atproto.RepoStrongRef{
30 Cid: "", // We don't store CID in our model
31 Uri: fmt.Sprintf("at://%s/app.bsky.graph.follow/%s", userDID, follow.RKey),
32 }
33 }
34
35 return output, nil
36}