chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package plugin
|
||||
|
||||
// NotificationType is the type of the notification
|
||||
type NotificationType string
|
||||
|
||||
const (
|
||||
NotificationUpdateQuestion NotificationType = "notification.action.update_question"
|
||||
NotificationAnswerTheQuestion NotificationType = "notification.action.answer_the_question"
|
||||
NotificationUpVotedTheQuestion NotificationType = "notification.action.up_voted_question"
|
||||
NotificationDownVotedTheQuestion NotificationType = "notification.action.down_voted_question"
|
||||
NotificationUpdateAnswer NotificationType = "notification.action.update_answer"
|
||||
NotificationAcceptAnswer NotificationType = "notification.action.accept_answer"
|
||||
NotificationUpVotedTheAnswer NotificationType = "notification.action.up_voted_answer"
|
||||
NotificationDownVotedTheAnswer NotificationType = "notification.action.down_voted_answer"
|
||||
NotificationCommentQuestion NotificationType = "notification.action.comment_question"
|
||||
NotificationCommentAnswer NotificationType = "notification.action.comment_answer"
|
||||
NotificationUpVotedTheComment NotificationType = "notification.action.up_voted_comment"
|
||||
NotificationReplyToYou NotificationType = "notification.action.reply_to_you"
|
||||
NotificationMentionYou NotificationType = "notification.action.mention_you"
|
||||
NotificationYourQuestionIsClosed NotificationType = "notification.action.your_question_is_closed"
|
||||
NotificationYourQuestionWasDeleted NotificationType = "notification.action.your_question_was_deleted"
|
||||
NotificationYourAnswerWasDeleted NotificationType = "notification.action.your_answer_was_deleted"
|
||||
NotificationYourCommentWasDeleted NotificationType = "notification.action.your_comment_was_deleted"
|
||||
NotificationInvitedYouToAnswer NotificationType = "notification.action.invited_you_to_answer"
|
||||
NotificationNewQuestion NotificationType = "notification.action.new_question"
|
||||
NotificationNewQuestionFollowedTag NotificationType = "notification.action.new_question_followed_tag"
|
||||
)
|
||||
|
||||
type Notification interface {
|
||||
Base
|
||||
|
||||
// GetNewQuestionSubscribers returns the subscribers of the new question notification
|
||||
GetNewQuestionSubscribers() (userIDs []string)
|
||||
|
||||
// Notify sends a notification to the user
|
||||
Notify(msg NotificationMessage)
|
||||
}
|
||||
|
||||
type NotificationMessage struct {
|
||||
// the type of the notification
|
||||
Type NotificationType `json:"notification_type"`
|
||||
// the receiver user id
|
||||
ReceiverUserID string `json:"receiver_user_id"`
|
||||
// the receiver user using language
|
||||
ReceiverLang string `json:"receiver_lang"`
|
||||
// the receiver user external id (optional)
|
||||
ReceiverExternalID string `json:"receiver_external_id"`
|
||||
|
||||
// Who triggered the notification (optional, admin or system operation will not have this field)
|
||||
TriggerUserID string `json:"trigger_user_id"`
|
||||
// The trigger user's display name (optional, admin or system operation will not have this field)
|
||||
TriggerUserDisplayName string `json:"trigger_user_display_name"`
|
||||
// The trigger user's url (optional, admin or system operation will not have this field)
|
||||
TriggerUserUrl string `json:"trigger_user_url"`
|
||||
|
||||
// the question title
|
||||
QuestionTitle string `json:"question_title"`
|
||||
// the question url
|
||||
QuestionUrl string `json:"question_url"`
|
||||
// the question tags (comma separated, optional, only for new question notification)
|
||||
QuestionTags string `json:"tags"`
|
||||
|
||||
// the answer url (optional, only for new answer notification)
|
||||
AnswerUrl string `json:"answer_url"`
|
||||
// the comment url (optional, only for new comment notification)
|
||||
CommentUrl string `json:"comment_url"`
|
||||
}
|
||||
|
||||
var (
|
||||
// CallNotification is a function that calls all registered notification plugins
|
||||
CallNotification,
|
||||
registerNotification = MakePlugin[Notification](false)
|
||||
)
|
||||
Reference in New Issue
Block a user