Notifications tell a user when someone follows them or their playlists,
upvotes, comments, likes or mentions them, or posts where they follow. This
module types the ones api/services/notification-service.ts makes, and the
data each kind carries. The client's /notifications page lists them and
turns each into a sentence and a link.
Carried by a comment_liked notification, sent to the comment's author.
Carried by a dump_commented notification, sent to the dump's poster.
Where a notification's dump is now, for its link (dumpPath). The server
joins it each time it sends the notification, so a renamed dump or poster
still links right; it is absent once the dump is deleted.
Carried by a dump_upvoted notification, sent to the dump's poster.
Pushed to its user's sockets in a notification_created message when it is
made, and returned by GET /api/me/notifications.
Carried by a playlist_dump_added notification, sent to the followers of a
public playlist when a public dump is added to it.
Carried by a playlist_followed notification, sent to a playlist's owner.
Where a notification's playlist is now, joined as DumpRef is.
Carried by a user_dump_posted notification, sent to the followers of a
user who posted a public dump.
Carried by a user_followed notification, sent to the user followed.
Carried by a user_mentioned notification, sent to a user @mentioned in a
comment, a dump, a playlist's description or a chat message, or to every
user by a chat message's @everyone. Its
DumpRef is the dump's, or the comment's dump's; its
PlaylistRef the playlist's.
-
contextId: string
The id of the comment, dump, playlist or chat message.
-
contextTitle: string
The title of the dump or playlist, or of the dump a comment is under; empty for the chat.
- contextType: "comment" | "dump" | "playlist" | "chat"
-
dumpId: string
Set only for a comment. It names the dump the comment is under, which the notification's link opens.
-
everyone: true
Set when the user was reached by
@everyonerather than by name. A message naming them as well notifies them once, by name. - mentionerId: string
- mentionerUsername: string
| UserFollowedData
| UserDumpPostedData
| PlaylistDumpAddedData
| DumpUpvotedData
| UserMentionedData
| DumpCommentedData
| CommentLikedData
Stored when the notification is made, so a title changed later still shows
the old one. The …Username fields and the refs are joined when it is sent,
so they follow a rename. The notification's type says which member it is.
| "user_followed"
| "user_dump_posted"
| "playlist_dump_added"
| "dump_upvoted"
| "user_mentioned"
| "dump_commented"
| "comment_liked"
Says which of the …Data interfaces a notification's data is. Each value
has one notify… trigger in notification-service.ts.
Usage
import * as mod from "shared/notification.ts";