commit cc1f39846d3592040b45212ed0198550ba63929e
parent e81730a06949ec79065dea455e44cda3f25f3872
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Mon, 12 Dec 2022 20:45:30 -0500
strongly typed GroupID
Diffstat:
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)
}