UNPKG

@selfcommunity/types

Version:

Types to integrate a community created with SelfCommunity.

525 lines (524 loc) • 15.4 kB
import { SCCommentType, SCCourseType, SCEventType, SCFeedDiscussionType, SCFeedPostType, SCFeedStatusType, SCGroupType, SCLiveStreamType, SCUserType } from '../index'; import { SCPrivateMessageThreadType } from './privateMessage'; import { SCUserBlockedSettingsType } from './user'; import { SCCustomNotificationType } from './customNotification'; import { SCIncubatorType } from './incubator'; /** * Notification types */ export declare enum SCNotificationTypologyType { COMMENT = "comment", NESTED_COMMENT = "nested_comment", CONNECTION_REQUEST = "connection_request", CONNECTION_ACCEPT = "connection_accept", CONNECTION_REMOVE = "connection_remove", CONNECTION_REJECT = "connection_reject", CONNECTION_CANCEL_REJECT = "connection_cancel_reject", CONNECTION_CANCEL_REQUEST = "connection_cancel_request", MENTION = "mention", VOTE_UP = "vote_up", FOLLOW = "follow", PRIVATE_MESSAGE = "private_message", DELETE_PRIVATE_MESSAGE = "delete_private_message", DELETED_FOR_ADVERTISING = "deleted_for_advertising", DELETED_FOR_AGGRESSIVE = "deleted_for_aggressive", DELETED_FOR_VULGAR = "deleted_for_vulgar", DELETED_FOR_POOR = "deleted_for_poor", DELETED_FOR_OFFTOPIC = "deleted_for_offtopic", UNDELETED_FOR = "undeleted_for", COLLAPSED_FOR_ADVERTISING = "collapsed_for_advertising", COLLAPSED_FOR_AGGRESSIVE = "collapsed_for_aggressive", COLLAPSED_FOR_VULGAR = "collapsed_for_vulgar", COLLAPSED_FOR_POOR = "collapsed_for_poor", COLLAPSED_FOR_OFFTOPIC = "collapsed_for_offtopic", USER_FOLLOW = "user_follow", USER_UNFOLLOW = "user_unfollow", KINDLY_NOTICE_ADVERTISING = "kindly_notice_advertising", KINDLY_NOTICE_AGGRESSIVE = "kindly_notice_aggressive", KINDLY_NOTICE_VULGAR = "kindly_notice_vulgar", KINDLY_NOTICE_POOR = "kindly_notice_poor", KINDLY_NOTICE_OFFTOPIC = "kindly_notice_offtopic", KINDLY_NOTICE_FLAG = "kindly_notice_flag", BLOCKED_USER = "blocked_user", UNBLOCKED_USER = "unblocked_user", INCUBATOR_APPROVED = "incubator_approved", CUSTOM_NOTIFICATION = "custom_notification", NOTIFICATION_BANNER = "notification_banner", CONTRIBUTION = "contribution", USER_INVITED_TO_JOIN_GROUP = "user_invited_to_join_group", USER_REQUESTED_TO_JOIN_GROUP = "user_requested_to_join_group", USER_ACCEPTED_TO_JOIN_GROUP = "user_accepted_to_join_group", USER_ADDED_TO_GROUP = "user_added_to_group", USER_INVITED_TO_JOIN_EVENT = "user_invited_to_join_event", USER_REQUESTED_TO_JOIN_EVENT = "user_requested_to_join_event", USER_ACCEPTED_TO_JOIN_EVENT = "user_accepted_to_join_event", USER_ADDED_TO_EVENT = "user_added_to_event", LIVE_STREAM_STARTED = "live_stream_started", USER_INVITED_TO_JOIN_COURSE = "user_invited_to_join_course", USER_REQUESTED_TO_JOIN_COURSE = "user_requested_to_join_course", USER_ACCEPTED_TO_JOIN_COURSE = "user_accepted_to_join_course", USER_COMMENTED_A_COURSE_LESSON = "user_commented_a_course_lesson", USER_ADDED_TO_COURSE = "user_added_to_course", MANAGER_ADDED_TO_COURSE = "manager_added_to_course" } /** * Define topic for notifications * Usefull for websocket */ export declare enum SCNotificationTopicType { INTERACTION = "interaction", NEWS = "news" } /** * Interface SCNotificationAggregatedType. * Notification aggregated Schema. */ export interface SCNotificationAggregatedType { /** * Serialization id of the macro notification aggregate block */ sid: string; /** * It's true if in the aggregated group there is at least one * notification not yet seen by the user making the request */ is_new: boolean; /** * Primary object involved (object that is common to notifications group) * if it is a discusssion. For some types of notifications it will not be present. */ discussion?: SCFeedDiscussionType; /** * Primary object involved (object that is common to notifications group) * if it is a post. For some types of notifications it will not be present. */ post?: SCFeedPostType; /** * Primary object involved (object that is common to notifications group) * if it is a status. For some types of notifications it will not be present. */ status?: SCFeedStatusType; /** * Primary object involved (object that is common to notifications group) * if it is a group. For some types of notifications it will not be present. */ group?: SCGroupType; /** * Primary object involved (object that is common to notifications group) * if it is an event. For some types of notifications it will not be present. */ event?: SCEventType; /** * List of aggregated notifications by type. * Types Object: NotificationTypeComment, NotificationTypeMention, * NotificationTypeConnectionAccept, NotificationTypeConnectionRequest, * NotificationTypePrivateMessage, NotificationTypeFollow, NotificationTypeVoteUp, * NotificationTypeBlockedUser, NotificationTypeUnBlockedUser, * NotificationTypeKindlyNotice, NotificationTypeCollapsedFor, * NotificationTypeDeletedFor, NotificationTypeCustomNotification */ aggregated: SCNotificationType[]; } /** * Interface SCNotificationType. * Notification Schema. */ export interface SCNotificationType { /** * True if the notification has been read, otherwise false */ is_new: boolean; /** * Serialization id of the single notification */ sid: string; /** * Type of the notification */ type: SCNotificationTypologyType; /** * Time when the notification was generated */ active_at: Date; } /** * Interface SCNotificationCommentType. * Comment Notification Schema. */ export interface SCNotificationCommentType extends SCNotificationType { /** * Comment of first/second level */ comment: SCCommentType; /** * Type Comment or Nested_comment */ type: SCNotificationTypologyType.COMMENT | SCNotificationTypologyType.NESTED_COMMENT; } /** * Interface SCNotificationMentionType. * Mention Notification Schema. */ export interface SCNotificationMentionType extends SCNotificationType { /** * Type Mention */ type: SCNotificationTypologyType.MENTION; /** * If user is mentioned in a discussion */ discussion?: SCFeedDiscussionType; /** * If the user is mentioned in a post */ post?: SCFeedPostType; /** * If user is mentioned in a status */ status?: SCFeedStatusType; /** * If user is mentioned in a comment */ comment?: SCCommentType; } /** * Interface SCNotificationConnectionRequestType. * Connection Request Notification Schema. */ export interface SCNotificationConnectionRequestType extends SCNotificationType { /** * Type Connection request */ type: SCNotificationTypologyType.CONNECTION_REQUEST; /** * User request the connection */ request_user: SCUserType; } /** * Interface SCNotificationConnectionAcceptType. * Connection Accept Notification Schema. */ export interface SCNotificationConnectionAcceptType extends SCNotificationType { /** * Type Connection accept */ type: SCNotificationTypologyType.CONNECTION_ACCEPT; /** * User accepted the connection request */ accept_user: SCUserType; } /** * Interface SCNotificationPrivateMessageType. * Private Message Notification Schema. */ export interface SCNotificationPrivateMessageType extends SCNotificationType { /** * Type Private message */ type: SCNotificationTypologyType.PRIVATE_MESSAGE; /** * Private message */ message: SCPrivateMessageThreadType; } /** * Interface SCNotificationFollowType. * Follow Notification Schema. * (discussion, post, status) */ export interface SCNotificationFollowType extends SCNotificationType { /** * Type Follow */ type: SCNotificationTypologyType.FOLLOW; /** * If user is mentioned in a discussion */ discussion?: SCFeedDiscussionType; /** * If the user is mentioned in a post */ post?: SCFeedPostType; /** * If user is mentioned in a status */ status?: SCFeedStatusType; } /** * Interface SCNotificationVoteUpType. * VoteUp Notification Schema. */ export interface SCNotificationVoteUpType extends SCNotificationType { /** * Type VoteUp */ type: SCNotificationTypologyType.VOTE_UP; /** * If user is mentioned in a discussion */ discussion?: SCFeedDiscussionType; /** * If the user is mentioned in a post */ post?: SCFeedPostType; /** * If user is mentioned in a status */ status?: SCFeedStatusType; /** * If user is mentioned in a comment */ comment?: SCCommentType; /** * User voted up */ user?: SCUserType; } /** * Interface SCNotificationBlockedUserType. * Blocked User Notification Schema. */ export interface SCNotificationBlockedUserType extends SCNotificationType { /** * Type Blocked User */ type: SCNotificationTypologyType.BLOCKED_USER; /** * Data of user block */ blocked_settings: SCUserBlockedSettingsType; } /** * Interface SCNotificationUnBlockedUserType. * UnBlocked User Notification Schema. */ export interface SCNotificationUnBlockedUserType extends SCNotificationType { /** * Type UnBlocked User */ type: SCNotificationTypologyType.UNBLOCKED_USER; } /** * Interface SCNotificationKindlyNoticeType. * Kindly notice User Notification Schema. */ export interface SCNotificationKindlyNoticeType extends SCNotificationType { /** * Type Kindly Notice User */ type: SCNotificationTypologyType.KINDLY_NOTICE_ADVERTISING | SCNotificationTypologyType.KINDLY_NOTICE_FLAG | SCNotificationTypologyType.KINDLY_NOTICE_VULGAR | SCNotificationTypologyType.KINDLY_NOTICE_AGGRESSIVE | SCNotificationTypologyType.KINDLY_NOTICE_POOR | SCNotificationTypologyType.KINDLY_NOTICE_OFFTOPIC; /** * If the contribute is a discussion */ discussion?: SCFeedDiscussionType; /** * If the contribute is a post */ post?: SCFeedPostType; /** * If the contribute is a status */ status?: SCFeedStatusType; /** * If the contribute is a comment */ comment?: SCCommentType; } /** * Interface SCNotificationCollapsedForType. * Collapsed for Notification Schema. * Only for comments. */ export interface SCNotificationCollapsedForType extends SCNotificationType { /** * Type Kindly Notice User */ type: SCNotificationTypologyType.COLLAPSED_FOR_ADVERTISING | SCNotificationTypologyType.COLLAPSED_FOR_AGGRESSIVE | SCNotificationTypologyType.COLLAPSED_FOR_POOR | SCNotificationTypologyType.COLLAPSED_FOR_OFFTOPIC | SCNotificationTypologyType.COLLAPSED_FOR_VULGAR; /** * comment collapsed */ comment: SCCommentType; } /** * Interface SCNotificationDeletedForType. * Deleted for Notification Schema. */ export interface SCNotificationDeletedForType extends SCNotificationType { /** * Type Deleted for */ type: SCNotificationTypologyType.DELETED_FOR_ADVERTISING | SCNotificationTypologyType.DELETED_FOR_AGGRESSIVE | SCNotificationTypologyType.DELETED_FOR_VULGAR | SCNotificationTypologyType.DELETED_FOR_POOR | SCNotificationTypologyType.DELETED_FOR_OFFTOPIC; /** * If a discussion is deleted */ discussion?: SCFeedDiscussionType; /** * If a post is deleted */ post?: SCFeedPostType; /** * If a comment is deleted */ status?: SCFeedStatusType; /** * If a status is deleted */ comment?: SCCommentType; } /** * Interface SCNotificationUnDeletedForType. * Undeleted for Notification Schema. */ export interface SCNotificationUnDeletedForType extends SCNotificationType { /** * Type Undeleted for */ type: SCNotificationTypologyType.UNDELETED_FOR; /** * If a discussion is undeleted */ discussion?: SCFeedDiscussionType; /** * If a post is undeleted */ post?: SCFeedPostType; /** * If a comment is undeleted */ status?: SCFeedStatusType; /** * If a status is undeleted */ comment?: SCCommentType; } /** * Interface SCNotificationUserFollowType. * User Follow Notification Schema. */ export interface SCNotificationUserFollowType extends SCNotificationType { /** * Type User Follow */ type: SCNotificationTypologyType.USER_FOLLOW; /** * Follower */ follower: SCUserType; } /** * Interface SCNotificationIncubatorType. * The incubator proposed by the user has been approved */ export interface SCNotificationIncubatorType extends SCNotificationType { /** * Type Incubator Approved */ type: SCNotificationTypologyType.INCUBATOR_APPROVED; /** * Incubator */ incubator: SCIncubatorType; } /** * Interface SCNotificationCustomNotificationType. * CustomNotification Notification Schema. */ export interface SCNotificationCustomNotificationType extends SCNotificationType { /** * Type User Follow */ type: SCNotificationTypologyType.CUSTOM_NOTIFICATION; /** * User generate the custom notification */ user: SCUserType; /** * Custom notification data */ custom_notification: SCCustomNotificationType; } /** * Interface SCNotificationUnseenCountType */ export interface SCNotificationUnseenCountType { count: number; } /** * Interface SCNotificationContributionType. * Contribution Notification Schema. */ export interface SCNotificationContributionType extends SCNotificationType { /** * If the contribution type is discussion */ discussion?: SCFeedDiscussionType; /** * If the contribution type is post */ post?: SCFeedPostType; /** * If the contribution type is status */ status?: SCFeedStatusType; } /** * Interface SCNotificationGroupActivityType. */ export interface SCNotificationGroupActivityType extends SCNotificationType { /** * The user who performed the action */ user: SCUserType; /** * The Group obj */ group: Partial<SCGroupType>; } /** * Interface SCNotificationEventActivityType. */ export interface SCNotificationEventActivityType extends SCNotificationType { /** * The user who performed the action */ user: SCUserType; /** * The event obj */ event: Partial<SCEventType>; } /** * Interface SCNotificationCourseActivityType. */ export interface SCNotificationCourseActivityType extends SCNotificationType { /** * The course obj */ course: Partial<SCCourseType>; /** * The user who performed the action */ user: SCUserType; /** * The info about course lesson comment */ comment?: { id: number; course_id: number; section_id: number; lesson_id: number; lesson_name: string; html: string; }; } /** * Interface SCNotificationGroupActivityType. */ export interface SCNotificationLiveStreamActivityType extends SCNotificationType { /** * The LiveStream obj */ live_stream: Partial<SCLiveStreamType>; }