diff --git a/src/app.css b/src/app.css index 885447bb..4b298fb9 100644 --- a/src/app.css +++ b/src/app.css @@ -197,7 +197,6 @@ a.mention span { } .timeline.contextual > li .replies { margin-top: -16px; - font-size: 90%; } .timeline.contextual > li .replies :is(ul, li) { margin: 0; diff --git a/src/components/status.css b/src/components/status.css index b3284c6f..226b1701 100644 --- a/src/components/status.css +++ b/src/components/status.css @@ -455,6 +455,7 @@ a.card:hover { .status .extra-meta { padding-top: 8px; color: var(--text-insignificant-color); + font-size: 90%; } .status .extra-meta * { vertical-align: middle; @@ -472,7 +473,7 @@ a.card:hover { } .status.large .extra-meta { padding-top: 0; - margin-left: calc(-50px - 8px); + margin-left: calc(-50px - 16px); } /* ACTIONS */ @@ -480,32 +481,36 @@ a.card:hover { .status .actions { display: flex; gap: 8px; - justify-content: space-between; } .status.large .actions { - padding-top: 8px; + padding-top: 4px; padding-bottom: 16px; margin-left: calc(-50px - 16px); color: var(--text-insignificant-color); + border-top: 1px solid var(--outline-color); + margin-top: 8px; } -.status .actions > button { +.status .action.has-count { + flex: 1; +} +.status .action > button { min-height: 40px; min-width: 40px; padding: 0 8px; font-variant-numeric: tabular-nums; } -.status .actions > button.plain { +.status .action > button.plain { color: inherit; border: 1.5px solid transparent; } -.status .actions > button.plain:hover { +.status .action > button.plain:hover { color: var(--link-color); background-color: var(--button-plain-bg-hover-color); } -.status .actions > button.plain.reblog-button:hover { +.status .action > button.plain.reblog-button:hover { color: var(--reblog-color); } -.status .actions > button.plain.reblog-button.checked { +.status .action > button.plain.reblog-button.checked { color: var(--reblog-color); border-color: var(--reblog-color); } @@ -524,13 +529,13 @@ a.card:hover { opacity: 0; } } -.status .actions > button.plain.reblog-button.checked .icon { +.status .action > button.plain.reblog-button.checked .icon { animation: reblogged 1s ease-in-out; } -.status .actions > button.plain.favourite-button:hover { +.status .action > button.plain.favourite-button:hover { color: var(--favourite-color); } -.status .actions > button.plain.favourite-button.checked { +.status .action > button.plain.favourite-button.checked { color: var(--favourite-color); border-color: var(--favourite-color); } @@ -552,11 +557,11 @@ a.card:hover { opacity: 0; } } -.status .actions > button.plain.favourite-button.checked .icon { +.status .action > button.plain.favourite-button.checked .icon { transform-origin: bottom center; animation: hearted 1s ease-in-out; } -.status .actions > button.plain.bookmark-button.checked { +.status .action > button.plain.bookmark-button.checked { color: var(--link-color); border-color: var(--link-color); } diff --git a/src/components/status.jsx b/src/components/status.jsx index f98a7178..23b76b57 100644 --- a/src/components/status.jsx +++ b/src/components/status.jsx @@ -429,104 +429,113 @@ function Status({ )}
- { - states.showCompose = { - replyToStatus: status, - }; - }} - /> +
+ { + states.showCompose = { + replyToStatus: status, + }; + }} + /> +
{/* TODO: if visibility = private, only can reblog own statuses */} {visibility !== 'direct' && ( +
+ { + try { + // Optimistic + states.statuses.set(id, { + ...status, + reblogged: !reblogged, + reblogsCount: reblogsCount + (reblogged ? -1 : 1), + }); + if (reblogged) { + const newStatus = await masto.statuses.unreblog(id); + states.statuses.set(newStatus.id, newStatus); + } else { + const newStatus = await masto.statuses.reblog(id); + states.statuses.set(newStatus.id, newStatus); + states.statuses.set( + newStatus.reblog.id, + newStatus.reblog, + ); + } + } catch (e) { + console.error(e); + } + }} + /> +
+ )} +
{ try { // Optimistic - states.statuses.set(id, { + states.statuses.set(statusID, { ...status, - reblogged: !reblogged, - reblogsCount: reblogsCount + (reblogged ? -1 : 1), + favourited: !favourited, + favouritesCount: + favouritesCount + (favourited ? -1 : 1), }); - if (reblogged) { - const newStatus = await masto.statuses.unreblog(id); + if (favourited) { + const newStatus = await masto.statuses.unfavourite(id); states.statuses.set(newStatus.id, newStatus); } else { - const newStatus = await masto.statuses.reblog(id); + const newStatus = await masto.statuses.favourite(id); states.statuses.set(newStatus.id, newStatus); - states.statuses.set( - newStatus.reblog.id, - newStatus.reblog, - ); } } catch (e) { console.error(e); } }} /> - )} - { - try { - // Optimistic - states.statuses.set(statusID, { - ...status, - favourited: !favourited, - favouritesCount: favouritesCount + (favourited ? -1 : 1), - }); - if (favourited) { - const newStatus = await masto.statuses.unfavourite(id); - states.statuses.set(newStatus.id, newStatus); - } else { - const newStatus = await masto.statuses.favourite(id); - states.statuses.set(newStatus.id, newStatus); +
+
+ { + try { + // Optimistic + states.statuses.set(statusID, { + ...status, + bookmarked: !bookmarked, + }); + if (bookmarked) { + const newStatus = await masto.statuses.unbookmark(id); + states.statuses.set(newStatus.id, newStatus); + } else { + const newStatus = await masto.statuses.bookmark(id); + states.statuses.set(newStatus.id, newStatus); + } + } catch (e) { + console.error(e); } - } catch (e) { - console.error(e); - } - }} - /> - { - try { - // Optimistic - states.statuses.set(statusID, { - ...status, - bookmarked: !bookmarked, - }); - if (bookmarked) { - const newStatus = await masto.statuses.unbookmark(id); - states.statuses.set(newStatus.id, newStatus); - } else { - const newStatus = await masto.statuses.bookmark(id); - states.statuses.set(newStatus.id, newStatus); - } - } catch (e) { - console.error(e); - } - }} - /> + }} + /> +
{isSelf && (