Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion client/src/pages/AddSelf.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ const AddSelf = () => {
let correctCode;
if (tr !== '') {
console.log(tr);
const res = await postRequest<OkResponse>(`/qr/check/${tr}`, '', {
const res = await postRequest<OkResponse>(`/qr/check/${encodeURIComponent(tr)}`, '', {
code: paramCode,
});
if (res.status !== 200) {
Expand Down
6 changes: 3 additions & 3 deletions client/src/pages/admin/QrCode.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ const QrCode = () => {

cd = res.data?.qr_code as string;
} else {
const res = await getRequest<Code>(`/admin/qr/${tr}`, 'admin');
const res = await getRequest<Code>(`/admin/qr/${encodeURIComponent(tr)}`, 'admin');
if (res.status !== 200) {
errorAlert(res);
return;
Expand Down Expand Up @@ -62,7 +62,7 @@ const QrCode = () => {
}
cd = res.data?.qr_code as string;
} else {
const res = await postRequest<Code>(`/admin/qr/${track}`, 'admin', {});
const res = await postRequest<Code>(`/admin/qr/${encodeURIComponent(track)}`, 'admin', {});
if (res.status !== 200) {
errorAlert(res);
return;
Expand All @@ -78,7 +78,7 @@ const QrCode = () => {
// Create QR code
const origin = window.location.origin.toString();
const track = searchParams.get('track') ?? '';
const url = `${origin}/add-self?code=${code}&track=${track.replace(/\s/g, '%20')}`;
const url = `${origin}/add-self?code=${code}&track=${encodeURIComponent(track)}`;

const qrCode = qr(url);

Expand Down
28 changes: 18 additions & 10 deletions server/database/judge.go
Original file line number Diff line number Diff line change
Expand Up @@ -181,19 +181,27 @@ func UpdateAfterSeen(db *mongo.Database, ctx context.Context, judge *models.Judg
return errors.New("error updating judge: " + err.Error())
}

incData := gin.H{}
if judge.Track != "" {
incData["track_seen."+judge.Track] = 1
project, findErr := FindProject(db, ctx, &seenProject.ProjectId)
if findErr != nil {
return errors.New("error finding project: " + findErr.Error())
}
if project.TrackSeen == nil {
project.TrackSeen = make(map[string]int64)
}
project.TrackSeen[judge.Track] += 1
_, err = db.Collection("projects").UpdateOne(
ctx,
gin.H{"_id": seenProject.ProjectId},
gin.H{"$set": gin.H{"track_seen": project.TrackSeen, "last_activity": util.Now()}},
)
Comment thread
balebbae marked this conversation as resolved.
Outdated
} else {
incData["seen"] = 1
_, err = db.Collection("projects").UpdateOne(
ctx,
gin.H{"_id": seenProject.ProjectId},
gin.H{"$inc": gin.H{"seen": 1}, "$set": gin.H{"last_activity": util.Now()}},
)
}

// Update the project's seen count
_, err = db.Collection("projects").UpdateOne(
ctx,
gin.H{"_id": seenProject.ProjectId},
gin.H{"$inc": incData, "$set": gin.H{"last_activity": util.Now()}},
)
if err != nil {
return errors.New("error updating project: " + err.Error())
}
Expand Down
8 changes: 6 additions & 2 deletions server/database/options.go
Original file line number Diff line number Diff line change
Expand Up @@ -174,8 +174,12 @@ func UpdateQRCode(db *mongo.Database, ctx context.Context, qrCode string) error

// UpdateTrackQRCode updates the QR code for a track in the database
func UpdateTrackQRCode(db *mongo.Database, ctx context.Context, track string, qrCode string) error {
key := "track_qr_codes." + track
_, err := db.Collection("options").UpdateOne(ctx, gin.H{}, gin.H{"$set": gin.H{key: qrCode}})
options, err := GetOptions(db, ctx)
if err != nil {
return err
}
options.TrackQRCodes[track] = qrCode
_, err = db.Collection("options").UpdateOne(ctx, gin.H{}, gin.H{"$set": gin.H{"track_qr_codes": options.TrackQRCodes}})
Comment thread
balebbae marked this conversation as resolved.
Outdated
return err
}

Expand Down
21 changes: 15 additions & 6 deletions server/database/project.go
Original file line number Diff line number Diff line change
Expand Up @@ -319,13 +319,22 @@ func UpdateProjectStars(db *mongo.Database, ctx context.Context, projId primitiv

// UpdateProjectTrackStars updates the starred count of a project in a specific track, incrementing or decrementing it
func UpdateProjectTrackStars(db *mongo.Database, ctx context.Context, projId primitive.ObjectID, track string, increment bool) error {
change := -1
if increment {
change = 1
project, err := FindProject(db, ctx, &projId)
if err != nil {
return err
}
track_str := "track_stars." + track

_, err := db.Collection("projects").UpdateOne(ctx, gin.H{"_id": projId}, gin.H{"$inc": gin.H{track_str: change}})
if project == nil {
return errors.New("project not found")
}
change := int64(1)
if !increment {
change = -1
}
if project.TrackStars == nil {
project.TrackStars = make(map[string]int64)
}
project.TrackStars[track] += change
_, err = db.Collection("projects").UpdateOne(ctx, gin.H{"_id": projId}, gin.H{"$set": gin.H{"track_stars": project.TrackStars}})
return err
}
Comment thread
balebbae marked this conversation as resolved.
Outdated

Expand Down