Skip to content

Commit 14afa9b

Browse files
committed
fix broken links
1 parent 2d60d25 commit 14afa9b

File tree

12 files changed

+144
-63
lines changed

12 files changed

+144
-63
lines changed

apps/web/app/(app)/[emailAccountId]/automation/ProcessResultDisplay.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,11 @@ import { isAIRule } from "@/utils/condition";
1212
export function ProcessResultDisplay({
1313
result,
1414
prefix,
15+
emailAccountId,
1516
}: {
1617
result: RunRulesResult;
1718
prefix?: string;
19+
emailAccountId: string;
1820
}) {
1921
if (!result) return null;
2022

@@ -84,7 +86,7 @@ export function ProcessResultDisplay({
8486
<AlertTitle className="flex items-center justify-between">
8587
Matched rule "{result.rule.name}"
8688
<Link
87-
href={`/automation/rule/${result.rule.id}`}
89+
href={`${emailAccountId}/automation/rule/${result.rule.id}`}
8890
target="_blank"
8991
className="ml-1.5"
9092
>

apps/web/app/(app)/[emailAccountId]/automation/ProcessRules.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,7 @@ export function ProcessRulesContent({ testMode }: { testMode: boolean }) {
222222
result={results[message.id]}
223223
onRun={(rerun) => onRun(message, rerun)}
224224
testMode={testMode}
225+
emailAccountId={emailAccountId}
225226
/>
226227
))}
227228
</TableBody>
@@ -252,13 +253,15 @@ function ProcessRulesRow({
252253
result,
253254
onRun,
254255
testMode,
256+
emailAccountId,
255257
}: {
256258
message: Message;
257259
userEmail: string;
258260
isRunning: boolean;
259261
result: RunRulesResult;
260262
onRun: (rerun?: boolean) => void;
261263
testMode: boolean;
264+
emailAccountId: string;
262265
}) {
263266
return (
264267
<TableRow
@@ -284,7 +287,10 @@ function ProcessRulesRow({
284287
{result.existing && (
285288
<Badge color="yellow">Already processed</Badge>
286289
)}
287-
<ProcessResultDisplay result={result} />
290+
<ProcessResultDisplay
291+
result={result}
292+
emailAccountId={emailAccountId}
293+
/>
288294
</div>
289295
<ReportMistake
290296
result={result}

apps/web/app/(app)/[emailAccountId]/automation/ReportMistake.tsx

Lines changed: 74 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,7 @@ function Content({
220220
return (
221221
<RuleMismatch
222222
result={result}
223+
emailAccountId={emailAccountId}
223224
onSelectExpectedRuleId={onSelectExpectedRule}
224225
rules={rules}
225226
/>
@@ -234,6 +235,7 @@ function Content({
234235
return (
235236
<ThreadSettingsMismatchMessage
236237
expectedRuleId={expectedRule.id}
238+
emailAccountId={emailAccountId}
237239
onBack={onBack}
238240
/>
239241
);
@@ -273,6 +275,7 @@ function Content({
273275
if (isExpectedStaticRule || isActualStaticRule) {
274276
return (
275277
<StaticMismatch
278+
emailAccountId={emailAccountId}
276279
ruleId={expectedRule?.id || actualRule?.id!}
277280
isExpectedStaticRule={isExpectedStaticRule}
278281
onBack={onBack}
@@ -298,6 +301,7 @@ function Content({
298301
if (view === "ai-fix") {
299302
return (
300303
<AIFixView
304+
emailAccountId={emailAccountId}
301305
loadingAiFix={isExecuting}
302306
fixedInstructions={fixedInstructions ?? null}
303307
fixedInstructionsRule={fixedInstructionsRule ?? null}
@@ -318,6 +322,7 @@ function Content({
318322
result={result}
319323
isTest={isTest}
320324
onBack={onBack}
325+
emailAccountId={emailAccountId}
321326
/>
322327
);
323328
}
@@ -327,6 +332,7 @@ function Content({
327332
}
328333

329334
function AIFixView({
335+
emailAccountId,
330336
loadingAiFix,
331337
fixedInstructions,
332338
fixedInstructionsRule,
@@ -335,6 +341,7 @@ function AIFixView({
335341
onBack,
336342
onReject,
337343
}: {
344+
emailAccountId: string;
338345
loadingAiFix: boolean;
339346
fixedInstructions: {
340347
ruleId: string;
@@ -359,7 +366,10 @@ function AIFixView({
359366
<div className="space-y-2">
360367
{fixedInstructionsRule?.instructions ? (
361368
<div className="space-y-2">
362-
<ProcessResultDisplay result={{ rule: fixedInstructionsRule }} />
369+
<ProcessResultDisplay
370+
result={{ rule: fixedInstructionsRule }}
371+
emailAccountId={emailAccountId}
372+
/>
363373
<Instructions
364374
label="Original:"
365375
instructions={fixedInstructionsRule?.instructions}
@@ -388,18 +398,23 @@ function AIFixView({
388398
function RuleMismatch({
389399
result,
390400
rules,
401+
emailAccountId,
391402
onSelectExpectedRuleId,
392403
}: {
393404
result: RunRulesResult | null;
394405
rules: RulesResponse;
406+
emailAccountId: string;
395407
onSelectExpectedRuleId: (ruleId: string | null) => void;
396408
}) {
397409
return (
398410
<div>
399411
<Label name="matchedRule" label="Matched:" />
400412
<div className="mt-1">
401413
{result ? (
402-
<ProcessResultDisplay result={result} />
414+
<ProcessResultDisplay
415+
result={result}
416+
emailAccountId={emailAccountId}
417+
/>
403418
) : (
404419
<p>No rule matched</p>
405420
)}
@@ -420,9 +435,11 @@ function RuleMismatch({
420435

421436
function ThreadSettingsMismatchMessage({
422437
expectedRuleId,
438+
emailAccountId,
423439
onBack,
424440
}: {
425441
expectedRuleId: string;
442+
emailAccountId: string;
426443
onBack: () => void;
427444
}) {
428445
return (
@@ -433,7 +450,10 @@ function ThreadSettingsMismatchMessage({
433450
</SectionDescription>
434451
<div className="mt-2 flex gap-2">
435452
<BackButton onBack={onBack} />
436-
<EditRuleButton ruleId={expectedRuleId} />
453+
<EditRuleButton
454+
ruleId={expectedRuleId}
455+
emailAccountId={emailAccountId}
456+
/>
437457
</div>
438458
</div>
439459
);
@@ -506,7 +526,7 @@ function GroupMismatchAdd({
506526

507527
<div className="mt-2 flex gap-2">
508528
<BackButton onBack={onBack} />
509-
<EditRuleButton ruleId={ruleId} />
529+
<EditRuleButton ruleId={ruleId} emailAccountId={emailAccountId} />
510530
</div>
511531
</div>
512532
);
@@ -575,7 +595,7 @@ function GroupMismatchRemove({
575595

576596
<div className="mt-2 flex gap-2">
577597
<BackButton onBack={onBack} />
578-
<EditRuleButton ruleId={ruleId} />
598+
<EditRuleButton ruleId={ruleId} emailAccountId={emailAccountId} />
579599
</div>
580600
</div>
581601
);
@@ -629,18 +649,20 @@ function CategoryMismatch({
629649

630650
<div className="mt-2 flex gap-2">
631651
<BackButton onBack={onBack} />
632-
<EditRuleButton ruleId={ruleId} />
652+
<EditRuleButton ruleId={ruleId} emailAccountId={emailAccountId} />
633653
</div>
634654
</div>
635655
);
636656
}
637657

638658
// TODO: Could auto fix the static rule for the user
639659
function StaticMismatch({
660+
emailAccountId,
640661
ruleId,
641662
isExpectedStaticRule,
642663
onBack,
643664
}: {
665+
emailAccountId: string;
644666
ruleId: string;
645667
isExpectedStaticRule: boolean;
646668
onBack: () => void;
@@ -656,7 +678,7 @@ function StaticMismatch({
656678
</SectionDescription>
657679
<div className="mt-2 flex gap-2">
658680
<BackButton onBack={onBack} />
659-
<EditRuleButton ruleId={ruleId} />
681+
<EditRuleButton ruleId={ruleId} emailAccountId={emailAccountId} />
660682
</div>
661683
</div>
662684
);
@@ -669,24 +691,35 @@ function ManualFixView({
669691
result,
670692
onBack,
671693
isTest,
694+
emailAccountId,
672695
}: {
673696
actualRule?: Rule | null;
674697
expectedRule?: Rule | null;
675698
message: ParsedMessage;
676699
result: RunRulesResult | null;
677700
onBack: () => void;
678701
isTest: boolean;
702+
emailAccountId: string;
679703
}) {
680704
return (
681705
<>
682706
<>
683-
{result && <ProcessResultDisplay result={result} prefix="Matched: " />}
707+
{result && (
708+
<ProcessResultDisplay
709+
result={result}
710+
prefix="Matched: "
711+
emailAccountId={emailAccountId}
712+
/>
713+
)}
684714
{actualRule && (
685715
<>
686716
{isAIRule(actualRule) ? (
687717
<RuleForm rule={actualRule} />
688718
) : (
689-
<EditRuleButton ruleId={actualRule.id} />
719+
<EditRuleButton
720+
ruleId={actualRule.id}
721+
emailAccountId={emailAccountId}
722+
/>
690723
)}
691724
<Separator />
692725
</>
@@ -698,7 +731,10 @@ function ManualFixView({
698731
{isAIRule(expectedRule) ? (
699732
<RuleForm rule={expectedRule} />
700733
) : (
701-
<EditRuleButton ruleId={expectedRule.id} />
734+
<EditRuleButton
735+
ruleId={expectedRule.id}
736+
emailAccountId={emailAccountId}
737+
/>
702738
)}
703739
<Separator />
704740
</>
@@ -976,17 +1012,20 @@ function RerunButton({
9761012
const [result, setResult] = useState<RunRulesResult>();
9771013

9781014
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+
},
9881027
},
989-
});
1028+
);
9901029

9911030
return (
9921031
<>
@@ -1007,7 +1046,10 @@ function RerunButton({
10071046
{result && (
10081047
<div className="mt-2 flex items-center gap-2">
10091048
<SectionDescription>Result:</SectionDescription>
1010-
<ProcessResultDisplay result={result} />
1049+
<ProcessResultDisplay
1050+
result={result}
1051+
emailAccountId={emailAccountId}
1052+
/>
10111053
</div>
10121054
)}
10131055
</>
@@ -1023,10 +1065,19 @@ function BackButton({ onBack }: { onBack: () => void }) {
10231065
);
10241066
}
10251067

1026-
function EditRuleButton({ ruleId }: { ruleId: string }) {
1068+
function EditRuleButton({
1069+
ruleId,
1070+
emailAccountId,
1071+
}: {
1072+
ruleId: string;
1073+
emailAccountId: string;
1074+
}) {
10271075
return (
10281076
<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+
>
10301081
<ExternalLinkIcon className="mr-2 size-4" />
10311082
Edit Rule
10321083
</Link>

apps/web/app/(app)/[emailAccountId]/automation/RuleForm.tsx

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -737,22 +737,9 @@ export function RuleForm({ rule }: { rule: CreateRuleBody & { id?: string } }) {
737737

738738
<div className="flex justify-end space-x-2 py-6">
739739
{rule.id ? (
740-
<>
741-
{/* {!isAIRule(rule) && (
742-
<Button variant="outline" asChild>
743-
<Link href={`/automation/rule/${rule.id}/examples`}>
744-
View Examples
745-
</Link>
746-
</Button>
747-
)} */}
748-
<Button
749-
type="submit"
750-
disabled={isSubmitting}
751-
loading={isSubmitting}
752-
>
753-
Save
754-
</Button>
755-
</>
740+
<Button type="submit" disabled={isSubmitting} loading={isSubmitting}>
741+
Save
742+
</Button>
756743
) : (
757744
<Button type="submit" disabled={isSubmitting} loading={isSubmitting}>
758745
Create

apps/web/app/(app)/[emailAccountId]/automation/Rules.tsx

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,10 @@ export function Rules() {
9595
className={!rule.enabled ? "bg-muted opacity-60" : ""}
9696
>
9797
<TableCell className="font-medium">
98-
<Link href={`/automation/rule/${rule.id}`}>
98+
<Link
99+
href={`${emailAccountId}/automation/rule/${rule.id}`}
100+
className="flex items-center gap-2"
101+
>
99102
{!rule.enabled && (
100103
<Badge color="red" className="mr-2">
101104
Disabled
@@ -104,7 +107,10 @@ export function Rules() {
104107
{rule.name}
105108
{!rule.automate && (
106109
<Tooltip content="Actions for matched emails will require manual approval in the 'Pending' tab.">
107-
<Badge color="yellow" className="ml-2">
110+
<Badge
111+
color="yellow"
112+
className="ml-auto text-nowrap"
113+
>
108114
Requires Approval
109115
</Badge>
110116
</Tooltip>
@@ -152,7 +158,9 @@ export function Rules() {
152158
</DropdownMenuTrigger>
153159
<DropdownMenuContent align="end">
154160
<DropdownMenuItem asChild>
155-
<Link href={`/automation/rule/${rule.id}`}>
161+
<Link
162+
href={`${emailAccountId}/automation/rule/${rule.id}`}
163+
>
156164
Edit
157165
</Link>
158166
</DropdownMenuItem>

0 commit comments

Comments
 (0)