51 lines
1.9 KiB
Go
51 lines
1.9 KiB
Go
package scraper
|
|
|
|
type DMChatRoomID string
|
|
|
|
// A participant in a chat room.
|
|
//
|
|
// Most settings will only be fetched for the logged-in user (other chat members will just be "false" for
|
|
// everything). The "IsChatSettingsValid" flag indicates whether this is the case.
|
|
type DMChatParticipant struct {
|
|
DMChatRoomID DMChatRoomID `db:"chat_room_id"`
|
|
UserID UserID `db:"user_id"`
|
|
LastReadEventID DMMessageID `db:"last_read_event_id"`
|
|
|
|
IsChatSettingsValid bool `db:"is_chat_settings_valid"`
|
|
IsNotificationsDisabled bool `db:"is_notifications_disabled"`
|
|
IsMentionNotificationsDisabled bool `db:"is_mention_notifications_disabled"`
|
|
IsReadOnly bool `db:"is_read_only"`
|
|
IsTrusted bool `db:"is_trusted"`
|
|
IsMuted bool `db:"is_muted"`
|
|
Status string `db:"status"`
|
|
}
|
|
|
|
// A chat room. Stores a map of chat participants and a reference to the most recent message,
|
|
// for preview purposes.
|
|
type DMChatRoom struct {
|
|
ID DMChatRoomID `db:"id"`
|
|
Type string `db:"type"`
|
|
LastMessagedAt Timestamp `db:"last_messaged_at"` // Used for ordering the chats in the UI
|
|
IsNSFW bool `db:"is_nsfw"`
|
|
|
|
// GROUP_DM rooms
|
|
CreatedAt Timestamp `db:"created_at"`
|
|
CreatedByUserID UserID `db:"created_by_user_id"`
|
|
Name string `db:"name"`
|
|
AvatarImageRemoteURL string `db:"avatar_image_remote_url"`
|
|
AvatarImageLocalPath string `db:"avatar_image_local_path"`
|
|
|
|
LastMessageID DMMessageID `db:"last_message_id"` // Not stored, but used to generate preview
|
|
Participants map[UserID]DMChatParticipant
|
|
}
|
|
|
|
// TODO: view-layer
|
|
// - view helpers should go in a view layer
|
|
func (r DMChatRoom) GetParticipantIDs() []UserID {
|
|
ret := []UserID{}
|
|
for user_id := range r.Participants {
|
|
ret = append(ret, user_id)
|
|
}
|
|
return ret
|
|
}
|