declare type Comment = { comment: string, // comment body comment_id: string, // sha256 digest claim_id: string, // id linking to the claim this comment timestamp: number, // integer representing unix-time is_hidden: boolean, // claim owner may enable/disable this channel_id: string, // claimId of channel signing this comment channel_name?: string, // name of channel claim channel_url?: string, // full lbry url to signing channel signature?: string, // signature of comment by originating channel signing_ts?: string, // timestamp used when signing this comment is_channel_signature_valid?: boolean, // whether or not the signature could be validated parent_id?: number, // comment_id of comment this is in reply to is_pinned: boolean, support_amount: number, }; declare type PerChannelSettings = { words?: Array, comments_enabled?: boolean, min_tip_amount_comment?: number, min_tip_amount_super_chat?: number, slow_mode_min_gap?: number, }; // todo: relate individual comments to their commentId declare type CommentsState = { commentsByUri: { [string]: string }, superChatsByUri: { [string]: { totalAmount: number, comments: Array } }, byId: { [string]: Array }, repliesByParentId: { [string]: Array }, // ParentCommentID -> list of reply comments topLevelCommentsById: { [string]: Array }, // ClaimID -> list of top level comments commentById: { [string]: Comment }, isLoading: boolean, myComments: ?Set, isFetchingReacts: boolean, myReactsByCommentId: any, othersReactsByCommentId: any, pendingCommentReactions: Array, moderationBlockList: ?Array, // @KP rename to "personalBlockList"? adminBlockList: ?Array, moderatorBlockList: ?Array, moderatorBlockListDelegatorsMap: {[string]: Array}, // {"blockedUri": ["delegatorUri1", ""delegatorUri2", ...]} fetchingModerationBlockList: boolean, moderationDelegatesById: { [string]: Array<{ channelId: string, channelName: string }> }, fetchingModerationDelegates: boolean, moderationDelegatorsById: { [string]: { global: boolean, delegators: { name: string, claimId: string } }}, fetchingModerationDelegators: boolean, blockingByUri: {}, unBlockingByUri: {}, togglingForDelegatorMap: {[string]: Array}, // {"blockedUri": ["delegatorUri1", ""delegatorUri2", ...]} commentsDisabledChannelIds: Array, settingsByChannelId: { [string]: PerChannelSettings }, // ChannelID -> settings fetchingSettings: boolean, fetchingBlockedWords: boolean, }; declare type CommentReactParams = { comment_ids: string, channel_name: string, channel_id: string, react_type: string, clear_types?: string, remove?: boolean, }; declare type CommentListParams = { page: number, page_size: number, claim_id: string, }; declare type CommentListResponse = { items: Array, total_amount: number, }; declare type CommentAbandonParams = { comment_id: string, creator_channel_id?: string, creator_channel_name?: string, channel_id?: string, hexdata?: string, }; declare type CommentCreateParams = { comment: string, claim_id: string, parent_id?: string, signature: string, signing_ts: number, support_tx_id?: string, }; declare type SuperListParams = {}; declare type ModerationBlockParams = {}; declare type ModerationAddDelegateParams = { mod_channel_id: string, mod_channel_name: string, creator_channel_id: string, creator_channel_name: string, signature: string, signing_ts: string, }; declare type ModerationRemoveDelegateParams = { mod_channel_id: string, mod_channel_name: string, creator_channel_id: string, creator_channel_name: string, signature: string, signing_ts: string, }; declare type ModerationListDelegatesParams = { creator_channel_id: string, creator_channel_name: string, signature: string, signing_ts: string, }; declare type ModerationAmIParams = { channel_name: string, channel_id: string, signature: string, signing_ts: string }; declare type SettingsParams = { channel_name: string, channel_id: string, signature: string, signing_ts: string, }; declare type UpdateSettingsParams = { channel_name: string, channel_id: string, signature: string, signing_ts: string, comments_enabled?: boolean, min_tip_amount_comment?: number, min_tip_amount_super_chat?: number, slow_mode_min_gap?: number, } declare type BlockWordParams = { channel_name: string, channel_id: string, signature: string, signing_ts: string, words: string, // CSV list of containing words to block comment on content };