diff --git a/nise-backend/src/main/kotlin/com/nisemoe/nise/controller/UserDetailsController.kt b/nise-backend/src/main/kotlin/com/nisemoe/nise/controller/UserDetailsController.kt
index cdf1942..09d61f5 100644
--- a/nise-backend/src/main/kotlin/com/nisemoe/nise/controller/UserDetailsController.kt
+++ b/nise-backend/src/main/kotlin/com/nisemoe/nise/controller/UserDetailsController.kt
@@ -25,8 +25,6 @@ class UserDetailsController(
private val userQueueService: UpdateUserQueueService
) {
-
-
data class UserDetailsResponse(
val user_details: UserDetails,
val queue_details: UserQueueDetails,
diff --git a/nise-backend/src/main/kotlin/com/nisemoe/nise/scheduler/ImportScores.kt b/nise-backend/src/main/kotlin/com/nisemoe/nise/scheduler/ImportScores.kt
index c26f9ec..0dbab4f 100644
--- a/nise-backend/src/main/kotlin/com/nisemoe/nise/scheduler/ImportScores.kt
+++ b/nise-backend/src/main/kotlin/com/nisemoe/nise/scheduler/ImportScores.kt
@@ -218,10 +218,10 @@ class ImportScores(
// Update the frontend
messagingTemplate.convertAndSend(
"/topic/live-user/${userId}",
- currentQueueDetails
+ UpdateUserQueueService.UserQueueWebsocketPacket(message = "UPDATE_PROGRESS", data = currentQueueDetails)
)
- this.insertAndProcessNewScore(topScore.beatmap.id, topScore)
+ this.insertAndProcessNewScore(topScore.beatmap.id, topScore, isUserQueue = true)
}
current += 1
}
@@ -518,7 +518,7 @@ class ImportScores(
dslContext.batch(queries).execute()
}
- private fun insertAndProcessNewScore(beatmapId: Int, score: OsuApiModels.Score) {
+ private fun insertAndProcessNewScore(beatmapId: Int, score: OsuApiModels.Score, isUserQueue: Boolean = false) {
// Check if the score is already in the database
val scoreExists = dslContext.fetchExists(SCORES, SCORES.REPLAY_ID.eq(score.best_id))
if (scoreExists) {
@@ -627,10 +627,19 @@ class ImportScores(
return
}
- if(processedReplay.ur != null && processedReplay.ur < 25.0) {
- this.logger.info("Inserting user into queue for update: ${score.user_id}")
- this.logger.info("UR: ${processedReplay.ur} on their replay with id = ${score.best_id}")
- this.updateUserQueueService.insertUser(score.user_id)
+ if(processedReplay.adjusted_ur != null && processedReplay.adjusted_ur < 25.0) {
+ if(isUserQueue) {
+ messagingTemplate.convertAndSend(
+ "/topic/live-user/${score.user_id}",
+ UpdateUserQueueService.UserQueueWebsocketPacket(message = "UPDATE_SCORES")
+ )
+ }
+
+ if(!isUserQueue) {
+ this.logger.info("Inserting user into queue for update: ${score.user_id}")
+ this.logger.info("UR: ${processedReplay.ur} on their replay with id = ${score.best_id}")
+ this.updateUserQueueService.insertUser(score.user_id)
+ }
}
for (judgement in processedReplay.judgements) {
diff --git a/nise-backend/src/main/kotlin/com/nisemoe/nise/service/UpdateUserQueueService.kt b/nise-backend/src/main/kotlin/com/nisemoe/nise/service/UpdateUserQueueService.kt
index 172b9e4..0d2a886 100644
--- a/nise-backend/src/main/kotlin/com/nisemoe/nise/service/UpdateUserQueueService.kt
+++ b/nise-backend/src/main/kotlin/com/nisemoe/nise/service/UpdateUserQueueService.kt
@@ -19,6 +19,11 @@ class UpdateUserQueueService(
private val USER_UPDATE_INTERVAL_HOURS = 4
+ data class UserQueueWebsocketPacket(
+ val message: String,
+ val data: UserQueueDetails? = null
+ )
+
/**
* Retrieves the user queue details for the given user ID.
*
@@ -38,28 +43,10 @@ class UpdateUserQueueService(
.limit(1)
.fetchOneInto(OffsetDateTime::class.java)
- val lastCompletedUpdateUser = dslContext.select(USERS.SYS_LAST_UPDATE)
- .from(USERS)
- .where(USERS.USER_ID.eq(userId))
- .fetchOneInto(OffsetDateTime::class.java)
-
- // Select the most recent
- val lastCompletedUpdate = lastCompletedUpdateQueue?.let {
- if (lastCompletedUpdateUser != null) {
- if (lastCompletedUpdateUser.isAfter(lastCompletedUpdateQueue)) {
- lastCompletedUpdateUser
- } else {
- lastCompletedUpdateQueue
- }
- } else {
- lastCompletedUpdateQueue
- }
- } ?: lastCompletedUpdateUser
-
var canUpdate = !isProcessing
- if(lastCompletedUpdate != null) {
+ if(lastCompletedUpdateQueue != null) {
val now = OffsetDateTime.now(ZoneOffset.UTC)
- val hoursSinceLastUpdate = now.hour - lastCompletedUpdate.hour
+ val hoursSinceLastUpdate = now.hour - lastCompletedUpdateQueue.hour
if(hoursSinceLastUpdate < USER_UPDATE_INTERVAL_HOURS)
canUpdate = false
@@ -78,7 +65,7 @@ class UpdateUserQueueService(
return UserQueueDetails(
isProcessing,
- lastCompletedUpdate,
+ lastCompletedUpdateQueue,
canUpdate,
currentProgress?.progressCurrent,
currentProgress?.progressTotal
@@ -123,7 +110,7 @@ class UpdateUserQueueService(
// Notify the user that their queue has been processed with fresh info
messagingTemplate.convertAndSend(
"/topic/live-user/${userId}",
- this.getUserQueueDetails(userId)
+ UpdateUserQueueService.UserQueueWebsocketPacket(message = "UPDATE_PROGRESS", data = this.getUserQueueDetails(userId))
)
}
diff --git a/nise-frontend/src/app/app.component.html b/nise-frontend/src/app/app.component.html
index 8dd5b87..f2cb6a2 100644
--- a/nise-frontend/src/app/app.component.html
+++ b/nise-frontend/src/app/app.component.html
@@ -26,5 +26,5 @@
| Beatmap | +Date | ++ cvUR + | ++ PP + | ++ |
|---|---|---|---|---|
|
+
+
+
+ |
+ {{ score.date }} | +{{ score.ur | number: '1.2-2' }} | +{{ score.pp | number: '1.0-1' }} | ++ + Details + + + osu!web + + | +
| Beatmap | -Date | -- cvUR - | -- PP - | -Links | +Replay 1 Details | +Replay 2 Details | +Similarity | +|
|---|---|---|---|---|---|---|---|---|
| - | {{ score.date }} | -{{ score.ur | number: '1.2-2' }} | -{{ score.pp | number: '1.0-1' }} | -- - Details + |
+
+ {{ score.replay_date_1 }}
+ + User: {{ score.username_1 }} + + PP: {{ score.replay_pp_1 | number: '1.0-0' }} - - osu!web + |
+
+
+ {{ score.replay_date_2 }}
+ + User: {{ score.username_2 }} + + PP: {{ score.replay_pp_2 | number: '1.0-0' }} + + |
+ {{ score.similarity | number: '1.0-2' }} | ++ + Details |
| Beatmap | -Replay 1 Details | -Replay 2 Details | -Similarity | -- |
|---|---|---|---|---|
|
-
-
-
- |
-
-
- {{ score.replay_date_1 }}
- - User: {{ score.username_1 }} - - PP: {{ score.replay_pp_1 | number: '1.0-0' }} - - |
-
-
- {{ score.replay_date_2 }}
- - User: {{ score.username_2 }} - - PP: {{ score.replay_pp_2 | number: '1.0-0' }} - - |
- {{ score.similarity | number: '1.0-2' }} | -- - Details - - | -