@@ -100,15 +100,6 @@ async function handleUpdateTask(
100100 }
101101}
102102
103- async function handleStartWorkingOn (
104- guild : Guild ,
105- taskId : bigint ,
106- userId : bigint
107- ) {
108- await moveChannel ( guild , taskId , null , ChannelMovingEvent . START ) ;
109- await sendStartWorkingOnMessage ( guild , userId , taskId ) ;
110- }
111-
112103async function handleUpdateUserRole (
113104 guild : Guild ,
114105 userId : bigint ,
@@ -177,7 +168,9 @@ const discordMutationHook = (_build: Build) => (fieldContext: Context<any>) => {
177168 fieldContext . scope . fieldName !== "deleteCtf" &&
178169 fieldContext . scope . fieldName !== "updateUserRole" &&
179170 fieldContext . scope . fieldName !== "setDiscordEventLink" &&
180- fieldContext . scope . fieldName !== "registerWithToken"
171+ fieldContext . scope . fieldName !== "registerWithToken" &&
172+ fieldContext . scope . fieldName !== "assignUserToTask" &&
173+ fieldContext . scope . fieldName !== "unassignUserFromTask"
181174 ) {
182175 return null ;
183176 }
@@ -198,7 +191,7 @@ const discordMutationHook = (_build: Build) => (fieldContext: Context<any>) => {
198191 //add challenges to the ctf channel discord
199192 switch ( fieldContext . scope . fieldName ) {
200193 case "createTask" :
201- handleCreateTask (
194+ await handleCreateTask (
202195 guild ,
203196 args . input . ctfId ,
204197 args . input . title ,
@@ -225,7 +218,7 @@ const discordMutationHook = (_build: Build) => (fieldContext: Context<any>) => {
225218 } ) ;
226219 break ;
227220 case "startWorkingOn" :
228- handleStartWorkingOn (
221+ sendStartWorkingOnMessage (
229222 guild ,
230223 args . input . taskId ,
231224 context . jwtClaims . user_id
@@ -285,6 +278,27 @@ const discordMutationHook = (_build: Build) => (fieldContext: Context<any>) => {
285278 console . error ( "Failed to register with token." , err ) ;
286279 } ) ;
287280 break ;
281+ case "assignUserToTask" :
282+ sendStartWorkingOnMessage (
283+ guild ,
284+ args . input . profileId ,
285+ args . input . taskId ,
286+ context . jwtClaims . user_id
287+ ) . catch ( ( err ) => {
288+ console . error ( "Failed to start working on task." , err ) ;
289+ } ) ;
290+ break ;
291+ case "unassignUserFromTask" :
292+ sendStopWorkingOnMessage (
293+ guild ,
294+ args . input . profileId ,
295+ args . input . taskId ,
296+ false ,
297+ context . jwtClaims . user_id
298+ ) . catch ( ( err ) => {
299+ console . error ( "Failed to stop working on task." , err ) ;
300+ } ) ;
301+ break ;
288302 default :
289303 break ;
290304 }
@@ -348,31 +362,37 @@ const discordMutationHook = (_build: Build) => (fieldContext: Context<any>) => {
348362export async function sendStartWorkingOnMessage (
349363 guild : Guild ,
350364 userId : bigint ,
351- task : Task | bigint
365+ task : Task | bigint ,
366+ assignedBy : bigint | null = null
352367) {
353368 await moveChannel ( guild , task , null , ChannelMovingEvent . START ) ;
354- return sendMessageToTask (
355- guild ,
356- task ,
357- `${ await convertToUsernameFormat ( userId ) } is working on this task!`
358- ) ;
369+
370+ let msg = `${ await convertToUsernameFormat ( userId ) } is working on this task!` ;
371+ if ( assignedBy != null ) {
372+ msg += ` (assigned by: ${ await convertToUsernameFormat ( assignedBy ) } )` ;
373+ }
374+
375+ return sendMessageToTask ( guild , task , msg ) ;
359376}
360377
361378export async function sendStopWorkingOnMessage (
362379 guild : Guild ,
363380 userId : bigint ,
364381 task : Task | bigint ,
365- cancel = false
382+ cancel = false ,
383+ assignedBy : bigint | null = null
366384) {
367385 let text = "stopped" ;
368386 if ( cancel ) {
369387 text = "cancelled" ;
370388 }
371- return sendMessageToTask (
372- guild ,
373- task ,
374- `${ await convertToUsernameFormat ( userId ) } ${ text } working on this task!`
375- ) ;
389+
390+ let msg = `${ await convertToUsernameFormat ( userId ) } ${ text } working on this task!` ;
391+ if ( assignedBy != null ) {
392+ msg += ` (assigned by: ${ await convertToUsernameFormat ( assignedBy ) } )` ;
393+ }
394+
395+ return sendMessageToTask ( guild , task , msg ) ;
376396}
377397
378398export async function handleDeleteCtf ( ctfId : string | bigint , guild : Guild ) {
0 commit comments