@selfcommunity/types
Version:
Types to integrate a community created with SelfCommunity.
525 lines (524 loc) • 15.4 kB
TypeScript
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>;
}