Bluesky app fork with some witchin' additions 💫
0
fork

Configure Feed

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

Merge pull request #2743 from bluesky-social/support_did_previews

Support previews for links using DIDs and not just handles

authored by

Jaz and committed by
GitHub
250b48d5 15e90356

+20 -19
+20 -19
bskyweb/cmd/bskyweb/server.go
··· 203 203 e.GET("/support/copyright", server.WebGeneric) 204 204 205 205 // profile endpoints; only first populates info 206 - e.GET("/profile/:handle", server.WebProfile) 207 - e.GET("/profile/:handle/follows", server.WebGeneric) 208 - e.GET("/profile/:handle/followers", server.WebGeneric) 209 - e.GET("/profile/:handle/lists/:rkey", server.WebGeneric) 210 - e.GET("/profile/:handle/feed/:rkey", server.WebGeneric) 211 - e.GET("/profile/:handle/feed/:rkey/liked-by", server.WebGeneric) 206 + e.GET("/profile/:handleOrDID", server.WebProfile) 207 + e.GET("/profile/:handleOrDID/follows", server.WebGeneric) 208 + e.GET("/profile/:handleOrDID/followers", server.WebGeneric) 209 + e.GET("/profile/:handleOrDID/lists/:rkey", server.WebGeneric) 210 + e.GET("/profile/:handleOrDID/feed/:rkey", server.WebGeneric) 211 + e.GET("/profile/:handleOrDID/feed/:rkey/liked-by", server.WebGeneric) 212 212 213 213 // profile RSS feed (DID not handle) 214 214 e.GET("/profile/:ident/rss", server.WebProfileRSS) 215 215 216 216 // post endpoints; only first populates info 217 - e.GET("/profile/:handle/post/:rkey", server.WebPost) 218 - e.GET("/profile/:handle/post/:rkey/liked-by", server.WebGeneric) 219 - e.GET("/profile/:handle/post/:rkey/reposted-by", server.WebGeneric) 217 + e.GET("/profile/:handleOrDID/post/:rkey", server.WebPost) 218 + e.GET("/profile/:handleOrDID/post/:rkey/liked-by", server.WebGeneric) 219 + e.GET("/profile/:handleOrDID/post/:rkey/reposted-by", server.WebGeneric) 220 220 221 221 // Mailmodo 222 222 e.POST("/api/waitlist", server.apiWaitlist) ··· 299 299 if err != nil { 300 300 return c.Render(http.StatusOK, "post.html", data) 301 301 } 302 - handleParam := c.Param("handle") 303 - handle, err := syntax.ParseHandle(handleParam) 302 + handleOrDIDParam := c.Param("handleOrDID") 303 + handleOrDID, err := syntax.ParseAtIdentifier(handleOrDIDParam) 304 304 if err != nil { 305 305 return c.Render(http.StatusOK, "post.html", data) 306 306 } 307 - handle = handle.Normalize() 307 + 308 + identifier := handleOrDID.Normalize().String() 308 309 309 310 // requires two fetches: first fetch profile (!) 310 - pv, err := appbsky.ActorGetProfile(ctx, srv.xrpcc, handle.String()) 311 + pv, err := appbsky.ActorGetProfile(ctx, srv.xrpcc, identifier) 311 312 if err != nil { 312 - log.Warnf("failed to fetch handle: %s\t%v", handle, err) 313 + log.Warnf("failed to fetch profile for: %s\t%v", identifier, err) 313 314 return c.Render(http.StatusOK, "post.html", data) 314 315 } 315 316 unauthedViewingOkay := true ··· 367 368 data := pongo2.Context{} 368 369 369 370 // sanity check arguments. don't 4xx, just let app handle if not expected format 370 - handleParam := c.Param("handle") 371 - handle, err := syntax.ParseHandle(handleParam) 371 + handleOrDIDParam := c.Param("handleOrDID") 372 + handleOrDID, err := syntax.ParseAtIdentifier(handleOrDIDParam) 372 373 if err != nil { 373 374 return c.Render(http.StatusOK, "profile.html", data) 374 375 } 375 - handle = handle.Normalize() 376 + identifier := handleOrDID.Normalize().String() 376 377 377 - pv, err := appbsky.ActorGetProfile(ctx, srv.xrpcc, handle.String()) 378 + pv, err := appbsky.ActorGetProfile(ctx, srv.xrpcc, identifier) 378 379 if err != nil { 379 - log.Warnf("failed to fetch handle: %s\t%v", handle, err) 380 + log.Warnf("failed to fetch profile for: %s\t%v", identifier, err) 380 381 return c.Render(http.StatusOK, "profile.html", data) 381 382 } 382 383 unauthedViewingOkay := true