Monorepo for Tangled
0
fork

Configure Feed

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

appview/oauth: refresh sessions in bsky post updater

makes the homepage more "live".

Signed-off-by: oppiliappan <me@oppi.li>

+23 -12
+4 -4
appview/oauth/handler.go
··· 476 476 return &session, nil 477 477 } 478 478 479 - func (s *AppPasswordSession) refreshSession() error { 479 + func (s *AppPasswordSession) RefreshSession() error { 480 480 refreshURL := s.PdsEndpoint + "/xrpc/com.atproto.server.refreshSession" 481 481 req, err := http.NewRequestWithContext(context.Background(), "POST", refreshURL, nil) 482 482 if err != nil { ··· 520 520 return nil 521 521 } 522 522 523 - func (s *AppPasswordSession) isValid() bool { 523 + func (s *AppPasswordSession) IsValid() bool { 524 524 return time.Now().Before(s.ExpiresAt) 525 525 } 526 526 527 527 func (s *AppPasswordSession) putRecord(record any, collection string) error { 528 - if !s.isValid() { 528 + if !s.IsValid() { 529 529 s.Logger.Debug("access token expired, refreshing session") 530 - if err := s.refreshSession(); err != nil { 530 + if err := s.RefreshSession(); err != nil { 531 531 return fmt.Errorf("failed to refresh session: %w", err) 532 532 } 533 533 s.Logger.Debug("session refreshed")
+19 -8
appview/state/state.go
··· 705 705 return 706 706 } 707 707 708 - client := xrpc.Client{ 709 - Auth: &xrpc.AuthInfo{ 710 - AccessJwt: session.AccessJwt, 711 - Did: session.Did, 712 - }, 713 - Host: session.PdsEndpoint, 714 - } 715 - 716 708 l := log.SubLogger(logger, "bluesky") 717 709 718 710 ticker := time.NewTicker(config.Bluesky.UpdateInterval) 719 711 defer ticker.Stop() 720 712 721 713 for { 714 + // refresh session if necessary 715 + if !session.IsValid() { 716 + l.Debug("access token expired, refreshing session") 717 + if err := session.RefreshSession(); err != nil { 718 + l.Error("failed to refresh session, stopping bluesky updater", "err", err) 719 + return 720 + } 721 + l.Debug("session refreshed") 722 + } 723 + 724 + // make client 725 + client := xrpc.Client{ 726 + Auth: &xrpc.AuthInfo{ 727 + AccessJwt: session.AccessJwt, 728 + Did: session.Did, 729 + }, 730 + Host: session.PdsEndpoint, 731 + } 732 + 722 733 posts, _, err := bsky.FetchPosts(ctx, &client, 20, "") 723 734 if err != nil { 724 735 l.Error("failed to fetch bluesky posts", "err", err)