Enha: remove marks
This commit is contained in:
@ -75,10 +75,25 @@ func getFullInfoByCtx(ctx context.Context) (*models.FullInfo, error) {
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
// get card_marks
|
||||
if room.IsRunning && room.MimeDone {
|
||||
fillCardMarks(ctx, room)
|
||||
}
|
||||
resp.Room = room
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
func fillCardMarks(ctx context.Context, room *models.Room) error {
|
||||
for i, card := range room.Cards {
|
||||
marks, err := repo.CardMarksByCardID(ctx, card.ID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
room.Cards[i].Marks = marks
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func getPlayerByCtx(ctx context.Context) (*models.Player, error) {
|
||||
username, ok := ctx.Value(models.CtxUsernameKey).(string)
|
||||
if !ok {
|
||||
|
@ -221,17 +221,30 @@ func HandleMarkCard(w http.ResponseWriter, r *http.Request) {
|
||||
found := false
|
||||
var newMarks []models.CardMark
|
||||
for _, mark := range card.Marks {
|
||||
if mark.Username == fi.State.Username && mark.Active {
|
||||
if mark.Username == fi.State.Username {
|
||||
found = true
|
||||
} else {
|
||||
newMarks = append(newMarks, mark)
|
||||
}
|
||||
}
|
||||
if !found {
|
||||
newMarks = append(newMarks, models.CardMark{
|
||||
cm := models.CardMark{
|
||||
Username: fi.State.Username,
|
||||
Active: true,
|
||||
})
|
||||
CardID: card.ID,
|
||||
}
|
||||
newMarks = append(newMarks, cm)
|
||||
if err := repo.CardMarksAdd(r.Context(), &cm); err != nil {
|
||||
log.Error("failed to add mark", "error", err, "card", card)
|
||||
abortWithError(w, "failed to add mark")
|
||||
return
|
||||
}
|
||||
} else {
|
||||
// TODO: if mark was found, it needs to be removed
|
||||
if err := repo.CardMarksRemove(r.Context(), card.ID, fi.State.Username); err != nil {
|
||||
log.Error("failed to remove mark", "error", err, "card", card)
|
||||
abortWithError(w, "failed to remove mark")
|
||||
return
|
||||
}
|
||||
}
|
||||
fi.Room.Cards[i].Marks = newMarks
|
||||
cardword = fi.Room.Cards[i]
|
||||
|
Reference in New Issue
Block a user