@@ -220,6 +220,7 @@ function Content({
220
220
return (
221
221
< RuleMismatch
222
222
result = { result }
223
+ emailAccountId = { emailAccountId }
223
224
onSelectExpectedRuleId = { onSelectExpectedRule }
224
225
rules = { rules }
225
226
/>
@@ -234,6 +235,7 @@ function Content({
234
235
return (
235
236
< ThreadSettingsMismatchMessage
236
237
expectedRuleId = { expectedRule . id }
238
+ emailAccountId = { emailAccountId }
237
239
onBack = { onBack }
238
240
/>
239
241
) ;
@@ -273,6 +275,7 @@ function Content({
273
275
if ( isExpectedStaticRule || isActualStaticRule ) {
274
276
return (
275
277
< StaticMismatch
278
+ emailAccountId = { emailAccountId }
276
279
ruleId = { expectedRule ?. id || actualRule ?. id ! }
277
280
isExpectedStaticRule = { isExpectedStaticRule }
278
281
onBack = { onBack }
@@ -298,6 +301,7 @@ function Content({
298
301
if ( view === "ai-fix" ) {
299
302
return (
300
303
< AIFixView
304
+ emailAccountId = { emailAccountId }
301
305
loadingAiFix = { isExecuting }
302
306
fixedInstructions = { fixedInstructions ?? null }
303
307
fixedInstructionsRule = { fixedInstructionsRule ?? null }
@@ -318,6 +322,7 @@ function Content({
318
322
result = { result }
319
323
isTest = { isTest }
320
324
onBack = { onBack }
325
+ emailAccountId = { emailAccountId }
321
326
/>
322
327
) ;
323
328
}
@@ -327,6 +332,7 @@ function Content({
327
332
}
328
333
329
334
function AIFixView ( {
335
+ emailAccountId,
330
336
loadingAiFix,
331
337
fixedInstructions,
332
338
fixedInstructionsRule,
@@ -335,6 +341,7 @@ function AIFixView({
335
341
onBack,
336
342
onReject,
337
343
} : {
344
+ emailAccountId : string ;
338
345
loadingAiFix : boolean ;
339
346
fixedInstructions : {
340
347
ruleId : string ;
@@ -359,7 +366,10 @@ function AIFixView({
359
366
< div className = "space-y-2" >
360
367
{ fixedInstructionsRule ?. instructions ? (
361
368
< div className = "space-y-2" >
362
- < ProcessResultDisplay result = { { rule : fixedInstructionsRule } } />
369
+ < ProcessResultDisplay
370
+ result = { { rule : fixedInstructionsRule } }
371
+ emailAccountId = { emailAccountId }
372
+ />
363
373
< Instructions
364
374
label = "Original:"
365
375
instructions = { fixedInstructionsRule ?. instructions }
@@ -388,18 +398,23 @@ function AIFixView({
388
398
function RuleMismatch ( {
389
399
result,
390
400
rules,
401
+ emailAccountId,
391
402
onSelectExpectedRuleId,
392
403
} : {
393
404
result : RunRulesResult | null ;
394
405
rules : RulesResponse ;
406
+ emailAccountId : string ;
395
407
onSelectExpectedRuleId : ( ruleId : string | null ) => void ;
396
408
} ) {
397
409
return (
398
410
< div >
399
411
< Label name = "matchedRule" label = "Matched:" />
400
412
< div className = "mt-1" >
401
413
{ result ? (
402
- < ProcessResultDisplay result = { result } />
414
+ < ProcessResultDisplay
415
+ result = { result }
416
+ emailAccountId = { emailAccountId }
417
+ />
403
418
) : (
404
419
< p > No rule matched</ p >
405
420
) }
@@ -420,9 +435,11 @@ function RuleMismatch({
420
435
421
436
function ThreadSettingsMismatchMessage ( {
422
437
expectedRuleId,
438
+ emailAccountId,
423
439
onBack,
424
440
} : {
425
441
expectedRuleId : string ;
442
+ emailAccountId : string ;
426
443
onBack : ( ) => void ;
427
444
} ) {
428
445
return (
@@ -433,7 +450,10 @@ function ThreadSettingsMismatchMessage({
433
450
</ SectionDescription >
434
451
< div className = "mt-2 flex gap-2" >
435
452
< BackButton onBack = { onBack } />
436
- < EditRuleButton ruleId = { expectedRuleId } />
453
+ < EditRuleButton
454
+ ruleId = { expectedRuleId }
455
+ emailAccountId = { emailAccountId }
456
+ />
437
457
</ div >
438
458
</ div >
439
459
) ;
@@ -506,7 +526,7 @@ function GroupMismatchAdd({
506
526
507
527
< div className = "mt-2 flex gap-2" >
508
528
< BackButton onBack = { onBack } />
509
- < EditRuleButton ruleId = { ruleId } />
529
+ < EditRuleButton ruleId = { ruleId } emailAccountId = { emailAccountId } />
510
530
</ div >
511
531
</ div >
512
532
) ;
@@ -575,7 +595,7 @@ function GroupMismatchRemove({
575
595
576
596
< div className = "mt-2 flex gap-2" >
577
597
< BackButton onBack = { onBack } />
578
- < EditRuleButton ruleId = { ruleId } />
598
+ < EditRuleButton ruleId = { ruleId } emailAccountId = { emailAccountId } />
579
599
</ div >
580
600
</ div >
581
601
) ;
@@ -629,18 +649,20 @@ function CategoryMismatch({
629
649
630
650
< div className = "mt-2 flex gap-2" >
631
651
< BackButton onBack = { onBack } />
632
- < EditRuleButton ruleId = { ruleId } />
652
+ < EditRuleButton ruleId = { ruleId } emailAccountId = { emailAccountId } />
633
653
</ div >
634
654
</ div >
635
655
) ;
636
656
}
637
657
638
658
// TODO: Could auto fix the static rule for the user
639
659
function StaticMismatch ( {
660
+ emailAccountId,
640
661
ruleId,
641
662
isExpectedStaticRule,
642
663
onBack,
643
664
} : {
665
+ emailAccountId : string ;
644
666
ruleId : string ;
645
667
isExpectedStaticRule : boolean ;
646
668
onBack : ( ) => void ;
@@ -656,7 +678,7 @@ function StaticMismatch({
656
678
</ SectionDescription >
657
679
< div className = "mt-2 flex gap-2" >
658
680
< BackButton onBack = { onBack } />
659
- < EditRuleButton ruleId = { ruleId } />
681
+ < EditRuleButton ruleId = { ruleId } emailAccountId = { emailAccountId } />
660
682
</ div >
661
683
</ div >
662
684
) ;
@@ -669,24 +691,35 @@ function ManualFixView({
669
691
result,
670
692
onBack,
671
693
isTest,
694
+ emailAccountId,
672
695
} : {
673
696
actualRule ?: Rule | null ;
674
697
expectedRule ?: Rule | null ;
675
698
message : ParsedMessage ;
676
699
result : RunRulesResult | null ;
677
700
onBack : ( ) => void ;
678
701
isTest : boolean ;
702
+ emailAccountId : string ;
679
703
} ) {
680
704
return (
681
705
< >
682
706
< >
683
- { result && < ProcessResultDisplay result = { result } prefix = "Matched: " /> }
707
+ { result && (
708
+ < ProcessResultDisplay
709
+ result = { result }
710
+ prefix = "Matched: "
711
+ emailAccountId = { emailAccountId }
712
+ />
713
+ ) }
684
714
{ actualRule && (
685
715
< >
686
716
{ isAIRule ( actualRule ) ? (
687
717
< RuleForm rule = { actualRule } />
688
718
) : (
689
- < EditRuleButton ruleId = { actualRule . id } />
719
+ < EditRuleButton
720
+ ruleId = { actualRule . id }
721
+ emailAccountId = { emailAccountId }
722
+ />
690
723
) }
691
724
< Separator />
692
725
</ >
@@ -698,7 +731,10 @@ function ManualFixView({
698
731
{ isAIRule ( expectedRule ) ? (
699
732
< RuleForm rule = { expectedRule } />
700
733
) : (
701
- < EditRuleButton ruleId = { expectedRule . id } />
734
+ < EditRuleButton
735
+ ruleId = { expectedRule . id }
736
+ emailAccountId = { emailAccountId }
737
+ />
702
738
) }
703
739
< Separator />
704
740
</ >
@@ -976,17 +1012,20 @@ function RerunButton({
976
1012
const [ result , setResult ] = useState < RunRulesResult > ( ) ;
977
1013
978
1014
const { emailAccountId } = useAccount ( ) ;
979
- const { execute, isExecuting } = useAction ( runRulesAction . bind ( null , emailAccountId ) , {
980
- onSuccess : ( result ) => {
981
- setResult ( result ?. data ) ;
982
- } ,
983
- onError : ( error ) => {
984
- toastError ( {
985
- title : "There was an error testing the email" ,
986
- description : error . error . serverError ?? "An error occurred" ,
987
- } ) ;
1015
+ const { execute, isExecuting } = useAction (
1016
+ runRulesAction . bind ( null , emailAccountId ) ,
1017
+ {
1018
+ onSuccess : ( result ) => {
1019
+ setResult ( result ?. data ) ;
1020
+ } ,
1021
+ onError : ( error ) => {
1022
+ toastError ( {
1023
+ title : "There was an error testing the email" ,
1024
+ description : error . error . serverError ?? "An error occurred" ,
1025
+ } ) ;
1026
+ } ,
988
1027
} ,
989
- } ) ;
1028
+ ) ;
990
1029
991
1030
return (
992
1031
< >
@@ -1007,7 +1046,10 @@ function RerunButton({
1007
1046
{ result && (
1008
1047
< div className = "mt-2 flex items-center gap-2" >
1009
1048
< SectionDescription > Result:</ SectionDescription >
1010
- < ProcessResultDisplay result = { result } />
1049
+ < ProcessResultDisplay
1050
+ result = { result }
1051
+ emailAccountId = { emailAccountId }
1052
+ />
1011
1053
</ div >
1012
1054
) }
1013
1055
</ >
@@ -1023,10 +1065,19 @@ function BackButton({ onBack }: { onBack: () => void }) {
1023
1065
) ;
1024
1066
}
1025
1067
1026
- function EditRuleButton ( { ruleId } : { ruleId : string } ) {
1068
+ function EditRuleButton ( {
1069
+ ruleId,
1070
+ emailAccountId,
1071
+ } : {
1072
+ ruleId : string ;
1073
+ emailAccountId : string ;
1074
+ } ) {
1027
1075
return (
1028
1076
< Button variant = "outline" size = "sm" asChild >
1029
- < Link href = { `/automation/rule/${ ruleId } ` } target = "_blank" >
1077
+ < Link
1078
+ href = { `${ emailAccountId } /automation/rule/${ ruleId } ` }
1079
+ target = "_blank"
1080
+ >
1030
1081
< ExternalLinkIcon className = "mr-2 size-4" />
1031
1082
Edit Rule
1032
1083
</ Link >
0 commit comments