fix(route): filter out invalid subscriptions (#17861)

This commit is contained in:
karasu 2024-12-11 17:17:59 +08:00 committed by GitHub
parent ab760e9305
commit a49355bc40
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 4 additions and 2 deletions

View File

@ -1,7 +1,7 @@
import { ViewType, type Data, type Route } from '@/types';
import type { Context } from 'hono';
import ofetch from '@/utils/ofetch';
import type { FollowResponse, InboxSubscription, ListSubscription, Profile, Subscription } from './types';
import type { FeedSubscription, FollowResponse, InboxSubscription, ListSubscription, Profile, Subscription } from './types';
import { parse } from 'tldts';
export const route: Route = {
@ -30,6 +30,8 @@ const isList = (subscription: Subscription): subscription is ListSubscription =>
const isInbox = (subscription: Subscription): subscription is InboxSubscription => 'inboxId' in subscription;
const isFeed = (subscription: Subscription): subscription is FeedSubscription => 'feeds' in subscription;
async function handler(ctx: Context): Promise<Data> {
const handleOrId = ctx.req.param('uid');
const host = 'https://api.follow.is';
@ -47,7 +49,7 @@ async function handler(ctx: Context): Promise<Data> {
return {
title: `${profile.data.name}'s subscriptions`,
item: (<Exclude<Subscription, InboxSubscription>[]>subscriptions.data.filter((i) => !isInbox(i))).map((subscription) => {
item: (<Exclude<Subscription, InboxSubscription>[]>subscriptions.data.filter((i) => !isInbox(i) && !(isFeed(i) && !!i.feeds.errorAt))).map((subscription) => {
if (isList(subscription)) {
return {
title: subscription.lists.title,