@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