Show pinned posts
This commit is contained in:
parent
82c8247ac8
commit
c37df11a25
4 changed files with 30 additions and 2 deletions
|
@ -56,6 +56,7 @@ const ICONS = {
|
||||||
shortcut: 'mingcute:lightning-line',
|
shortcut: 'mingcute:lightning-line',
|
||||||
user: 'mingcute:user-4-line',
|
user: 'mingcute:user-4-line',
|
||||||
following: 'mingcute:walk-line',
|
following: 'mingcute:walk-line',
|
||||||
|
pin: 'mingcute:pin-line',
|
||||||
};
|
};
|
||||||
|
|
||||||
const modules = import.meta.glob('/node_modules/@iconify-icons/mingcute/*.js');
|
const modules = import.meta.glob('/node_modules/@iconify-icons/mingcute/*.js');
|
||||||
|
|
|
@ -922,6 +922,9 @@ a.card:is(:hover, :focus) {
|
||||||
.status-badge .bookmark {
|
.status-badge .bookmark {
|
||||||
color: var(--link-color);
|
color: var(--link-color);
|
||||||
}
|
}
|
||||||
|
.status-badge .pin {
|
||||||
|
color: var(--red-color);
|
||||||
|
}
|
||||||
|
|
||||||
/* MISC */
|
/* MISC */
|
||||||
|
|
||||||
|
|
|
@ -106,7 +106,9 @@ function Status({
|
||||||
reblog,
|
reblog,
|
||||||
uri,
|
uri,
|
||||||
emojis,
|
emojis,
|
||||||
|
// Non-API props
|
||||||
_deleted,
|
_deleted,
|
||||||
|
_pinned,
|
||||||
} = status;
|
} = status;
|
||||||
|
|
||||||
console.debug('RENDER Status', id, status?.account.displayName);
|
console.debug('RENDER Status', id, status?.account.displayName);
|
||||||
|
@ -203,7 +205,7 @@ function Status({
|
||||||
tabindex="-1"
|
tabindex="-1"
|
||||||
class={`status ${
|
class={`status ${
|
||||||
!withinContext && inReplyToAccount ? 'status-reply-to' : ''
|
!withinContext && inReplyToAccount ? 'status-reply-to' : ''
|
||||||
} visibility-${visibility} ${
|
} visibility-${visibility} ${_pinned ? 'status-pinned' : ''} ${
|
||||||
{
|
{
|
||||||
s: 'small',
|
s: 'small',
|
||||||
m: 'medium',
|
m: 'medium',
|
||||||
|
@ -217,6 +219,7 @@ function Status({
|
||||||
{reblogged && <Icon class="reblog" icon="rocket" size="s" />}
|
{reblogged && <Icon class="reblog" icon="rocket" size="s" />}
|
||||||
{favourited && <Icon class="favourite" icon="heart" size="s" />}
|
{favourited && <Icon class="favourite" icon="heart" size="s" />}
|
||||||
{bookmarked && <Icon class="bookmark" icon="bookmark" size="s" />}
|
{bookmarked && <Icon class="bookmark" icon="bookmark" size="s" />}
|
||||||
|
{_pinned && <Icon class="pin" icon="pin" size="s" />}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
{size !== 's' && (
|
{size !== 's' && (
|
||||||
|
|
|
@ -16,12 +16,33 @@ function AccountStatuses() {
|
||||||
const { masto, instance } = api({ instance: params.instance });
|
const { masto, instance } = api({ instance: params.instance });
|
||||||
const accountStatusesIterator = useRef();
|
const accountStatusesIterator = useRef();
|
||||||
async function fetchAccountStatuses(firstLoad) {
|
async function fetchAccountStatuses(firstLoad) {
|
||||||
|
const results = [];
|
||||||
|
if (firstLoad) {
|
||||||
|
const { value: pinnedStatuses } = await masto.v1.accounts
|
||||||
|
.listStatuses(id, {
|
||||||
|
pinned: true,
|
||||||
|
})
|
||||||
|
.next();
|
||||||
|
if (pinnedStatuses?.length) {
|
||||||
|
pinnedStatuses.forEach((status) => {
|
||||||
|
status._pinned = true;
|
||||||
|
});
|
||||||
|
results.push(...pinnedStatuses);
|
||||||
|
}
|
||||||
|
}
|
||||||
if (firstLoad || !accountStatusesIterator.current) {
|
if (firstLoad || !accountStatusesIterator.current) {
|
||||||
accountStatusesIterator.current = masto.v1.accounts.listStatuses(id, {
|
accountStatusesIterator.current = masto.v1.accounts.listStatuses(id, {
|
||||||
limit: LIMIT,
|
limit: LIMIT,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return await accountStatusesIterator.current.next();
|
const { value, done } = await accountStatusesIterator.current.next();
|
||||||
|
if (value?.length) {
|
||||||
|
results.push(...value);
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
value: results,
|
||||||
|
done,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
const [account, setAccount] = useState({});
|
const [account, setAccount] = useState({});
|
||||||
|
|
Loading…
Add table
Reference in a new issue