@crossmint/client-sdk-react-ui 0.0.5-alpha.1 → 0.0.8-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -201
- package/README.md +1 -1
- package/lib/cjs/CrossMintButton.d.ts +16 -14
- package/lib/cjs/CrossMintButton.js +59 -54
- package/lib/cjs/CrossMintButton.js.map +1 -1
- package/lib/cjs/CrossMintModal.d.ts +6 -6
- package/lib/cjs/CrossMintModal.js +54 -54
- package/lib/cjs/CrossMintModalProvider.d.ts +6 -6
- package/lib/cjs/CrossMintModalProvider.js +47 -47
- package/lib/cjs/CrossMintModalProvider.js.map +1 -1
- package/lib/cjs/CrossMintPopupProvider.d.ts +6 -6
- package/lib/cjs/CrossMintPopupProvider.js +69 -68
- package/lib/cjs/CrossMintPopupProvider.js.map +1 -1
- package/lib/cjs/CrossMintProvider.d.ts +9 -7
- package/lib/cjs/CrossMintProvider.js +51 -49
- package/lib/cjs/CrossMintProvider.js.map +1 -1
- package/lib/cjs/CrossMintStatusButton.d.ts +10 -0
- package/lib/cjs/CrossMintStatusButton.js +66 -0
- package/lib/cjs/CrossMintStatusButton.js.map +1 -0
- package/lib/cjs/CrossMintStatusProvider.d.ts +7 -0
- package/lib/cjs/CrossMintStatusProvider.js +65 -0
- package/lib/cjs/CrossMintStatusProvider.js.map +1 -0
- package/lib/cjs/index.d.ts +7 -5
- package/lib/cjs/index.js +19 -17
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/useCrossMintModal.d.ts +7 -7
- package/lib/cjs/useCrossMintModal.js +9 -9
- package/lib/cjs/useCrossMintPopup.d.ts +8 -8
- package/lib/cjs/useCrossMintPopup.js +9 -9
- package/lib/cjs/useCrossMintPopup.js.map +1 -1
- package/lib/cjs/useCrossMintStatus.d.ts +15 -0
- package/lib/cjs/useCrossMintStatus.js +18 -0
- package/lib/cjs/useCrossMintStatus.js.map +1 -0
- package/lib/esm/CrossMintButton.d.ts +16 -14
- package/lib/esm/CrossMintButton.js +24 -19
- package/lib/esm/CrossMintButton.js.map +1 -1
- package/lib/esm/CrossMintModal.d.ts +6 -6
- package/lib/esm/CrossMintModal.js +31 -31
- package/lib/esm/CrossMintModalProvider.d.ts +6 -6
- package/lib/esm/CrossMintModalProvider.js +12 -12
- package/lib/esm/CrossMintModalProvider.js.map +1 -1
- package/lib/esm/CrossMintPopupProvider.d.ts +6 -6
- package/lib/esm/CrossMintPopupProvider.js +46 -45
- package/lib/esm/CrossMintPopupProvider.js.map +1 -1
- package/lib/esm/CrossMintProvider.d.ts +9 -7
- package/lib/esm/CrossMintProvider.js +16 -14
- package/lib/esm/CrossMintProvider.js.map +1 -1
- package/lib/esm/CrossMintStatusButton.d.ts +10 -0
- package/lib/esm/CrossMintStatusButton.js +31 -0
- package/lib/esm/CrossMintStatusButton.js.map +1 -0
- package/lib/esm/CrossMintStatusProvider.d.ts +7 -0
- package/lib/esm/CrossMintStatusProvider.js +31 -0
- package/lib/esm/CrossMintStatusProvider.js.map +1 -0
- package/lib/esm/index.d.ts +7 -5
- package/lib/esm/index.js +7 -5
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/useCrossMintModal.d.ts +7 -7
- package/lib/esm/useCrossMintModal.js +5 -5
- package/lib/esm/useCrossMintPopup.d.ts +8 -8
- package/lib/esm/useCrossMintPopup.js +5 -5
- package/lib/esm/useCrossMintPopup.js.map +1 -1
- package/lib/esm/useCrossMintStatus.d.ts +15 -0
- package/lib/esm/useCrossMintStatus.js +14 -0
- package/lib/esm/useCrossMintStatus.js.map +1 -0
- package/package.json +3 -3
- package/src/CrossMintButton.tsx +14 -3
- package/src/CrossMintModal.tsx +54 -54
- package/src/CrossMintModalProvider.tsx +0 -1
- package/src/CrossMintPopupProvider.tsx +19 -13
- package/src/CrossMintProvider.tsx +28 -12
- package/src/CrossMintStatusButton.tsx +73 -0
- package/src/CrossMintStatusProvider.tsx +58 -0
- package/src/index.ts +2 -0
- package/src/useCrossMintModal.tsx +12 -12
- package/src/useCrossMintPopup.tsx +4 -2
- package/src/useCrossMintStatus.tsx +22 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import React, { CSSProperties, FC, MouseEvent, MouseEventHandler, useMemo, useCallback } from "react";
|
|
2
|
+
import { OnboardingRequestStatusResponse, useCrossMintStatus } from "./useCrossMintStatus";
|
|
3
|
+
|
|
4
|
+
export interface StatusButtonProps {
|
|
5
|
+
className?: string;
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
onClick?: (e: MouseEvent<HTMLButtonElement>) => void;
|
|
8
|
+
style?: CSSProperties;
|
|
9
|
+
tabIndex?: number;
|
|
10
|
+
theme?: "light" | "dark";
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export const CrossMintStatusButton: FC<StatusButtonProps> = ({
|
|
14
|
+
className,
|
|
15
|
+
disabled,
|
|
16
|
+
onClick,
|
|
17
|
+
style,
|
|
18
|
+
tabIndex,
|
|
19
|
+
theme = "dark",
|
|
20
|
+
...props
|
|
21
|
+
}) => {
|
|
22
|
+
const { status, clientId, auctionId } = useCrossMintStatus();
|
|
23
|
+
|
|
24
|
+
const handleClick: MouseEventHandler<HTMLButtonElement> = useCallback(
|
|
25
|
+
(event) => {
|
|
26
|
+
if (onClick) onClick(event);
|
|
27
|
+
|
|
28
|
+
if (status === OnboardingRequestStatusResponse.WAITING_SUBMISSION) {
|
|
29
|
+
window.open(
|
|
30
|
+
`https://crossmint.io/developers/onboarding${
|
|
31
|
+
clientId && `?clientId=${clientId}${auctionId && `&auctionId=${auctionId}`}`
|
|
32
|
+
}`,
|
|
33
|
+
"_blank"
|
|
34
|
+
);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
[status]
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
const content = useMemo(() => {
|
|
42
|
+
switch (status) {
|
|
43
|
+
case OnboardingRequestStatusResponse.INVALID:
|
|
44
|
+
return <p>Invalid clientId</p>;
|
|
45
|
+
case OnboardingRequestStatusResponse.WAITING_SUBMISSION:
|
|
46
|
+
return <p>Click here to setup CrossMint</p>;
|
|
47
|
+
case OnboardingRequestStatusResponse.PENDING:
|
|
48
|
+
return <p>Your application is under review</p>;
|
|
49
|
+
case OnboardingRequestStatusResponse.ACCEPTED:
|
|
50
|
+
return <p>You're good to go!</p>;
|
|
51
|
+
case OnboardingRequestStatusResponse.REJECTED:
|
|
52
|
+
return <p>You're application was rejected</p>;
|
|
53
|
+
}
|
|
54
|
+
}, [status]);
|
|
55
|
+
|
|
56
|
+
return (
|
|
57
|
+
<button
|
|
58
|
+
className={`client-sdk-button-trigger client-sdk-button-trigger-${theme}`}
|
|
59
|
+
disabled={status !== OnboardingRequestStatusResponse.WAITING_SUBMISSION}
|
|
60
|
+
onClick={handleClick}
|
|
61
|
+
style={{ ...style }}
|
|
62
|
+
tabIndex={tabIndex}
|
|
63
|
+
{...props}
|
|
64
|
+
>
|
|
65
|
+
<img
|
|
66
|
+
className="client-sdk-button-icon"
|
|
67
|
+
src="https://www.crossmint.io/assets/crossmint/logo.png"
|
|
68
|
+
alt="Crossmint logo"
|
|
69
|
+
/>
|
|
70
|
+
{content}
|
|
71
|
+
</button>
|
|
72
|
+
);
|
|
73
|
+
};
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import React, { FC, ReactNode, useEffect, useState } from "react";
|
|
2
|
+
import { OnboardingRequestStatusResponse, CrossMintStatusContext } from "./useCrossMintStatus";
|
|
3
|
+
|
|
4
|
+
export interface CrossMintStatusProviderProps {
|
|
5
|
+
clientId: string;
|
|
6
|
+
auctionId?: string;
|
|
7
|
+
hideMintOnInactiveClient: boolean;
|
|
8
|
+
children: ReactNode;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export const CrossMintStatusProvider: FC<CrossMintStatusProviderProps> = ({
|
|
12
|
+
clientId,
|
|
13
|
+
auctionId,
|
|
14
|
+
hideMintOnInactiveClient,
|
|
15
|
+
children,
|
|
16
|
+
}) => {
|
|
17
|
+
const [status, setStatus] = useState<OnboardingRequestStatusResponse>(
|
|
18
|
+
OnboardingRequestStatusResponse.WAITING_SUBMISSION
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
async function fetchClientIntegration() {
|
|
22
|
+
const res = await fetch(`https://www.crossmint.io/api/crossmint/onboardingRequests/${clientId}/status`);
|
|
23
|
+
|
|
24
|
+
if (res.status === 200) {
|
|
25
|
+
const resData: { clientId: string; status: OnboardingRequestStatusResponse } = await res.json();
|
|
26
|
+
|
|
27
|
+
console.log("resData", resData);
|
|
28
|
+
setStatus(resData.status);
|
|
29
|
+
} else {
|
|
30
|
+
if (status !== OnboardingRequestStatusResponse.INVALID) {
|
|
31
|
+
setStatus(OnboardingRequestStatusResponse.INVALID);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
useEffect(() => {
|
|
37
|
+
fetchClientIntegration();
|
|
38
|
+
|
|
39
|
+
const interval = setInterval(() => {
|
|
40
|
+
fetchClientIntegration();
|
|
41
|
+
}, 60 * 1000);
|
|
42
|
+
|
|
43
|
+
return () => clearInterval(interval);
|
|
44
|
+
}, []);
|
|
45
|
+
|
|
46
|
+
return (
|
|
47
|
+
<CrossMintStatusContext.Provider
|
|
48
|
+
value={{
|
|
49
|
+
status,
|
|
50
|
+
clientId,
|
|
51
|
+
auctionId,
|
|
52
|
+
hideMintOnInactiveClient,
|
|
53
|
+
}}
|
|
54
|
+
>
|
|
55
|
+
{children}
|
|
56
|
+
</CrossMintStatusContext.Provider>
|
|
57
|
+
);
|
|
58
|
+
};
|
package/src/index.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { createContext, useContext } from "react";
|
|
2
|
-
|
|
3
|
-
export interface CrossMintModalContextState {
|
|
4
|
-
visible: boolean;
|
|
5
|
-
setVisible: (open: boolean) => void;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export const CrossMintModalContext = createContext<CrossMintModalContextState>({} as CrossMintModalContextState);
|
|
9
|
-
|
|
10
|
-
export function useCrossMintModal(): CrossMintModalContextState {
|
|
11
|
-
return useContext(CrossMintModalContext);
|
|
12
|
-
}
|
|
1
|
+
import { createContext, useContext } from "react";
|
|
2
|
+
|
|
3
|
+
export interface CrossMintModalContextState {
|
|
4
|
+
visible: boolean;
|
|
5
|
+
setVisible: (open: boolean) => void;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export const CrossMintModalContext = createContext<CrossMintModalContextState>({} as CrossMintModalContextState);
|
|
9
|
+
|
|
10
|
+
export function useCrossMintModal(): CrossMintModalContextState {
|
|
11
|
+
return useContext(CrossMintModalContext);
|
|
12
|
+
}
|
|
@@ -3,10 +3,12 @@ import { createContext, useContext } from "react";
|
|
|
3
3
|
export interface PopupContextState {
|
|
4
4
|
connecting: boolean;
|
|
5
5
|
connect: (
|
|
6
|
-
candyMachineId: string,
|
|
7
6
|
collectionTitle?: string,
|
|
8
7
|
collectionDescription?: string,
|
|
9
|
-
collectionPhoto?: string
|
|
8
|
+
collectionPhoto?: string,
|
|
9
|
+
mintTo?: string,
|
|
10
|
+
emailTo?: string,
|
|
11
|
+
listingId?: string
|
|
10
12
|
) => void;
|
|
11
13
|
|
|
12
14
|
popup: Window | null;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { createContext, useContext } from "react";
|
|
2
|
+
|
|
3
|
+
export enum OnboardingRequestStatusResponse {
|
|
4
|
+
WAITING_SUBMISSION = "waiting-submission",
|
|
5
|
+
PENDING = "pending",
|
|
6
|
+
REJECTED = "rejected",
|
|
7
|
+
ACCEPTED = "accepted",
|
|
8
|
+
INVALID = "invalid",
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export interface CrossMintStatusContextState {
|
|
12
|
+
status: OnboardingRequestStatusResponse;
|
|
13
|
+
clientId: string;
|
|
14
|
+
auctionId?: string;
|
|
15
|
+
hideMintOnInactiveClient: boolean;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export const CrossMintStatusContext = createContext<CrossMintStatusContextState>({} as CrossMintStatusContextState);
|
|
19
|
+
|
|
20
|
+
export function useCrossMintStatus(): CrossMintStatusContextState {
|
|
21
|
+
return useContext(CrossMintStatusContext);
|
|
22
|
+
}
|