diff --git a/package.json b/package.json index 28896179..ed35ab84 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "impro", - "version": "0.20.104", + "version": "0.20.105", "type": "module", "scripts": { "start": "rm -rf \"${BUILD_DIR:-build}\" && NODE_ENV=development eleventy --serve", diff --git a/src/css/style.css b/src/css/style.css index 6225f0f4..2b332dfd 100644 --- a/src/css/style.css +++ b/src/css/style.css @@ -7076,6 +7076,15 @@ sidebar-search { top: -2px; } +#feed-detail-view .feed-detail-avatar-skeleton { + display: inline-block; +} + +#feed-detail-view .feed-detail-header-skeleton-line { + display: inline-block; + vertical-align: middle; +} + #feed-detail-view .pin-feed-button, #list-detail-view .pin-feed-button { width: 24px; diff --git a/src/js/views/feedDetail.view.js b/src/js/views/feedDetail.view.js index 2720a24f..e1922b1f 100644 --- a/src/js/views/feedDetail.view.js +++ b/src/js/views/feedDetail.view.js @@ -1,6 +1,7 @@ import { html, render } from "/js/lib/lit-html.js"; import { resolveDidFromHandleOrDid } from "/js/atproto.js"; import { classnames } from "/js/utils.js"; +import { cdnImageUrl } from "/js/dataHelpers.js"; import { postFeedTemplate } from "/js/templates/postFeed.template.js"; import "/js/components/infinite-scroll-container.js"; import { headerTemplate } from "/js/templates/header.template.js"; @@ -12,6 +13,34 @@ import "/js/components/context-menu.js"; import "/js/components/context-menu-item.js"; import "/js/components/context-menu-item-group.js"; +function feedAvatarTemplate({ feedGenerator }) { + return html``; +} + +function feedAvatarSkeletonTemplate() { + return html``; +} + +function feedHeaderTitleSkeletonTemplate() { + return html`​`; +} + +function feedHeaderSubtitleSkeletonTemplate() { + return html`​`; +} + export default async function feedDetailView({ root, params, @@ -55,8 +84,17 @@ export default async function feedDetailView({ render( html`
${headerTemplate({ - title: feedName, - subtitle: feedAuthorHandle ? `@${feedAuthorHandle}` : "", + ...(feedGenerator + ? { + title: feedName, + subtitle: feedAuthorHandle ? `@${feedAuthorHandle}` : "", + avatarTemplate: () => feedAvatarTemplate({ feedGenerator }), + } + : { + title: feedHeaderTitleSkeletonTemplate(), + subtitle: feedHeaderSubtitleSkeletonTemplate(), + avatarTemplate: () => feedAvatarSkeletonTemplate(), + }), rightItemTemplate: () => { const feedLink = `https://bsky.app/profile/${feedAuthorHandle || handleOrDid}/feed/${rkey}`; return html`