+1
-4
src/components/content/BlueskyFeed.astro
+1
-4
src/components/content/BlueskyFeed.astro
···
6
6
interface Props {
7
7
feedUri: string;
8
8
limit?: number;
9
-
showAuthor?: boolean;
10
9
showTimestamp?: boolean;
11
10
}
12
11
13
-
const { feedUri, limit = 10, showAuthor = true, showTimestamp = true } = Astro.props;
12
+
const { feedUri, limit = 10, showTimestamp = true } = Astro.props;
14
13
15
14
const config = loadConfig();
16
15
const browser = new AtprotoBrowser();
···
34
33
blueskyPosts.map((record) => (
35
34
<BlueskyPost
36
35
post={record.value}
37
-
author={record.author}
38
-
showAuthor={showAuthor}
39
36
showTimestamp={showTimestamp}
40
37
/>
41
38
))
+2
-21
src/components/content/BlueskyPost.astro
+2
-21
src/components/content/BlueskyPost.astro
···
5
5
6
6
interface Props {
7
7
post: AppBskyFeedPost.Record;
8
-
author?: {
9
-
displayName?: string;
10
-
handle?: string;
11
-
};
12
-
showAuthor?: boolean;
13
8
showTimestamp?: boolean;
14
9
}
15
10
16
-
const { post, author, showAuthor = false, showTimestamp = true } = Astro.props;
11
+
const { post, showTimestamp = true } = Astro.props;
17
12
18
13
// Validate post data
19
14
if (!post || !post.text) {
···
61
56
---
62
57
63
58
<article class="bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 p-4 mb-4">
64
-
{showAuthor && author && (
65
-
<div class="flex items-center mb-3">
66
-
<div class="w-8 h-8 bg-blue-500 rounded-full flex items-center justify-center text-white text-sm font-medium">
67
-
{author.displayName?.[0] || 'U'}
68
-
</div>
69
-
<div class="ml-3">
70
-
<div class="text-sm font-medium text-gray-900 dark:text-white">
71
-
{author.displayName || 'Unknown'}
72
-
</div>
73
-
<div class="text-xs text-gray-500 dark:text-gray-400">
74
-
@{author.handle || 'unknown'}
75
-
</div>
76
-
</div>
77
-
</div>
78
-
)}
59
+
79
60
80
61
<div class="text-gray-900 dark:text-white mb-3">
81
62
{post.text}
-2
src/components/content/ContentFeed.astro
-2
src/components/content/ContentFeed.astro
···
9
9
collection?: string;
10
10
limit?: number;
11
11
feedUri?: string;
12
-
showAuthor?: boolean;
13
12
showTimestamp?: boolean;
14
13
live?: boolean;
15
14
}
···
18
17
collection = 'app.bsky.feed.post',
19
18
limit = 10,
20
19
feedUri,
21
-
showAuthor = true,
22
20
showTimestamp = true,
23
21
live = false,
24
22
} = Astro.props;
-8
src/lib/atproto/atproto-browser.ts
-8
src/lib/atproto/atproto-browser.ts
···
9
9
indexedAt: string;
10
10
collection: string;
11
11
$type: string;
12
-
author?: {
13
-
displayName?: string;
14
-
handle?: string;
15
-
};
16
12
}
17
13
18
14
export interface RepoInfo {
···
258
254
indexedAt: item.post.indexedAt,
259
255
collection: item.post.uri.split('/')[2] || 'unknown',
260
256
$type: (item.post.record?.$type as string) || 'unknown',
261
-
author: item.post.author ? {
262
-
displayName: item.post.author.displayName,
263
-
handle: item.post.author.handle,
264
-
} : undefined,
265
257
}));
266
258
267
259
return records;
-1
src/pages/index.astro
-1
src/pages/index.astro
+1
-4
src/pages/leaflets.astro
+1
-4
src/pages/leaflets.astro
···
46
46
47
47
<div class="text-sm text-gray-500 dark:text-gray-400">
48
48
{document.data.publishedAt && (
49
-
<span class="mr-4">
49
+
<span>
50
50
Published: {new Date(document.data.publishedAt).toLocaleDateString('en-US', {
51
51
year: 'numeric',
52
52
month: 'long',
53
53
day: 'numeric',
54
54
})}
55
55
</span>
56
-
)}
57
-
{document.data.author && (
58
-
<span>Author: {document.data.author}</span>
59
56
)}
60
57
</div>
61
58
</header>
+1
-4
src/pages/leaflets/[leaflet].astro
+1
-4
src/pages/leaflets/[leaflet].astro
···
40
40
41
41
<div class="text-sm text-gray-500 dark:text-gray-400 mb-6">
42
42
{document.data.publishedAt && (
43
-
<span class="mr-4">
43
+
<span>
44
44
Published: {new Date(document.data.publishedAt).toLocaleDateString('en-US', {
45
45
year: 'numeric',
46
46
month: 'long',
47
47
day: 'numeric',
48
48
})}
49
49
</span>
50
-
)}
51
-
{document.data.author && (
52
-
<span>Author: {document.data.author}</span>
53
50
)}
54
51
</div>
55
52
</header>