dkforest

A forum and chat platform (onion)
git clone https://git.dasho.dev/n0tr1v/dkforest.git
Log | Files | Refs | LICENSE

commit cc1f39846d3592040b45212ed0198550ba63929e
parent e81730a06949ec79065dea455e44cda3f25f3872
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Mon, 12 Dec 2022 20:45:30 -0500

strongly typed GroupID

Diffstat:
Mpkg/database/tableChatMessages.go | 4++--
Mpkg/database/tableChatRoomGroups.go | 16+++++++++-------
Mpkg/web/handlers/api/v1/msgInterceptor.go | 2+-
Mpkg/web/handlers/api/v1/topBarHandler.go | 2+-
Mpkg/web/handlers/api/v1/werewolf.go | 11+++++------
5 files changed, 18 insertions(+), 17 deletions(-)

diff --git a/pkg/database/tableChatMessages.go b/pkg/database/tableChatMessages.go @@ -65,7 +65,7 @@ type ChatMessage struct { RoomID RoomID UserID UserID ToUserID *UserID - GroupID *int64 + GroupID *GroupID UploadID *int64 CreatedAt time.Time User User @@ -467,7 +467,7 @@ func CreateOrEditMessage( fromUserID UserID, toUserID *UserID, upload *Upload, - groupID *int64, + groupID *GroupID, hellbanMsg, modMsg, systemMsg bool) (int64, error) { if roomKey != "" { diff --git a/pkg/database/tableChatRoomGroups.go b/pkg/database/tableChatRoomGroups.go @@ -5,8 +5,10 @@ import ( "time" ) +type GroupID int64 + type ChatRoomGroup struct { - ID int64 + ID GroupID RoomID RoomID Name string Color string @@ -21,13 +23,13 @@ func (g *ChatRoomGroup) DoSave() { } type ChatRoomUserGroup struct { - GroupID int64 + GroupID GroupID RoomID RoomID UserID UserID User User } -func GetUserRoomGroups(userID, roomID RoomID) (out []ChatRoomUserGroup, err error) { +func GetUserRoomGroups(userID UserID, roomID RoomID) (out []ChatRoomUserGroup, err error) { err = DB.Find(&out, "user_id = ? AND room_id = ?", userID, roomID).Error return } @@ -37,7 +39,7 @@ func GetRoomGroupByName(roomID RoomID, groupName string) (out ChatRoomGroup, err return } -func IsUserInGroupByID(userID UserID, groupID int64) bool { +func IsUserInGroupByID(userID UserID, groupID GroupID) bool { var count int64 DB.Model(ChatRoomUserGroup{}).Where("group_id = ? AND user_id = ?", groupID, userID).Count(&count) return count == 1 @@ -59,13 +61,13 @@ func CreateChatRoomGroup(roomID RoomID, name, color string) (out ChatRoomGroup, return } -func AddUserToRoomGroup(roomID RoomID, groupID int64, userID UserID) (out ChatRoomUserGroup, err error) { +func AddUserToRoomGroup(roomID RoomID, groupID GroupID, userID UserID) (out ChatRoomUserGroup, err error) { out = ChatRoomUserGroup{GroupID: groupID, RoomID: roomID, UserID: userID} err = DB.Create(&out).Error return } -func RmUserFromRoomGroup(roomID RoomID, groupID int64, userID UserID) (err error) { +func RmUserFromRoomGroup(roomID RoomID, groupID GroupID, userID UserID) (err error) { err = DB.Delete(&ChatRoomUserGroup{}, "user_id = ? AND group_id = ? AND room_id = ?", userID, groupID, roomID).Error return } @@ -75,7 +77,7 @@ func GetRoomGroups(roomID RoomID) (out []ChatRoomGroup, err error) { return } -func GetRoomGroupUsers(roomID RoomID, groupID int64) (out []ChatRoomUserGroup, err error) { +func GetRoomGroupUsers(roomID RoomID, groupID GroupID) (out []ChatRoomUserGroup, err error) { err = DB.Where("room_id = ? AND group_id = ?", roomID, groupID).Preload("User").Find(&out).Error return } diff --git a/pkg/web/handlers/api/v1/msgInterceptor.go b/pkg/web/handlers/api/v1/msgInterceptor.go @@ -84,7 +84,7 @@ func ProcessRawMessage(in, roomKey string, authUserID database.UserID, roomID da return html, taggedUsersIDsMap } -func sendInboxes(room database.ChatRoom, authUser, toUser *database.User, msgID int64, groupID *int64, html string, modMsg bool, +func sendInboxes(room database.ChatRoom, authUser, toUser *database.User, msgID int64, groupID *database.GroupID, html string, modMsg bool, taggedUsersIDsMap map[database.UserID]database.User) { // Only have chat inbox for unencrypted messages if room.IsProtected() { diff --git a/pkg/web/handlers/api/v1/topBarHandler.go b/pkg/web/handlers/api/v1/topBarHandler.go @@ -454,7 +454,7 @@ type Command struct { toUser *database.User // If not nil, will be a PM upload *database.Upload // If the message contains an uploaded file editMsg *database.ChatMessage // If we're editing a message - groupID *int64 // If the message is for a subgroup + groupID *database.GroupID // If the message is for a subgroup hellbanMsg bool // Is the message will be marked HB systemMsg bool // Is the message system modMsg bool // Is the message part of the "moderators" group diff --git a/pkg/web/handlers/api/v1/werewolf.go b/pkg/web/handlers/api/v1/werewolf.go @@ -42,9 +42,9 @@ type Werewolf struct { readyCh chan bool narratorID database.UserID roomID database.RoomID - werewolfGroupID int64 - spectatorGroupID int64 - deadGroupID int64 + werewolfGroupID database.GroupID + spectatorGroupID database.GroupID + deadGroupID database.GroupID players map[string]*Player playersAlive map[string]*Player spectators map[database.UserID]struct{} @@ -115,7 +115,6 @@ func (b *Werewolf) InterceptPreGameMsg(cmd *Command) { } func (b *Werewolf) InterceptNightMsg(cmd *Command) { - fmt.Println("????", cmd.groupID, cmd.message) if cmd.groupID != nil && *cmd.groupID == b.werewolfGroupID { select { case b.werewolfCh <- cmd.message: @@ -328,12 +327,12 @@ func (b *Werewolf) isValidPlayerName(name string) bool { } // Narrate register a chat message on behalf of the narrator user -func (b *Werewolf) Narrate(msg string, toUserID *database.UserID, groupID *int64) { +func (b *Werewolf) Narrate(msg string, toUserID *database.UserID, groupID *database.GroupID) { html, _ := ProcessRawMessage(msg, "", b.narratorID, b.roomID, nil) b.NarrateRaw(html, toUserID, groupID) } -func (b *Werewolf) NarrateRaw(msg string, toUserID *database.UserID, groupID *int64) { +func (b *Werewolf) NarrateRaw(msg string, toUserID *database.UserID, groupID *database.GroupID) { _, _ = database.CreateOrEditMessage(nil, msg, msg, "", b.roomID, b.narratorID, toUserID, nil, groupID, false, false, false) }