💄 News in a hortizontal scroll pack

This commit is contained in:
LittleSheep 2025-03-15 14:24:06 +08:00
parent b4c78cd10c
commit ce257f83b8

View File

@ -69,7 +69,7 @@ func GetFeed(c *fiber.Ctx, limit int, user *uint, cursor *time.Time) ([]FeedEntr
if news, err := ListNewsForFeed(newsCount, cursor); err != nil { if news, err := ListNewsForFeed(newsCount, cursor); err != nil {
log.Error().Err(err).Msg("Failed to load news in getting feed...") log.Error().Err(err).Msg("Failed to load news in getting feed...")
} else { } else {
feed = append(feed, news...) feed = append(feed, news)
} }
return feed, nil return feed, nil
@ -110,10 +110,10 @@ func ListFediversePostForFeed(tx *gorm.DB, limit int) ([]FeedEntry, error) {
return entries, nil return entries, nil
} }
func ListNewsForFeed(limit int, cursor *time.Time) ([]FeedEntry, error) { func ListNewsForFeed(limit int, cursor *time.Time) (FeedEntry, error) {
conn, err := gap.Nx.GetClientGrpcConn("re") conn, err := gap.Nx.GetClientGrpcConn("re")
if err != nil { if err != nil {
return nil, fmt.Errorf("failed to get grpc connection with reader: %v", err) return FeedEntry{}, fmt.Errorf("failed to get grpc connection with reader: %v", err)
} }
client := proto.NewFeedServiceClient(conn) client := proto.NewFeedServiceClient(conn)
request := &proto.GetFeedRequest{ request := &proto.GetFeedRequest{
@ -124,13 +124,16 @@ func ListNewsForFeed(limit int, cursor *time.Time) ([]FeedEntry, error) {
} }
resp, err := client.GetFeed(context.Background(), request) resp, err := client.GetFeed(context.Background(), request)
if err != nil { if err != nil {
return nil, fmt.Errorf("failed to get feed from reader: %v", err) return FeedEntry{}, fmt.Errorf("failed to get feed from reader: %v", err)
} }
return lo.Map(resp.Items, func(item *proto.FeedItem, _ int) FeedEntry { var createdAt time.Time
return FeedEntry{ return FeedEntry{
Type: item.Type, Type: "reader.news",
Data: nex.DecodeMap(item.Content), CreatedAt: createdAt,
CreatedAt: time.UnixMilli(int64(item.CreatedAt)), Data: lo.Map(resp.Items, func(item *proto.FeedItem, _ int) map[string]any {
} cta := time.UnixMilli(int64(item.CreatedAt))
}), nil createdAt = lo.Ternary(createdAt.Before(cta), cta, createdAt)
return nex.DecodeMap(item.Content)
}),
}, nil
} }