A social RSS reader built on the AT Protocol. glean.at
glean atproto atmosphere rss feed social app
14
fork

Configure Feed

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

Fix users profile handle

+6 -6
+1 -1
internal/db/db.go
··· 9 9 "github.com/mattn/go-sqlite3" 10 10 ) 11 11 12 - const DSN = "_journal_mode=WAL&_busy_timeout=5000&_synchronous=NORMAL&_cache=shared" 12 + const DSN = "_journal_mode=WAL&_busy_timeout=30000&_synchronous=NORMAL&_cache=shared" 13 13 14 14 func init() { 15 15 sql.Register("sqlite3_glean", &sqlite3.SQLiteDriver{
+2 -2
internal/db/user.go
··· 33 33 34 34 stmt, err := tx.PrepareContext(ctx, ` 35 35 INSERT INTO users (did, handle, display_name, avatar_url, updated_at) 36 - VALUES (?, ?, ?, ?, CURRENT_TIMESTAMP) 36 + VALUES (?, COALESCE(NULLIF(?, ''), ?), NULLIF(?, ''), NULLIF(?, ''), CURRENT_TIMESTAMP) 37 37 ON CONFLICT(did) DO UPDATE SET 38 38 handle = COALESCE(NULLIF(excluded.handle, ''), users.handle), 39 39 display_name = COALESCE(NULLIF(excluded.display_name, ''), users.display_name), ··· 46 46 defer stmt.Close() 47 47 48 48 for _, u := range users { 49 - if _, err := stmt.ExecContext(ctx, u.DID, u.Handle, u.DisplayName, u.AvatarURL); err != nil { 49 + if _, err := stmt.ExecContext(ctx, u.DID, u.Handle, u.DID, u.DisplayName, u.AvatarURL); err != nil { 50 50 return err 51 51 } 52 52 }
+3 -3
internal/server/profile_handler.go
··· 17 17 if strings.HasPrefix(param, "did:") { 18 18 did = param 19 19 } else { 20 - profileUser, err := s.dbs.Articles.GetUserByHandle(ctx, param) 20 + profileUser, err := s.dbs.Users.GetUserByHandle(ctx, param) 21 21 if err == nil { 22 22 did = profileUser.DID 23 23 } else { ··· 31 31 } 32 32 } 33 33 34 - profileUser, err := s.dbs.Articles.GetUser(ctx, did) 34 + profileUser, err := s.dbs.Users.GetUser(ctx, did) 35 35 if err != nil { 36 36 s.logger.Warn("failed to get user", "error", err, "did", did) 37 37 http.Error(w, "user not found", http.StatusNotFound) ··· 41 41 if !profileUser.AvatarURL.Valid || profileUser.AvatarURL.String == "" { 42 42 _, displayName, avatarURL, err := atproto.FetchProfile(ctx, did) 43 43 if err == nil && avatarURL != "" { 44 - if err := s.dbs.Articles.UpdateUserProfile(ctx, did, displayName, avatarURL); err != nil { 44 + if err := s.dbs.Users.UpdateUserProfile(ctx, did, displayName, avatarURL); err != nil { 45 45 s.logger.Warn("failed to update user profile", "error", err, "did", did) 46 46 } 47 47 profileUser.DisplayName = nullString(displayName)