@@ -329,7 +329,9 @@ export async function addResult(
329329 // );
330330 // return res.status(400).json({ message: "Time traveler detected" });
331331
332- const { data : lastResult } = await tryCatch ( ResultDAL . getLastResult ( uid ) ) ;
332+ const { data : lastResultTimestamp } = await tryCatch (
333+ ResultDAL . getLastResultTimestamp ( uid )
334+ ) ;
333335
334336 //convert result test duration to miliseconds
335337 completedEvent . timestamp = Math . floor ( Date . now ( ) / 1000 ) * 1000 ;
@@ -338,16 +340,16 @@ export async function addResult(
338340 const testDurationMilis = completedEvent . testDuration * 1000 ;
339341 const incompleteTestsMilis = completedEvent . incompleteTestSeconds * 1000 ;
340342 const earliestPossible =
341- ( lastResult ?. timestamp ?? 0 ) + testDurationMilis + incompleteTestsMilis ;
343+ ( lastResultTimestamp ?? 0 ) + testDurationMilis + incompleteTestsMilis ;
342344 const nowNoMilis = Math . floor ( Date . now ( ) / 1000 ) * 1000 ;
343345 if (
344- isSafeNumber ( lastResult ?. timestamp ) &&
346+ isSafeNumber ( lastResultTimestamp ) &&
345347 nowNoMilis < earliestPossible - 1000
346348 ) {
347349 void addLog (
348350 "invalid_result_spacing" ,
349351 {
350- lastTimestamp : lastResult . timestamp ,
352+ lastTimestamp : lastResultTimestamp ,
351353 earliestPossible,
352354 now : nowNoMilis ,
353355 testDuration : testDurationMilis ,
@@ -590,7 +592,7 @@ export async function addResult(
590592 const xpGained = await calculateXp (
591593 completedEvent ,
592594 req . ctx . configuration . users . xp ,
593- uid ,
595+ lastResultTimestamp ,
594596 user . xp ?? 0 ,
595597 streak
596598 ) ;
@@ -689,7 +691,7 @@ type XpResult = {
689691async function calculateXp (
690692 result : CompletedEvent ,
691693 xpConfiguration : Configuration [ "users" ] [ "xp" ] ,
692- uid : string ,
694+ lastResultTimestamp : number | null ,
693695 currentTotalXp : number ,
694696 streak : number
695697) : Promise < XpResult > {
@@ -802,16 +804,8 @@ async function calculateXp(
802804 const accuracyModifier = ( acc - 50 ) / 50 ;
803805
804806 let dailyBonus = 0 ;
805- const { data : lastResult , error : getLastResultError } = await tryCatch (
806- ResultDAL . getLastResult ( uid )
807- ) ;
808-
809- if ( getLastResultError ) {
810- Logger . error ( `Could not fetch last result: ${ getLastResultError } ` ) ;
811- }
812-
813- if ( isSafeNumber ( lastResult ?. timestamp ) ) {
814- const lastResultDay = getStartOfDayTimestamp ( lastResult . timestamp ) ;
807+ if ( isSafeNumber ( lastResultTimestamp ) ) {
808+ const lastResultDay = getStartOfDayTimestamp ( lastResultTimestamp ) ;
815809 const today = getCurrentDayTimestamp ( ) ;
816810 if ( lastResultDay !== today ) {
817811 const proportionalXp = Math . round ( currentTotalXp * 0.05 ) ;
0 commit comments