Skip to content

Commit add8eda

Browse files
authored
Merge pull request #114 from brownstein/brownstein/113
fix: Reduce the use of any types in toast methods
2 parents 9430c49 + 08e94d1 commit add8eda

File tree

2 files changed

+47
-26
lines changed

2 files changed

+47
-26
lines changed

src/components/toast.ts

Lines changed: 45 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -6,35 +6,54 @@ import {
66
resumeToastTimer,
77
removeAllToast,
88
getRemainingTimeForToast,
9+
Toast,
910
} from './toast-store';
11+
import { ToastProps } from './types';
1012

1113
export const toast = Object.assign(
12-
(message: React.ReactNode, options?: Partial<any>) => {
13-
return addToast({ ...options, message, type: 'custom' }); // Default to custom toast
14+
(
15+
message: React.ReactNode,
16+
options?: Partial<Omit<ToastProps, 'message'>>
17+
) => {
18+
return addToast({ ...options, message, type: 'custom' }); // Default to custom toast
1419
},
1520
{
16-
success: (message: React.ReactNode, options?: Partial<any>) =>
17-
addToast({ ...options, message, type: 'success' }),
18-
error: (message: React.ReactNode, options?: Partial<any>) =>
19-
addToast({ ...options, message, type: 'error' }),
20-
info: (message: React.ReactNode, options?: Partial<any>) =>
21-
addToast({ ...options, message, type: 'info' }),
22-
envelope: (message: React.ReactNode, options?: Partial<any>) =>
23-
addToast({ ...options, message, type: 'envelope' }),
24-
drawer: (message: React.ReactNode, options?: Partial<any>) =>
25-
addToast({ ...options, message, type: 'drawer' }),
26-
warning: (message: React.ReactNode, options?: Partial<any>) =>
27-
addToast({ ...options, message, type: 'warning' }),
28-
custom: (message: React.ReactNode, options?: Partial<any>) =>
29-
addToast({ ...options, message, type: 'custom' }),
21+
success: (
22+
message: React.ReactNode,
23+
options?: Partial<Omit<ToastProps, 'message' | 'type'>>
24+
) => addToast({ ...options, message, type: 'success' }),
25+
error: (
26+
message: React.ReactNode,
27+
options?: Partial<Omit<ToastProps, 'message' | 'type'>>
28+
) => addToast({ ...options, message, type: 'error' }),
29+
info: (
30+
message: React.ReactNode,
31+
options?: Partial<Omit<ToastProps, 'message' | 'type'>>
32+
) => addToast({ ...options, message, type: 'info' }),
33+
envelope: (
34+
message: React.ReactNode,
35+
options?: Partial<Omit<ToastProps, 'message' | 'type'>>
36+
) => addToast({ ...options, message, type: 'envelope' }),
37+
drawer: (
38+
message: React.ReactNode,
39+
options?: Partial<Omit<ToastProps, 'message' | 'type'>>
40+
) => addToast({ ...options, message, type: 'drawer' }),
41+
warning: (
42+
message: React.ReactNode,
43+
options?: Partial<Omit<ToastProps, 'message' | 'type'>>
44+
) => addToast({ ...options, message, type: 'warning' }),
45+
custom: (
46+
message: React.ReactNode,
47+
options?: Partial<Omit<ToastProps, 'message' | 'type'>>
48+
) => addToast({ ...options, message, type: 'custom' }),
3049
remove: (id: string) => removeToast(id),
3150
removeAll: () => removeAllToast(),
32-
update: (id: string, updates: Partial<any>) => updateToast(id, updates),
51+
update: (id: string, updates: Partial<Toast>) => updateToast(id, updates),
3352
pause: (id: string) => pauseToastTimer(id),
3453
remainingTime: (id: string) => getRemainingTimeForToast(id),
3554
resume: (id: string) => resumeToastTimer(id),
36-
promise: (
37-
promise: Promise<any>,
55+
promise: <T = void>(
56+
promise: Promise<T>,
3857
{
3958
loading,
4059
success,
@@ -47,30 +66,30 @@ export const toast = Object.assign(
4766
error: string;
4867
duration?: number;
4968
position?: any;
50-
toastOptions?: Partial<any>;
69+
toastOptions?: Partial<ToastProps>;
5170
}
5271
) => {
5372
// Show the loading toast indefinitely
5473
const loadingToastId = addToast({
5574
message: loading,
56-
type: "promise",
75+
type: 'promise',
5776
position,
5877
...toastOptions,
5978
duration: Infinity, // Ensure loading toast doesn't disappear
6079
});
61-
80+
6281
promise
63-
.then((res) => {
82+
.then(() => {
6483
updateToast(loadingToastId, {
6584
message: success,
66-
type: "success",
85+
type: 'success',
6786
duration: toastOptions.duration ?? 3000, // Use toastOptions.duration
6887
});
6988
})
70-
.catch((err) => {
89+
.catch(() => {
7190
updateToast(loadingToastId, {
7291
message: error,
73-
type: "error",
92+
type: 'error',
7493
duration: toastOptions.duration ?? 3000, // Use toastOptions.duration
7594
});
7695
});

src/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import { createElement } from 'react';
22
import { setup } from 'goober';
3+
import { ToastPosition } from './components/types';
34
setup(createElement);
45

56
export * from './components/toast-container';
67
export * from './components/toast';
8+
export { ToastPosition };

0 commit comments

Comments
 (0)