Skip to content

@ecp.eth/sdk


@ecp.eth/sdk / indexer / fetchGroupedNotifications

Function: fetchGroupedNotifications()

function fetchGroupedNotifications(options): Promise<{
  extra: {
     unseenCount: bigint;
  };
  notifications: {
     cursor: string;
     groupedBy: {
        notificationType: "reply" | "mention" | "reaction" | "quote";
        parent: {
           comment: {
              app: `0x${string}`;
              author: {
                 address: `0x${string}`;
                 ens?: {
                    avatarUrl: ... | ...;
                    name: string;
                 };
                 farcaster?: {
                    displayName?: ... | ...;
                    fid: number;
                    pfpUrl?: ... | ...;
                    username: string;
                 };
              };
              chainId: number;
              channelId: bigint;
              commentType: number;
              content: string;
              createdAt: Date;
              cursor: `0x${string}`;
              deletedAt: null | Date;
              hookMetadata: {
                 key: `0x${string}`;
                 value: `0x${string}`;
              }[];
              id: `0x${string}`;
              logIndex: null | number;
              metadata: {
                 key: `0x${string}`;
                 value: `0x${string}`;
              }[];
              moderationClassifierResult: Record<string, number>;
              moderationClassifierScore: number;
              moderationStatus: "approved" | "pending" | "rejected";
              moderationStatusChangedAt: Date;
              parentId: null | `0x${string}`;
              references: (
                 | {
                 address: `0x${(...)}`;
                 avatarUrl: ... | ...;
                 name: string;
                 position: {
                    end: ...;
                    start: ...;
                 };
                 type: "ens";
                 url: string;
               }
                 | {
                 address: `0x${(...)}`;
                 displayName: ... | ...;
                 fid: number;
                 fname: string;
                 pfpUrl: ... | ...;
                 position: {
                    end: ...;
                    start: ...;
                 };
                 type: "farcaster";
                 url: string;
                 username: string;
               }
                 | {
                 address: `0x${(...)}`;
                 chainId: ... | ...;
                 chains: ...[];
                 decimals: number;
                 logoURI: ... | ...;
                 name: string;
                 position: {
                    end: ...;
                    start: ...;
                 };
                 symbol: string;
                 type: "erc20";
               }
                 | {
                 description: ... | ...;
                 favicon: ... | ...;
                 mediaType: string;
                 opengraph: ... | ...;
                 position: {
                    end: ...;
                    start: ...;
                 };
                 title: string;
                 type: "webpage";
                 url: string;
               }
                 | {
                 mediaType: string;
                 position: {
                    end: ...;
                    start: ...;
                 };
                 type: "file";
                 url: string;
               }
                 | {
                 dimension?: ... | ...;
                 mediaType: string;
                 position: {
                    end: ...;
                    start: ...;
                 };
                 type: "image";
                 url: string;
               }
                 | {
                 mediaType: string;
                 position: {
                    end: ...;
                    start: ...;
                 };
                 type: "video";
                 url: string;
                 videoTracks?: ... | ...;
               }
                 | {
                 chainId: number;
                 id: `0x${(...)}`;
                 position: {
                    end: ...;
                    start: ...;
                 };
                 type: "quoted_comment";
              })[];
              revision: number;
              targetUri: string;
              txHash: `0x${string}`;
              updatedAt: Date;
              zeroExSwap:   | null
                 | {
                 from: {
                    address: `0x${(...)}`;
                    amount: string;
                    symbol: string;
                 };
                 to: {
                    address: ... | ...;
                    amount: string;
                    symbol: string;
                 };
               };
           };
           type: "comment";
        };
     };
     notifications: {
        extra: {
           unseenCount: bigint;
        };
        notifications: {
           cursor: string;
           notification:   | {
              app: `0x${string}`;
              author: {
                 address: `0x${(...)}`;
                 ens?: ... | ...;
                 farcaster?: ... | ...;
              };
              comment: {
                 app: `0x${(...)}`;
                 author: {
                    address: ...;
                    ens?: ...;
                    farcaster?: ...;
                 };
                 chainId: number;
                 channelId: bigint;
                 commentType: number;
                 content: string;
                 createdAt: Date;
                 cursor: `0x${(...)}`;
                 deletedAt: ... | ...;
                 hookMetadata: ...[];
                 id: `0x${(...)}`;
                 logIndex: ... | ...;
                 metadata: ...[];
                 moderationClassifierResult: Record<..., ...>;
                 moderationClassifierScore: number;
                 moderationStatus: ... | ... | ...;
                 moderationStatusChangedAt: Date;
                 parentId: ... | ...;
                 references: ...[];
                 revision: number;
                 targetUri: string;
                 txHash: `0x${(...)}`;
                 updatedAt: Date;
                 zeroExSwap: ... | ...;
              };
              createdAt: Date;
              id: bigint;
              replyingTo: {
                 app: `0x${(...)}`;
                 author: {
                    address: ...;
                    ens?: ...;
                    farcaster?: ...;
                 };
                 chainId: number;
                 channelId: bigint;
                 commentType: number;
                 content: string;
                 createdAt: Date;
                 cursor: `0x${(...)}`;
                 deletedAt: ... | ...;
                 hookMetadata: ...[];
                 id: `0x${(...)}`;
                 logIndex: ... | ...;
                 metadata: ...[];
                 moderationClassifierResult: Record<..., ...>;
                 moderationClassifierScore: number;
                 moderationStatus: ... | ... | ...;
                 moderationStatusChangedAt: Date;
                 parentId: ... | ...;
                 references: ...[];
                 revision: number;
                 targetUri: string;
                 txHash: `0x${(...)}`;
                 updatedAt: Date;
                 zeroExSwap: ... | ...;
              };
              seen: boolean;
              seenAt: null | Date;
              type: "reply";
            }
              | {
              app: `0x${string}`;
              author: {
                 address: `0x${(...)}`;
                 ens?: ... | ...;
                 farcaster?: ... | ...;
              };
              comment: {
                 app: `0x${(...)}`;
                 author: {
                    address: ...;
                    ens?: ...;
                    farcaster?: ...;
                 };
                 chainId: number;
                 channelId: bigint;
                 commentType: number;
                 content: string;
                 createdAt: Date;
                 cursor: `0x${(...)}`;
                 deletedAt: ... | ...;
                 hookMetadata: ...[];
                 id: `0x${(...)}`;
                 logIndex: ... | ...;
                 metadata: ...[];
                 moderationClassifierResult: Record<..., ...>;
                 moderationClassifierScore: number;
                 moderationStatus: ... | ... | ...;
                 moderationStatusChangedAt: Date;
                 parentId: ... | ...;
                 references: ...[];
                 revision: number;
                 targetUri: string;
                 txHash: `0x${(...)}`;
                 updatedAt: Date;
                 zeroExSwap: ... | ...;
              };
              createdAt: Date;
              id: bigint;
              mentionedUser: {
                 address: `0x${(...)}`;
                 ens?: ... | ...;
                 farcaster?: ... | ...;
              };
              seen: boolean;
              seenAt: null | Date;
              type: "mention";
            }
              | {
              app: `0x${string}`;
              author: {
                 address: `0x${(...)}`;
                 ens?: ... | ...;
                 farcaster?: ... | ...;
              };
              comment: {
                 app: `0x${(...)}`;
                 author: {
                    address: ...;
                    ens?: ...;
                    farcaster?: ...;
                 };
                 chainId: number;
                 channelId: bigint;
                 commentType: number;
                 content: string;
                 createdAt: Date;
                 cursor: `0x${(...)}`;
                 deletedAt: ... | ...;
                 hookMetadata: ...[];
                 id: `0x${(...)}`;
                 logIndex: ... | ...;
                 metadata: ...[];
                 moderationClassifierResult: Record<..., ...>;
                 moderationClassifierScore: number;
                 moderationStatus: ... | ... | ...;
                 moderationStatusChangedAt: Date;
                 parentId: ... | ...;
                 references: ...[];
                 revision: number;
                 targetUri: string;
                 txHash: `0x${(...)}`;
                 updatedAt: Date;
                 zeroExSwap: ... | ...;
              };
              createdAt: Date;
              id: bigint;
              reactingTo: {
                 app: `0x${(...)}`;
                 author: {
                    address: ...;
                    ens?: ...;
                    farcaster?: ...;
                 };
                 chainId: number;
                 channelId: bigint;
                 commentType: number;
                 content: string;
                 createdAt: Date;
                 cursor: `0x${(...)}`;
                 deletedAt: ... | ...;
                 hookMetadata: ...[];
                 id: `0x${(...)}`;
                 logIndex: ... | ...;
                 metadata: ...[];
                 moderationClassifierResult: Record<..., ...>;
                 moderationClassifierScore: number;
                 moderationStatus: ... | ... | ...;
                 moderationStatusChangedAt: Date;
                 parentId: ... | ...;
                 references: ...[];
                 revision: number;
                 targetUri: string;
                 txHash: `0x${(...)}`;
                 updatedAt: Date;
                 zeroExSwap: ... | ...;
              };
              seen: boolean;
              seenAt: null | Date;
              type: "reaction";
            }
              | {
              app: `0x${string}`;
              author: {
                 address: `0x${(...)}`;
                 ens?: ... | ...;
                 farcaster?: ... | ...;
              };
              comment: {
                 app: `0x${(...)}`;
                 author: {
                    address: ...;
                    ens?: ...;
                    farcaster?: ...;
                 };
                 chainId: number;
                 channelId: bigint;
                 commentType: number;
                 content: string;
                 createdAt: Date;
                 cursor: `0x${(...)}`;
                 deletedAt: ... | ...;
                 hookMetadata: ...[];
                 id: `0x${(...)}`;
                 logIndex: ... | ...;
                 metadata: ...[];
                 moderationClassifierResult: Record<..., ...>;
                 moderationClassifierScore: number;
                 moderationStatus: ... | ... | ...;
                 moderationStatusChangedAt: Date;
                 parentId: ... | ...;
                 references: ...[];
                 revision: number;
                 targetUri: string;
                 txHash: `0x${(...)}`;
                 updatedAt: Date;
                 zeroExSwap: ... | ...;
              };
              createdAt: Date;
              id: bigint;
              quotedComment: {
                 app: `0x${(...)}`;
                 author: {
                    address: ...;
                    ens?: ...;
                    farcaster?: ...;
                 };
                 chainId: number;
                 channelId: bigint;
                 commentType: number;
                 content: string;
                 createdAt: Date;
                 cursor: `0x${(...)}`;
                 deletedAt: ... | ...;
                 hookMetadata: ...[];
                 id: `0x${(...)}`;
                 logIndex: ... | ...;
                 metadata: ...[];
                 moderationClassifierResult: Record<..., ...>;
                 moderationClassifierScore: number;
                 moderationStatus: ... | ... | ...;
                 moderationStatusChangedAt: Date;
                 parentId: ... | ...;
                 references: ...[];
                 revision: number;
                 targetUri: string;
                 txHash: `0x${(...)}`;
                 updatedAt: Date;
                 zeroExSwap: ... | ...;
              };
              seen: boolean;
              seenAt: null | Date;
              type: "quote";
            };
        }[];
        pageInfo: {
           endCursor?: string;
           hasNextPage: boolean;
           hasPreviousPage: boolean;
           startCursor?: string;
        };
     };
  }[];
  pageInfo: {
     endCursor?: string;
     hasNextPage: boolean;
     hasPreviousPage: boolean;
     startCursor?: string;
  };
}>;

