@@ -418,45 +418,21 @@ await QueueMessage(new LiveControlResponse<LiveResponseType>
418418 private async Task ProcessFrameInternal ( ClientLiveFrame frame )
419419 {
420420 var permCheck = CheckFramePermissions ( frame . Shocker , frame . Type ) ;
421- if ( permCheck . IsT1 )
421+ if ( ! permCheck . TryPickT0 ( out var perms , out var error ) )
422422 {
423423 await QueueMessage ( new LiveControlResponse < LiveResponseType >
424424 {
425- ResponseType = LiveResponseType . ShockerNotFound
426- } ) ;
427- return ;
428- }
429-
430- if ( permCheck . IsT2 )
431- {
432- await QueueMessage ( new LiveControlResponse < LiveResponseType >
433- {
434- ResponseType = LiveResponseType . ShockerMissingLivePermission
435- } ) ;
436- return ;
437- }
438-
439- if ( permCheck . IsT3 )
440- {
441- await QueueMessage ( new LiveControlResponse < LiveResponseType >
442- {
443- ResponseType = LiveResponseType . ShockerMissingPermission
444- } ) ;
445- return ;
446- }
447-
448- if ( permCheck . IsT4 )
449- {
450- await QueueMessage ( new LiveControlResponse < LiveResponseType > ( )
451- {
452- ResponseType = LiveResponseType . ShockerPaused
425+ ResponseType = error . Match (
426+ notFound => LiveResponseType . ShockerNotFound ,
427+ liveNotEnabled => LiveResponseType . ShockerMissingLivePermission ,
428+ noPermission => LiveResponseType . ShockerMissingPermission ,
429+ shockerPaused => LiveResponseType . ShockerPaused
430+ )
453431 } ) ;
432+
454433 return ;
455434 }
456435
457-
458- var perms = permCheck . AsT0 . Value ;
459-
460436 // Clamp to limits
461437 var intensity = Math . Clamp ( frame . Intensity , HardLimits . MinControlIntensity ,
462438 perms . Intensity ?? HardLimits . MaxControlIntensity ) ;
@@ -481,16 +457,14 @@ await result.Match(
481457 ) ;
482458 }
483459
484- private OneOf < Success < SharePermsAndLimits > , NotFound , LiveNotEnabled , NoPermission , ShockerPaused >
485- CheckFramePermissions (
486- Guid shocker , ControlType controlType )
460+ private OneOf < SharePermsAndLimits , NotFound , LiveNotEnabled , NoPermission , ShockerPaused > CheckFramePermissions ( Guid shocker , ControlType controlType )
487461 {
488462 if ( ! _sharedShockers . TryGetValue ( shocker , out var shockerShare ) ) return new NotFound ( ) ;
489463
490464 if ( shockerShare . Paused ) return new ShockerPaused ( ) ;
491465 if ( ! PermissionUtils . IsAllowed ( controlType , true , shockerShare . PermsAndLimits ) ) return new NoPermission ( ) ;
492466
493- return new Success < SharePermsAndLimits > ( shockerShare . PermsAndLimits ) ;
467+ return shockerShare . PermsAndLimits ;
494468 }
495469
496470
0 commit comments