chore: Add error toasts in remaining mutations to handle errors better.#2251
chore: Add error toasts in remaining mutations to handle errors better.#2251chronark merged 4 commits intounkeyed:mainfrom
Conversation
|
|
@harshsbhat is attempting to deploy a commit to the Unkey Team on Vercel. A member of the Team first needs to authorize it. |
|
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
📝 Walkthrough📝 Walkthrough📝 WalkthroughWalkthroughThe changes in this pull request implement an error handling mechanism across various components related to permissions and roles. Each mutation now includes an Changes
Assessment against linked issues
Possibly related PRs
Suggested reviewers
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
|
Thank you for following the naming conventions for pull request titles! 🙏 |
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Outside diff range and nitpick comments (21)
apps/dashboard/components/opt-in.tsx (1)
38-40: LGTM! Error handling improvement implemented.The addition of the
onErrorcallback withtoast.errorsuccessfully addresses the PR objective of improving error handling for mutations. This change enhances user experience by providing feedback when the opt-in action fails.Consider the following potential improvements:
Error message sanitization: It might be beneficial to sanitize or format the error message before displaying it to the user. This can help ensure that sensitive information is not exposed and that the message is user-friendly.
Error logging: Consider adding error logging for debugging purposes. This can help with troubleshooting issues in production.
Example implementation:
onError(err) { console.error('Opt-in error:', err); const userFriendlyMessage = sanitizeErrorMessage(err.message); toast.error(userFriendlyMessage); },Where
sanitizeErrorMessageis a function that formats the error message appropriately for user display.apps/dashboard/lib/trpc/routers/rbac/deleteRole.ts (1)
71-77: Approve changes with a minor suggestionThe added error handling for
insertAuditLogsimproves the robustness of thedeleteRolemutation. The error message is user-friendly and consistent with other error messages in the file.However, to improve debugging, consider including the error details in the console log:
- console.error(err); + console.error("Error inserting audit logs:", err);This change will make it easier to identify the source of the error in the logs.
apps/dashboard/app/(app)/settings/general/update-workspace-name.tsx (1)
48-50: Approve changes with a minor suggestion for consistency.The addition of error handling for the
updateNamemutation is a good improvement. It aligns well with the PR objectives and enhances the user experience by providing feedback for failed operations.For consistency with the success message, consider using a more specific error message:
onError(err) { - toast.error(err.message); + toast.error(`Failed to update workspace name: ${err.message}`); },This change would provide more context to the user about which operation failed.
apps/dashboard/app/(app)/ratelimits/[namespaceId]/settings/update-namespace-name.tsx (1)
50-52: Approve changes with a minor suggestion for consistency.The added error handling is well-implemented and addresses the PR objective of adding error toasts to mutations. It improves the user experience by providing feedback when the namespace update fails.
For consistency with the success message, consider using a more specific error message:
onError(err) { - toast.error(err.message); + toast.error(`Failed to rename namespace: ${err.message}`); },This change would provide more context to the user about which operation failed.
apps/dashboard/lib/trpc/routers/ratelimit/updateNamespaceName.ts (1)
84-89: Improved error handling, but consider transaction consistencyThe addition of error handling for
insertAuditLogsis a good improvement. It prevents unhandled promise rejections and provides a consistent error response to the client. However, there are two points to consider:
The error message is generic and doesn't indicate that the audit log insertion failed. Consider making it more specific to help with debugging.
If the audit log insertion fails, the transaction might be left in an inconsistent state because the namespace name has already been updated. Consider rolling back the transaction in this case.
Here's a suggested improvement:
await tx .update(schema.ratelimitNamespaces) .set({ name: input.name, }) .where(eq(schema.ratelimitNamespaces.id, input.namespaceId)) .catch((_err) => { throw new TRPCError({ message: "We are unable to update the namespace name. Please contact support using support@unkey.dev", code: "INTERNAL_SERVER_ERROR", }); }); await insertAuditLogs(tx, { workspaceId: ws.id, actor: { type: "user", id: ctx.user.id, }, event: "ratelimitNamespace.update", description: `Changed ${namespace.id} name from ${namespace.name} to ${input.name}`, resources: [ { type: "ratelimitNamespace", id: namespace.id, }, ], context: { location: ctx.audit.location, userAgent: ctx.audit.userAgent, }, }).catch((_err) => { + // Rollback the transaction + await tx.rollback(); throw new TRPCError({ message: - "We are unable to update the namespace name. Please contact support using support@unkey.dev", + "We updated the namespace name but failed to log the action. Please contact support using support@unkey.dev", code: "INTERNAL_SERVER_ERROR", }); });This change ensures that the transaction is rolled back if the audit log insertion fails, maintaining data consistency. It also provides a more specific error message to aid in troubleshooting.
apps/dashboard/lib/trpc/routers/ratelimit/updateOverride.ts (1)
92-97: Approve with suggestions: Enhance error handling for audit loggingThe addition of error handling for
insertAuditLogsis a good improvement to the function's robustness. However, there are a couple of suggestions to enhance it further:
Make the error message consistent with other error messages in the function by adding a period at the end:
message: "We are unable to update the override. Please contact support using support@unkey.dev."Consider implementing more specific error handling for audit logging failures. This could involve:
- Logging the specific error for debugging purposes.
- Potentially using a different error code or message to distinguish audit logging failures from other types of errors.
apps/dashboard/app/(app)/ratelimits/create-namespace-button.tsx (1)
41-43: Approve changes with a minor suggestion for consistency.The addition of error handling for the
createmutation is a good improvement. It aligns well with the PR objectives to enhance user feedback.For consistency with the success message, consider updating the error message to be more specific:
onError(err) { - toast.error(err.message); + toast.error(`Failed to create namespace: ${err.message}`); },This change would provide more context to the user about which operation failed.
apps/dashboard/app/(app)/authorization/permissions/[permissionId]/client.tsx (1)
52-54: Approve the addition of error handling with a suggestion for improvement.The addition of the
onErrorcallback effectively addresses the PR objective by providing user feedback for failed permission updates. This improvement aligns well with the goals outlined in issue #2225.Consider enhancing the error handling by adding more specific error messages or handling different error scenarios. For example:
onError(err) { const errorMessage = err instanceof Error ? err.message : 'An unexpected error occurred'; toast.error(`Failed to update permission: ${errorMessage}`); },This approach provides a more informative error message and handles cases where
errmight not be an instance ofError.apps/dashboard/lib/trpc/routers/ratelimit/deleteNamespace.ts (2)
112-118: Improved error handling, but consider refining the error message.The addition of error handling for the
insertAuditLogscall is a good improvement, aligning with the PR objectives of enhancing error feedback. However, there's a small inconsistency in the error message.Consider updating the error message to refer to a single namespace:
- "We are unable to delete the namespaces. Please contact support using support@unkey.dev", + "We are unable to delete the namespace. Please contact support using support@unkey.dev",This change would make the message more consistent with the function's purpose of deleting a single namespace.
112-118: Overall improvement in error handling and user feedback.The changes successfully address the PR objectives by adding error handling to the
deleteNamespacemutation. This enhancement provides better feedback to users when errors occur during the namespace deletion process. The use of a transaction ensures data consistency across related operations.For consistency across the codebase, consider extracting the error message and support email into constants or a configuration file. This would make it easier to maintain and update these messages across multiple files if needed in the future.
Example:
import { ERROR_MESSAGES, SUPPORT_EMAIL } from '@/constants'; // ... throw new TRPCError({ code: "INTERNAL_SERVER_ERROR", message: `${ERROR_MESSAGES.NAMESPACE_DELETION_FAILED} ${SUPPORT_EMAIL}`, });This approach would improve maintainability and ensure consistency in error messages across the application.
apps/dashboard/app/(app)/authorization/roles/[roleId]/delete-role.tsx (1)
63-65: Approve changes with a minor suggestion for consistency.The addition of the
onErrorcallback improves the user experience by providing feedback when the role deletion fails. This change aligns well with the PR objectives and enhances the overall error handling of the component.For consistency with the existing code, consider using a more specific error message:
onError(err) { - toast.error(err.message); + toast.error(`Failed to delete role: ${err.message}`); },This change would make the error toast consistent with the success toast, which uses a specific message "Role deleted successfully".
apps/dashboard/app/(app)/authorization/permissions/[permissionId]/delete-permission.tsx (1)
62-64: Approve changes with a minor suggestion for consistency.The addition of error handling for the
deletePermissionmutation is a good improvement. It aligns well with the PR objectives and addresses the issue of providing user feedback for failed operations.For consistency with the success message, consider using a more specific error message:
onError(err) { - toast.error(err.message); + toast.error(`Failed to delete permission: ${err.message}`); }This change would provide more context to the user about which operation failed.
apps/dashboard/app/(app)/authorization/permissions/create-new-permission.tsx (1)
70-72: Approve changes with minor suggestions for improvementThe addition of the
onErrorcallback effectively addresses the PR objective of improving error handling for thecreatePermissionmutation. This change enhances the user experience by providing feedback when permission creation fails.Consider the following minor improvements:
- Add a type annotation for the
errparameter to enhance type safety.- Consider implementing a more user-friendly error message handling, possibly by wrapping
err.messagein a function that can sanitize or translate error messages for end-users.Here's a suggested improvement:
onError(err: Error) { const userFriendlyMessage = getUserFriendlyErrorMessage(err.message); toast.error(userFriendlyMessage); },Where
getUserFriendlyErrorMessageis a function you would implement to handle error message translation or sanitization.apps/dashboard/app/(app)/authorization/roles/[roleId]/update-role.tsx (2)
65-67: LGTM! Error handling added as per PR objectives.The addition of the
onErrorcallback with toast notification successfully implements the required error handling for theupdateRolemutation. This change aligns well with the PR objectives and enhances user feedback.Consider implementing more granular error handling for specific error types. This could provide more user-friendly messages or handle certain errors differently. For example:
onError(err) { if (err instanceof TRPCClientError) { toast.error(`Failed to update role: ${err.message}`); } else { toast.error("An unexpected error occurred while updating the role. Please try again."); } },This approach allows for more specific error messages and potentially different handling based on the error type.
Line range hint
1-150: Enhance user feedback during form submissionThe component implementation is solid, with good use of form validation and error handling. To further improve user experience, consider adding visual feedback when the form is submitting.
Add a disabled state to the form fields when submitting. This provides clear visual feedback that an action is in progress. Here's an example of how you could implement this:
- Add a new state variable:
const [isSubmitting, setIsSubmitting] = useState(false);
- Update the
onSubmitfunction:async function onSubmit(values: z.infer<typeof formSchema>) { setIsSubmitting(true); try { await updateRole.mutateAsync({ id: role.id, name: values.name, description: values.description ?? null, }); } finally { setIsSubmitting(false); } }
- Add the
disabledprop to form fields:<Input {...field} disabled={isSubmitting} className="dark:focus:border-gray-700" />
- Update the submit button:
<Button type="submit" disabled={isSubmitting}> {isSubmitting ? <Loading className="w-4 h-4" /> : "Save"} </Button>These changes will provide clearer visual feedback to users during the form submission process.
apps/dashboard/app/(app)/ratelimits/[namespaceId]/settings/delete-namespace.tsx (2)
68-70: LGTM! Consider adding a more descriptive error message.The addition of the
onErrorcallback withtoast.erroraligns well with the PR objectives and improves the user experience by providing feedback on failed operations. Good job!Consider prefixing the error message with a descriptive text to provide more context to the user. For example:
onError(err) { toast.error(`Failed to delete namespace: ${err.message}`); },This change would make the error message more informative and user-friendly.
Line range hint
79-81: Consider enhancing error handling in theonSubmitfunction.While the added
onErrorcallback in the mutation handles error display, it might be beneficial to add more robust error handling directly in theonSubmitfunction. This could include resetting the form state or providing additional user feedback for critical operations like deletion.Consider updating the
onSubmitfunction to handle errors more explicitly:async function onSubmit(_values: z.infer<typeof formSchema>) { try { await deleteNamespace.mutateAsync({ namespaceId: namespace.id }); // Success handling (if needed) } catch (error) { // Error handling (if needed beyond the toast) console.error('Failed to delete namespace:', error); // Optionally reset form or update UI state } }This approach allows for more fine-grained control over error handling and provides an opportunity to perform additional actions if needed.
apps/dashboard/app/(app)/ratelimits/[namespaceId]/overrides/[overrideId]/settings.tsx (3)
82-84: LGTM! Consider enhancing error handling.The addition of the
onErrorcallback with a toast notification aligns well with the PR objectives and improves user feedback. Good job!Consider enhancing the error handling by categorizing different types of errors and providing more specific messages. For example:
onError(err) { if (err instanceof TRPCClientError) { toast.error("Failed to update rate limit", { description: err.message, }); } else { toast.error("An unexpected error occurred", { description: "Please try again later", }); } },This approach would provide more context to the user and handle unexpected errors gracefully.
Line range hint
86-92: Add error handling todeleteOverridemutationFor consistency with the
updatemutation and to improve user feedback, consider adding error handling to thedeleteOverridemutation.Here's a suggested implementation:
const deleteOverride = trpc.ratelimit.override.delete.useMutation({ onSuccess() { toast.success("Override has been deleted", { description: "Changes may take up to 60s to propagate globally", }); router.push("/ratelimits/"); }, onError(err) { toast.error("Failed to delete override", { description: err.message, }); }, });
Line range hint
79-92: Consider consistent navigation approachThe component uses
router.refresh()after a successful update androuter.push()after a successful delete. Consider using a consistent approach for better user experience and easier maintenance.You might want to use
router.push()for both cases if you want to navigate away from the current page, orrouter.refresh()if you want to stay on the same page and just refresh the data. For example:onSuccess() { toast.success("Limits have been updated", { description: "Changes may take up to 60s to propagate globally", }); router.push("/ratelimits/"); // or router.refresh() if you want to stay on the same page },Apply the same approach to both
updateanddeleteOverridemutations.apps/dashboard/app/(app)/ratelimits/[namespaceId]/overrides/create-new-override.tsx (1)
66-68: Approved: Error handling added as per PR objectives.The addition of the
onErrorcallback with toast notification improves user feedback, which aligns well with the PR objectives. This change enhances the user experience by providing clear error notifications.Consider wrapping the error message in a user-friendly format or using predefined error messages for common errors. This could improve readability for end-users. For example:
onError(err) { const userFriendlyMessage = getUserFriendlyErrorMessage(err.message); toast.error("Failed to create override", { description: userFriendlyMessage, }); },Where
getUserFriendlyErrorMessageis a function that maps known error messages to more user-friendly versions.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
📒 Files selected for processing (16)
- apps/dashboard/app/(app)/authorization/permissions/[permissionId]/client.tsx (1 hunks)
- apps/dashboard/app/(app)/authorization/permissions/[permissionId]/delete-permission.tsx (1 hunks)
- apps/dashboard/app/(app)/authorization/permissions/create-new-permission.tsx (1 hunks)
- apps/dashboard/app/(app)/authorization/roles/[roleId]/delete-role.tsx (1 hunks)
- apps/dashboard/app/(app)/authorization/roles/[roleId]/update-role.tsx (1 hunks)
- apps/dashboard/app/(app)/ratelimits/[namespaceId]/overrides/[overrideId]/settings.tsx (1 hunks)
- apps/dashboard/app/(app)/ratelimits/[namespaceId]/overrides/create-new-override.tsx (1 hunks)
- apps/dashboard/app/(app)/ratelimits/[namespaceId]/settings/delete-namespace.tsx (1 hunks)
- apps/dashboard/app/(app)/ratelimits/[namespaceId]/settings/update-namespace-name.tsx (1 hunks)
- apps/dashboard/app/(app)/ratelimits/create-namespace-button.tsx (1 hunks)
- apps/dashboard/app/(app)/settings/general/update-workspace-name.tsx (1 hunks)
- apps/dashboard/components/opt-in.tsx (1 hunks)
- apps/dashboard/lib/trpc/routers/ratelimit/deleteNamespace.ts (1 hunks)
- apps/dashboard/lib/trpc/routers/ratelimit/updateNamespaceName.ts (1 hunks)
- apps/dashboard/lib/trpc/routers/ratelimit/updateOverride.ts (1 hunks)
- apps/dashboard/lib/trpc/routers/rbac/deleteRole.ts (1 hunks)
🧰 Additional context used
🔇 Additional comments (9)
apps/dashboard/lib/trpc/routers/rbac/deleteRole.ts (1)
71-77: Verify toast implementation for this errorWhile the error handling has been improved in this file, it's important to ensure that this error is properly caught and displayed as a toast to the user, as per the PR objectives.
To verify the toast implementation, you can run the following script:
This script will search for any frontend code that handles errors from the
deleteRolemutation and displays them as toasts. If no results are found, you may need to implement the toast display for this error.apps/dashboard/app/(app)/settings/general/update-workspace-name.tsx (1)
Line range hint
1-93: Verify the overall impact of the changes.The addition of error handling to the
updateNamemutation is a focused and minimal change that enhances the component's functionality without introducing risks to the existing code. It completes the feedback loop for the user by handling both success and error cases.To ensure that this change doesn't conflict with any other recent modifications and that error handling is consistently applied across similar components, please run the following verification script:
This script will help us ensure that:
- There are no conflicting recent changes to this file.
- Error handling is consistently implemented across similar mutation components.
✅ Verification successful
Error Handling Consistently Applied Across Mutation Components
The recent addition of error handling to the
updateNamemutation inupdate-workspace-name.tsxis consistent with similar implementations across other mutation components. There are no conflicting recent changes to this file.🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify error handling consistency across mutation components # Test 1: Check for other recent changes to this file git log -n 5 --pretty=format:"%h - %s" -- apps/dashboard/app/\(app\)/settings/general/update-workspace-name.tsx # Test 2: Search for similar mutation components and check their error handling rg --type typescript -g '**/*.tsx' 'trpc\..+\.useMutation' -A 10 -B 5Length of output: 618
Script:
#!/bin/bash # Description: Verify error handling consistency across mutation components # Test 1: Check for other recent changes to this file git log -n 5 --pretty=format:"%h - %s" -- apps/dashboard/app/\(app\)/settings/general/update-workspace-name.tsx # Test 2: Search for similar mutation components and check their error handling rg --type tsx -g '**/*.tsx' 'trpc\..+\.useMutation' -A 10 -B 5Length of output: 611
Script:
#!/bin/bash # Description: Verify error handling consistency across mutation components # Test 1: Check for other recent changes to this file git log -n 5 --pretty=format:"%h - %s" -- apps/dashboard/app/(app)/settings/general/update-workspace-name.tsx # Test 2: Search for similar mutation components and check their error handling rg -g '**/*.tsx' 'trpc\..+\.useMutation' -A 10 -B 5Length of output: 246
Script:
#!/bin/bash # Description: Verify error handling consistency across mutation components # Test 1: Check for other recent changes to this file git log -n 5 --pretty=format:"%h - %s" -- 'apps/dashboard/app/(app)/settings/general/update-workspace-name.tsx' # Test 2: Search for similar mutation components and check their error handling rg -g '**/*.tsx' 'trpc\..+\.useMutation' -A 10 -B 5Length of output: 86093
Script:
#!/bin/bash # Description: Verify error handling consistency across mutation components # Test 1: Check for other recent changes to this file git log -n 5 --pretty=format:"%h - %s" -- 'apps/dashboard/app/(app)/settings/general/update-workspace-name.tsx' # Test 2: Search for similar mutation components and check their error handling rg -g '**/*.tsx' 'trpc\..+\.useMutation' -A 10 -B 5Length of output: 86093
apps/dashboard/lib/trpc/routers/ratelimit/updateOverride.ts (1)
Line range hint
1-97: Overall assessment: Improved error handling aligns with PR objectivesThe changes made to this file successfully implement error handling for the audit logging process, which aligns with the PR's objective of enhancing error handling across various mutations. This improvement ensures that users will be notified of any issues that occur during the rate limit override update process, including potential failures in audit logging.
The implementation is consistent with the existing error handling patterns in the file, maintaining code consistency. These changes contribute to a better user experience by providing more comprehensive error feedback.
apps/dashboard/app/(app)/ratelimits/create-namespace-button.tsx (1)
41-43: Verify the impact of error handling implementation.The addition of error handling to the
createmutation successfully addresses the objectives outlined in the PR and issue #2225. It enhances the user experience by providing feedback when namespace creation fails.To ensure comprehensive error handling across the application, we should verify that similar changes have been made to other mutations mentioned in the PR objectives.
Let's verify the implementation of error handling in other mutations:
apps/dashboard/app/(app)/authorization/permissions/[permissionId]/delete-permission.tsx (1)
Line range hint
1-138: Overall impact assessment: Positive improvement with minimal risk.The addition of error handling to the
deletePermissionmutation enhances the component's robustness without introducing significant changes to its structure or dependencies. This improvement aligns well with the PR objectives and contributes to a better user experience by providing clear feedback on operation failures.The localized nature of the changes minimizes the risk of unintended side effects on the component's overall functionality.
apps/dashboard/app/(app)/authorization/roles/[roleId]/update-role.tsx (1)
Line range hint
1-150: Summary of reviewThe changes successfully implement error handling for the
updateRolemutation, meeting the PR objectives. The component's overall structure and implementation are solid, with good use of form validation and UI components. Suggestions for further improvements include more granular error handling and enhanced user feedback during form submission. These changes contribute positively to the user experience by providing better error feedback.apps/dashboard/app/(app)/ratelimits/[namespaceId]/settings/delete-namespace.tsx (1)
Line range hint
1-156: Overall, the changes effectively implement error handling as per PR objectives.The addition of the
onErrorcallback to thedeleteNamespacemutation successfully implements error toast notifications, aligning with the PR objectives. The changes improve user feedback for failed operations, enhancing the overall user experience.While the implementation is solid, consider the suggested improvements:
- Adding more context to the error message in the toast notification.
- Enhancing error handling in the
onSubmitfunction for more robust error management.These suggestions are not critical but could further improve the code quality and user experience.
apps/dashboard/app/(app)/ratelimits/[namespaceId]/overrides/[overrideId]/settings.tsx (1)
Line range hint
1-184: Summary of reviewThe changes successfully implement error handling for the
updatemutation, which aligns with the PR objectives. The implementation improves user feedback and enhances the overall user experience.Some suggestions for further improvement include:
- Enhancing the error handling to provide more specific error messages.
- Adding similar error handling to the
deleteOverridemutation for consistency.- Adopting a consistent navigation approach after successful mutations.
Overall, this is a valuable improvement to the codebase. Great work on enhancing the error handling!
apps/dashboard/app/(app)/ratelimits/[namespaceId]/overrides/create-new-override.tsx (1)
Line range hint
1-168: Overall impact: Improved error handling without affecting existing functionality.The changes in this file successfully implement error handling for the
CreateNewOverridecomponent as per the PR objectives. The addition of theonErrorcallback enhances user experience by providing feedback when the creation of a new rate limit override fails.Key points:
- The changes are minimal and focused, reducing the risk of introducing new issues.
- The existing functionality of the component remains intact.
- The implementation aligns well with the requirements outlined in the linked issue #2225.
To ensure that these changes don't conflict with any other parts of the codebase, let's verify the usage of the
trpc.ratelimit.override.createmutation:This will help us confirm that the error handling has been consistently applied across the codebase.
✅ Verification successful
Usage Verification Complete: No other instances of
trpc.ratelimit.override.createfound.The error handling implemented in
create-new-override.tsxis isolated to this component and does not impact other parts of the codebase. This ensures that the changes are safe and confined to their intended scope.🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Search for other usages of the ratelimit.override.create mutation rg "trpc\.ratelimit\.override\.create" --type typescriptLength of output: 93
Script:
#!/bin/bash # Search for other usages of the ratelimit.override.create mutation with corrected file type rg "trpc\.ratelimit\.override\.create" --type typescriptreactLength of output: 103
Script:
#!/bin/bash # Search for other usages of the ratelimit.override.create mutation in .ts and .tsx files rg "trpc\.ratelimit\.override\.create" --glob "*.ts" --glob "*.tsx"Length of output: 215
|
Awarding harshsbhat: 150 points 🕹️ Well done! Check out your new contribution on oss.gg/harshsbhat |
What does this PR do?
Fixes #2225
Add
toast.errorfor the remaining mutations. So that incase of failures users get a better error message through toast.Type of change
How should this be tested?
toast.error.Checklist
Required
pnpm buildpnpm fmtconsole.logsgit pull origin mainAppreciated
Summary by CodeRabbit
New Features
Bug Fixes