Defined in: packages/sdk/src/indexer/api.ts:1459

Fetch grouped notifications from the Indexer API

Parameters

options

FetchGroupedNotificationsOptions

Returns

Promise<{ extra: { unseenCount: bigint; }; notifications: { cursor: string; groupedBy: { notificationType: "reply" | "mention" | "reaction" | "quote"; parent: { comment: { app: `0x${string}`; author: { address: `0x${string}`; ens?: { avatarUrl: ... | ...; name: string; }; farcaster?: { displayName?: ... | ...; fid: number; pfpUrl?: ... | ...; username: string; }; }; chainId: number; channelId: bigint; commentType: number; content: string; createdAt: Date; cursor: `0x${string}`; deletedAt: null | Date; hookMetadata: { key: `0x${string}`; value: `0x${string}`; }[]; id: `0x${string}`; logIndex: null | number; metadata: { key: `0x${string}`; value: `0x${string}`; }[]; moderationClassifierResult: Record<string, number>; moderationClassifierScore: number; moderationStatus: "approved" | "pending" | "rejected"; moderationStatusChangedAt: Date; parentId: null | `0x${string}`; references: ( | { address: `0x${(...)}`; avatarUrl: ... | ...; name: string; position: { end: ...; start: ...; }; type: "ens"; url: string; } | { address: `0x${(...)}`; displayName: ... | ...; fid: number; fname: string; pfpUrl: ... | ...; position: { end: ...; start: ...; }; type: "farcaster"; url: string; username: string; } | { address: `0x${(...)}`; chainId: ... | ...; chains: ...[]; decimals: number; logoURI: ... | ...; name: string; position: { end: ...; start: ...; }; symbol: string; type: "erc20"; } | { description: ... | ...; favicon: ... | ...; mediaType: string; opengraph: ... | ...; position: { end: ...; start: ...; }; title: string; type: "webpage"; url: string; } | { mediaType: string; position: { end: ...; start: ...; }; type: "file"; url: string; } | { dimension?: ... | ...; mediaType: string; position: { end: ...; start: ...; }; type: "image"; url: string; } | { mediaType: string; position: { end: ...; start: ...; }; type: "video"; url: string; videoTracks?: ... | ...; } | { chainId: number; id: `0x${(...)}`; position: { end: ...; start: ...; }; type: "quoted_comment"; })[]; revision: number; targetUri: string; txHash: `0x${string}`; updatedAt: Date; zeroExSwap: | null | { from: { address: `0x${(...)}`; amount: string; symbol: string; }; to: { address: ... | ...; amount: string; symbol: string; }; }; }; type: "comment"; }; }; notifications: { extra: { unseenCount: bigint; }; notifications: { cursor: string; notification: | { app: `0x${string}`; author: { address: `0x${(...)}`; ens?: ... | ...; farcaster?: ... | ...; }; comment: { app: `0x${(...)}`; author: { address: ...; ens?: ...; farcaster?: ...; }; chainId: number; channelId: bigint; commentType: number; content: string; createdAt: Date; cursor: `0x${(...)}`; deletedAt: ... | ...; hookMetadata: ...[]; id: `0x${(...)}`; logIndex: ... | ...; metadata: ...[]; moderationClassifierResult: Record<..., ...>; moderationClassifierScore: number; moderationStatus: ... | ... | ...; moderationStatusChangedAt: Date; parentId: ... | ...; references: ...[]; revision: number; targetUri: string; txHash: `0x${(...)}`; updatedAt: Date; zeroExSwap: ... | ...; }; createdAt: Date; id: bigint; replyingTo: { app: `0x${(...)}`; author: { address: ...; ens?: ...; farcaster?: ...; }; chainId: number; channelId: bigint; commentType: number; content: string; createdAt: Date; cursor: `0x${(...)}`; deletedAt: ... | ...; hookMetadata: ...[]; id: `0x${(...)}`; logIndex: ... | ...; metadata: ...[]; moderationClassifierResult: Record<..., ...>; moderationClassifierScore: number; moderationStatus: ... | ... | ...; moderationStatusChangedAt: Date; parentId: ... | ...; references: ...[]; revision: number; targetUri: string; txHash: `0x${(...)}`; updatedAt: Date; zeroExSwap: ... | ...; }; seen: boolean; seenAt: null | Date; type: "reply"; } | { app: `0x${string}`; author: { address: `0x${(...)}`; ens?: ... | ...; farcaster?: ... | ...; }; comment: { app: `0x${(...)}`; author: { address: ...; ens?: ...; farcaster?: ...; }; chainId: number; channelId: bigint; commentType: number; content: string; createdAt: Date; cursor: `0x${(...)}`; deletedAt: ... | ...; hookMetadata: ...[]; id: `0x${(...)}`; logIndex: ... | ...; metadata: ...[]; moderationClassifierResult: Record<..., ...>; moderationClassifierScore: number; moderationStatus: ... | ... | ...; moderationStatusChangedAt: Date; parentId: ... | ...; references: ...[]; revision: number; targetUri: string; txHash: `0x${(...)}`; updatedAt: Date; zeroExSwap: ... | ...; }; createdAt: Date; id: bigint; mentionedUser: { address: `0x${(...)}`; ens?: ... | ...; farcaster?: ... | ...; }; seen: boolean; seenAt: null | Date; type: "mention"; } | { app: `0x${string}`; author: { address: `0x${(...)}`; ens?: ... | ...; farcaster?: ... | ...; }; comment: { app: `0x${(...)}`; author: { address: ...; ens?: ...; farcaster?: ...; }; chainId: number; channelId: bigint; commentType: number; content: string; createdAt: Date; cursor: `0x${(...)}`; deletedAt: ... | ...; hookMetadata: ...[]; id: `0x${(...)}`; logIndex: ... | ...; metadata: ...[]; moderationClassifierResult: Record<..., ...>; moderationClassifierScore: number; moderationStatus: ... | ... | ...; moderationStatusChangedAt: Date; parentId: ... | ...; references: ...[]; revision: number; targetUri: string; txHash: `0x${(...)}`; updatedAt: Date; zeroExSwap: ... | ...; }; createdAt: Date; id: bigint; reactingTo: { app: `0x${(...)}`; author: { address: ...; ens?: ...; farcaster?: ...; }; chainId: number; channelId: bigint; commentType: number; content: string; createdAt: Date; cursor: `0x${(...)}`; deletedAt: ... | ...; hookMetadata: ...[]; id: `0x${(...)}`; logIndex: ... | ...; metadata: ...[]; moderationClassifierResult: Record<..., ...>; moderationClassifierScore: number; moderationStatus: ... | ... | ...; moderationStatusChangedAt: Date; parentId: ... | ...; references: ...[]; revision: number; targetUri: string; txHash: `0x${(...)}`; updatedAt: Date; zeroExSwap: ... | ...; }; seen: boolean; seenAt: null | Date; type: "reaction"; } | { app: `0x${string}`; author: { address: `0x${(...)}`; ens?: ... | ...; farcaster?: ... | ...; }; comment: { app: `0x${(...)}`; author: { address: ...; ens?: ...; farcaster?: ...; }; chainId: number; channelId: bigint; commentType: number; content: string; createdAt: Date; cursor: `0x${(...)}`; deletedAt: ... | ...; hookMetadata: ...[]; id: `0x${(...)}`; logIndex: ... | ...; metadata: ...[]; moderationClassifierResult: Record<..., ...>; moderationClassifierScore: number; moderationStatus: ... | ... | ...; moderationStatusChangedAt: Date; parentId: ... | ...; references: ...[]; revision: number; targetUri: string; txHash: `0x${(...)}`; updatedAt: Date; zeroExSwap: ... | ...; }; createdAt: Date; id: bigint; quotedComment: { app: `0x${(...)}`; author: { address: ...; ens?: ...; farcaster?: ...; }; chainId: number; channelId: bigint; commentType: number; content: string; createdAt: Date; cursor: `0x${(...)}`; deletedAt: ... | ...; hookMetadata: ...[]; id: `0x${(...)}`; logIndex: ... | ...; metadata: ...[]; moderationClassifierResult: Record<..., ...>; moderationClassifierScore: number; moderationStatus: ... | ... | ...; moderationStatusChangedAt: Date; parentId: ... | ...; references: ...[]; revision: number; targetUri: string; txHash: `0x${(...)}`; updatedAt: Date; zeroExSwap: ... | ...; }; seen: boolean; seenAt: null | Date; type: "quote"; }; }[]; pageInfo: { endCursor?: string; hasNextPage: boolean; hasPreviousPage: boolean; startCursor?: string; }; }; }[]; pageInfo: { endCursor?: string; hasNextPage: boolean; hasPreviousPage: boolean; startCursor?: string; }; }>

A promise that resolves to grouped notifications fetched from the Indexer API