decentraland-dapps 23.27.0 → 23.28.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/dist/containers/withAuthorizedAction/AuthorizationModal/AuthorizationModal.container.d.ts +1 -1
- package/dist/containers/withAuthorizedAction/AuthorizationModal/AuthorizationModal.container.js +1 -3
- package/dist/containers/withAuthorizedAction/AuthorizationModal/AuthorizationModal.container.js.map +1 -1
- package/dist/containers/withAuthorizedAction/AuthorizationModal/AuthorizationModal.js +12 -14
- package/dist/containers/withAuthorizedAction/AuthorizationModal/AuthorizationModal.js.map +1 -1
- package/dist/containers/withAuthorizedAction/AuthorizationModal/AuthorizationModal.types.d.ts +11 -5
- package/dist/containers/withAuthorizedAction/AuthorizationModal/AuthorizationModal.types.js.map +1 -1
- package/dist/containers/withAuthorizedAction/withAuthorizedAction.js +81 -19
- package/dist/containers/withAuthorizedAction/withAuthorizedAction.js.map +1 -1
- package/dist/containers/withAuthorizedAction/withAuthorizedAction.types.d.ts +13 -4
- package/dist/hooks/useNotifications.d.ts +1 -1
- package/dist/hooks/useNotifications.js +51 -50
- package/dist/hooks/useNotifications.js.map +1 -1
- package/dist/modules/authorization/actions.d.ts +5 -3
- package/dist/modules/authorization/actions.js +5 -3
- package/dist/modules/authorization/actions.js.map +1 -1
- package/dist/modules/authorization/sagas.js +34 -16
- package/dist/modules/authorization/sagas.js.map +1 -1
- package/dist/modules/authorization/types.d.ts +4 -0
- package/dist/modules/transaction/sagas.d.ts +4 -4
- package/package.json +1 -1
package/dist/containers/withAuthorizedAction/AuthorizationModal/AuthorizationModal.container.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { AuthorizationModal } from './AuthorizationModal';
|
|
2
2
|
import { OwnProps } from './AuthorizationModal.types';
|
|
3
|
-
declare const _default: import("react-redux").ConnectedComponent<typeof AuthorizationModal, import("react-redux").Omit<import("./AuthorizationModal.types").Props, "error" | "
|
|
3
|
+
declare const _default: import("react-redux").ConnectedComponent<typeof AuthorizationModal, import("react-redux").Omit<import("./AuthorizationModal.types").Props, "error" | "onFetchAuthorizations" | "confirmationStatus" | "grantStatus" | "revokeStatus" | "confirmationError"> & OwnProps>;
|
|
4
4
|
export default _default;
|
package/dist/containers/withAuthorizedAction/AuthorizationModal/AuthorizationModal.container.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { connect } from 'react-redux';
|
|
2
|
-
import { authorizationFlowRequest, fetchAuthorizationsRequest } from '../../../modules/authorization/actions';
|
|
3
2
|
import { AuthorizationAction } from '../../../modules/authorization/types';
|
|
4
3
|
import { getAuthorizationFlowError, getError } from '../../../modules/authorization/selectors';
|
|
4
|
+
import { fetchAuthorizationsRequest } from '../../../modules/authorization/actions';
|
|
5
5
|
import { AuthorizationModal } from './AuthorizationModal';
|
|
6
6
|
import { AuthorizationStepStatus } from './AuthorizationModal.types';
|
|
7
7
|
import { getStepStatus } from './utils';
|
|
@@ -20,8 +20,6 @@ const mapState = (state, ownProps) => {
|
|
|
20
20
|
};
|
|
21
21
|
};
|
|
22
22
|
const mapDispatch = (dispatch, ownProps) => ({
|
|
23
|
-
onRevoke: (traceId) => dispatch(authorizationFlowRequest(ownProps.authorization, AuthorizationAction.REVOKE, '', traceId)),
|
|
24
|
-
onGrant: (traceId) => dispatch(authorizationFlowRequest(ownProps.authorization, AuthorizationAction.GRANT, ownProps.requiredAllowance?.toString() || '', traceId)),
|
|
25
23
|
onFetchAuthorizations: () => dispatch(fetchAuthorizationsRequest([ownProps.authorization]))
|
|
26
24
|
});
|
|
27
25
|
export default connect(mapState, mapDispatch)(AuthorizationModal);
|
package/dist/containers/withAuthorizedAction/AuthorizationModal/AuthorizationModal.container.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthorizationModal.container.js","sourceRoot":"","sources":["../../../../src/containers/withAuthorizedAction/AuthorizationModal/AuthorizationModal.container.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,OAAO,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,
|
|
1
|
+
{"version":3,"file":"AuthorizationModal.container.js","sourceRoot":"","sources":["../../../../src/containers/withAuthorizedAction/AuthorizationModal/AuthorizationModal.container.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,OAAO,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAA;AAC1E,OAAO,EACL,yBAAyB,EACzB,QAAQ,EACT,MAAM,0CAA0C,CAAA;AACjD,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAA;AACnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EACL,uBAAuB,EAKxB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAEvC,MAAM,QAAQ,GAAG,CAAC,KAAqB,EAAE,QAAkB,EAAiB,EAAE;IAC5E,MAAM,EACJ,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACrB,GAAG,QAAQ,CAAA;IACZ,OAAO;QACL,YAAY,EAAE,aAAa,CACzB,KAAK,EACL,mBAAmB,CAAC,MAAM,EAC1B,aAAa,EACb,SAAS,CACV;QACD,WAAW,EAAE,aAAa,CACxB,KAAK,EACL,mBAAmB,CAAC,KAAK,EACzB,aAAa,EACb,iBAAiB,CAClB;QACD,kBAAkB,EAAE,qBAAqB;YACvC,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC;YAC9B,CAAC,CAAC,uBAAuB,CAAC,OAAO;QACnC,iBAAiB,EAAE,oBAAoB;YACrC,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC;YAC7B,CAAC,CAAC,IAAI;QACR,KAAK,EAAE,yBAAyB,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE;KACjE,CAAA;AACH,CAAC,CAAA;AAED,MAAM,WAAW,GAAG,CAClB,QAAqB,EACrB,QAAkB,EACA,EAAE,CAAC,CAAC;IACtB,qBAAqB,EAAE,GAAG,EAAE,CAC1B,QAAQ,CAAC,0BAA0B,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;CACjE,CAAC,CAAA;AAEF,eAAe,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,kBAAkB,CAAC,CAAA"}
|
|
@@ -2,7 +2,7 @@ import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
|
|
2
2
|
import { v4 as uuid } from 'uuid';
|
|
3
3
|
import { Network } from '@dcl/schemas';
|
|
4
4
|
import { AuthorizationModal as BaseAuthorizationModal } from 'decentraland-ui';
|
|
5
|
-
import { getAnalytics } from '../../../modules/analytics
|
|
5
|
+
import { getAnalytics } from '../../../modules/analytics';
|
|
6
6
|
import { AuthorizationStepAction, AuthorizationStepStatus } from './AuthorizationModal.types';
|
|
7
7
|
import { getPriceInMana, getStepMessage, getSteps, getTranslation } from './utils';
|
|
8
8
|
const LOADING_STATUS = [
|
|
@@ -11,46 +11,44 @@ const LOADING_STATUS = [
|
|
|
11
11
|
AuthorizationStepStatus.WAITING
|
|
12
12
|
];
|
|
13
13
|
export function AuthorizationModal({ authorization, requiredAllowance, currentAllowance, action, authorizationType, revokeStatus, grantStatus, confirmationStatus, error, confirmationError, network, authorizedContractLabel, targetContractLabel, translationKeys, onClose, onRevoke, onGrant, onAuthorized, onFetchAuthorizations }) {
|
|
14
|
-
const analytics = getAnalytics();
|
|
15
|
-
const [analyticsTraceId] = useState(uuid());
|
|
16
14
|
const [currentStep, setCurrentStep] = useState(0);
|
|
17
15
|
const [loading, setLoading] = useState();
|
|
18
16
|
const [shouldReauthorize, setShouldReauthorize] = useState(false);
|
|
17
|
+
const [analyticsTraceId] = useState(uuid());
|
|
19
18
|
const requiredAllowanceAsEth = getPriceInMana(requiredAllowance);
|
|
20
19
|
useEffect(() => {
|
|
21
|
-
|
|
20
|
+
getAnalytics().track('[Authorization Flow] Modal Opened', {
|
|
22
21
|
action,
|
|
23
|
-
requiredAllowance,
|
|
24
22
|
traceId: analyticsTraceId
|
|
25
23
|
});
|
|
26
24
|
}, []);
|
|
27
25
|
useEffect(() => {
|
|
28
26
|
onFetchAuthorizations();
|
|
29
|
-
}, [onFetchAuthorizations]);
|
|
27
|
+
}, [onFetchAuthorizations, authorization]);
|
|
30
28
|
const handleRevokeToken = useCallback(() => {
|
|
31
|
-
onRevoke(analyticsTraceId);
|
|
32
|
-
|
|
29
|
+
onRevoke(authorization, analyticsTraceId);
|
|
30
|
+
getAnalytics().track('[Authorization Flow] Authorize Revoke Click', {
|
|
33
31
|
action,
|
|
34
32
|
traceId: analyticsTraceId
|
|
35
33
|
});
|
|
36
34
|
setLoading(AuthorizationStepAction.REVOKE);
|
|
37
|
-
}, [onRevoke]);
|
|
35
|
+
}, [onRevoke, authorization, analyticsTraceId]);
|
|
38
36
|
const handleGrantToken = useCallback(() => {
|
|
39
|
-
onGrant(analyticsTraceId);
|
|
40
|
-
|
|
37
|
+
onGrant(authorization, { traceId: analyticsTraceId, requiredAllowance });
|
|
38
|
+
getAnalytics().track('[Authorization Flow] Authorize Grant Click', {
|
|
41
39
|
action,
|
|
42
40
|
traceId: analyticsTraceId
|
|
43
41
|
});
|
|
44
42
|
setLoading(AuthorizationStepAction.GRANT);
|
|
45
|
-
}, [onGrant]);
|
|
43
|
+
}, [onGrant, authorization, analyticsTraceId, requiredAllowance]);
|
|
46
44
|
const handleAuthorized = useCallback(() => {
|
|
47
45
|
onAuthorized();
|
|
48
|
-
|
|
46
|
+
getAnalytics().track('[Authorization Flow] Confirm Transaction Click', {
|
|
49
47
|
action,
|
|
50
48
|
traceId: analyticsTraceId
|
|
51
49
|
});
|
|
52
50
|
setLoading(AuthorizationStepAction.CONFIRM);
|
|
53
|
-
}, [onAuthorized]);
|
|
51
|
+
}, [onAuthorized, authorization, analyticsTraceId]);
|
|
54
52
|
const steps = useMemo(() => {
|
|
55
53
|
const authSteps = getSteps({
|
|
56
54
|
authorizationType,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthorizationModal.js","sourceRoot":"","sources":["../../../../src/containers/withAuthorizedAction/AuthorizationModal/AuthorizationModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACxE,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAEL,kBAAkB,IAAI,sBAAsB,EAC7C,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"AuthorizationModal.js","sourceRoot":"","sources":["../../../../src/containers/withAuthorizedAction/AuthorizationModal/AuthorizationModal.tsx"],"names":[],"mappings":"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"}
|
package/dist/containers/withAuthorizedAction/AuthorizationModal/AuthorizationModal.types.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { Dispatch } from 'redux';
|
|
|
2
2
|
import { BigNumber } from 'ethers';
|
|
3
3
|
import { Network } from '@dcl/schemas';
|
|
4
4
|
import { RootStateOrAny } from 'react-redux';
|
|
5
|
-
import {
|
|
5
|
+
import { AuthorizationFlowRequestAction, fetchAuthorizationsRequest, FetchAuthorizationsRequestAction } from '../../../modules/authorization/actions';
|
|
6
6
|
import { Authorization, AuthorizationType } from '../../../modules/authorization/types';
|
|
7
7
|
import { AuthorizationTranslationKeys } from '../withAuthorizedAction.types';
|
|
8
8
|
export declare enum AuthorizedAction {
|
|
@@ -29,6 +29,12 @@ export declare enum AuthorizationStepAction {
|
|
|
29
29
|
GRANT = "grant",
|
|
30
30
|
CONFIRM = "confirm"
|
|
31
31
|
}
|
|
32
|
+
export type HandleGrantOptions = {
|
|
33
|
+
requiredAllowance?: BigNumber;
|
|
34
|
+
currentAllowance?: BigNumber;
|
|
35
|
+
onAuthorized?: () => void;
|
|
36
|
+
traceId?: string;
|
|
37
|
+
};
|
|
32
38
|
export type Props = {
|
|
33
39
|
authorization: Authorization;
|
|
34
40
|
requiredAllowance?: BigNumber;
|
|
@@ -48,11 +54,11 @@ export type Props = {
|
|
|
48
54
|
getConfirmationError?: (state: RootStateOrAny) => string | null;
|
|
49
55
|
onClose: () => void;
|
|
50
56
|
onAuthorized: () => void;
|
|
51
|
-
onRevoke: (traceId: string) => ReturnType<typeof authorizationFlowRequest>;
|
|
52
|
-
onGrant: (traceId: string) => ReturnType<typeof authorizationFlowRequest>;
|
|
53
57
|
onFetchAuthorizations: () => ReturnType<typeof fetchAuthorizationsRequest>;
|
|
58
|
+
onRevoke: (authorization: Authorization, analyticsTraceId: string) => void;
|
|
59
|
+
onGrant: (authorization: Authorization, options?: HandleGrantOptions) => void;
|
|
54
60
|
};
|
|
55
|
-
export type MapDispatchProps = Pick<Props, '
|
|
61
|
+
export type MapDispatchProps = Pick<Props, 'onFetchAuthorizations'>;
|
|
56
62
|
export type MapDispatch = Dispatch<AuthorizationFlowRequestAction | FetchAuthorizationsRequestAction>;
|
|
57
|
-
export type OwnProps = Pick<Props, 'authorization' | 'requiredAllowance' | 'getConfirmationStatus' | 'getConfirmationError'>;
|
|
63
|
+
export type OwnProps = Pick<Props, 'authorization' | 'requiredAllowance' | 'getConfirmationStatus' | 'getConfirmationError' | 'translationKeys' | 'targetContractLabel' | 'authorizedContractLabel' | 'currentAllowance' | 'authorizationType' | 'action' | 'network' | 'onAuthorized' | 'onGrant' | 'onRevoke'>;
|
|
58
64
|
export type MapStateProps = Pick<Props, 'revokeStatus' | 'grantStatus' | 'error' | 'confirmationStatus' | 'confirmationError'>;
|
package/dist/containers/withAuthorizedAction/AuthorizationModal/AuthorizationModal.types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthorizationModal.types.js","sourceRoot":"","sources":["../../../../src/containers/withAuthorizedAction/AuthorizationModal/AuthorizationModal.types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AuthorizationModal.types.js","sourceRoot":"","sources":["../../../../src/containers/withAuthorizedAction/AuthorizationModal/AuthorizationModal.types.ts"],"names":[],"mappings":"AAeA,wDAAwD;AACxD,MAAM,CAAN,IAAY,gBASX;AATD,WAAY,gBAAgB;IAC1B,+BAAW,CAAA;IACX,+BAAW,CAAA;IACX,iCAAa,CAAA;IACb,iCAAa,CAAA;IACb,6CAAyB,CAAA;IACzB,2CAAuB,CAAA;IACvB,iCAAa,CAAA;IACb,6DAAyC,CAAA;AAC3C,CAAC,EATW,gBAAgB,KAAhB,gBAAgB,QAS3B;AAED,MAAM,CAAN,IAAY,uBAQX;AARD,WAAY,uBAAuB;IACjC,wDAA6B,CAAA;IAC7B,8CAAmB,CAAA;IACnB,8CAAmB,CAAA;IACnB,oDAAyB,CAAA;IACzB,4EAAiD,CAAA;IACjD,0CAAe,CAAA;IACf,wCAAa,CAAA;AACf,CAAC,EARW,uBAAuB,KAAvB,uBAAuB,QAQlC;AAED,MAAM,CAAN,IAAY,uBAIX;AAJD,WAAY,uBAAuB;IACjC,4CAAiB,CAAA;IACjB,0CAAe,CAAA;IACf,8CAAmB,CAAA;AACrB,CAAC,EAJW,uBAAuB,KAAvB,uBAAuB,QAIlC"}
|
|
@@ -1,27 +1,60 @@
|
|
|
1
1
|
import { connect } from 'react-redux';
|
|
2
|
-
import
|
|
2
|
+
import { v4 as uuid } from 'uuid';
|
|
3
|
+
import React, { useCallback, useEffect, useState } from 'react';
|
|
3
4
|
import { BigNumber, ethers } from 'ethers';
|
|
4
|
-
import { AuthorizationType } from '../../modules/authorization/types';
|
|
5
|
+
import { AuthorizationAction, AuthorizationType } from '../../modules/authorization/types';
|
|
5
6
|
import { getCollectionV2ContractInstance, getERC20ContractInstance, getERC721ContractInstance } from '../../modules/authorization/utils';
|
|
6
7
|
import { getNetworkProvider } from '../../lib/eth';
|
|
7
|
-
import {
|
|
8
|
-
import { authorizationFlowClear } from '../../modules/authorization/actions';
|
|
8
|
+
import { getData as getWallet } from '../../modules/wallet/selectors';
|
|
9
|
+
import { authorizationFlowClear, authorizationFlowRequest } from '../../modules/authorization/actions';
|
|
10
|
+
import { getIsFeatureEnabled } from '../../modules/features/selectors';
|
|
11
|
+
import { ApplicationName } from '../../modules/features';
|
|
12
|
+
import { isWeb2Wallet } from '../../modules/wallet/utils/providerChecks';
|
|
13
|
+
import { getAuthorizationFlowError, isAuthorizing } from '../../modules/authorization/selectors';
|
|
9
14
|
import { AuthorizationModal } from './AuthorizationModal';
|
|
15
|
+
const MAGIC_AUTO_SIGN_FEATURE = 'magic-auto-sign';
|
|
10
16
|
const mapState = (state) => ({
|
|
11
|
-
|
|
17
|
+
isMagicAutoSignEnabled: getIsFeatureEnabled(state, ApplicationName.DAPPS, MAGIC_AUTO_SIGN_FEATURE),
|
|
18
|
+
authorizationError: getAuthorizationFlowError(state),
|
|
19
|
+
wallet: getWallet(state),
|
|
20
|
+
isAuthorizing: isAuthorizing(state)
|
|
12
21
|
});
|
|
13
22
|
const mapDispatch = (dispatch) => ({
|
|
14
|
-
onClearAuthorizationFlow: () => dispatch(authorizationFlowClear())
|
|
23
|
+
onClearAuthorizationFlow: () => dispatch(authorizationFlowClear()),
|
|
24
|
+
onRevoke: (traceId, authorization, onAuthorized) => dispatch(authorizationFlowRequest(authorization, AuthorizationAction.REVOKE, {
|
|
25
|
+
traceId,
|
|
26
|
+
onAuthorized
|
|
27
|
+
})),
|
|
28
|
+
onGrant: (traceId, authorization, requiredAllowance, currentAllowance, onAuthorized) => dispatch(authorizationFlowRequest(authorization, AuthorizationAction.GRANT, {
|
|
29
|
+
requiredAllowance: requiredAllowance?.toString(),
|
|
30
|
+
currentAllowance: currentAllowance?.toString(),
|
|
31
|
+
traceId,
|
|
32
|
+
onAuthorized
|
|
33
|
+
}))
|
|
15
34
|
});
|
|
16
35
|
export default function withAuthorizedAction(WrappedComponent, action, translationKeys, getConfirmationStatus, getConfirmationError) {
|
|
17
36
|
// TODO: Remove any type
|
|
18
|
-
const
|
|
37
|
+
const WithAuthorizedActionComponent = (props) => {
|
|
38
|
+
const { wallet, onClearAuthorizationFlow, onRevoke, onGrant, isMagicAutoSignEnabled, isAuthorizing, authorizationError } = props;
|
|
19
39
|
const [showAuthorizationModal, setShowAuthorizationModal] = useState(false);
|
|
20
40
|
const [authModalData, setAuthModalData] = useState();
|
|
21
41
|
const [isLoadingAuthorization, setIsLoadingAuthorization] = useState(false);
|
|
22
|
-
const
|
|
42
|
+
const isUserLoggedInWithMagic = wallet && isWeb2Wallet(wallet);
|
|
43
|
+
const userAddress = wallet?.address;
|
|
44
|
+
// Clear the authorization flow error when the component unmounts
|
|
45
|
+
useEffect(() => {
|
|
46
|
+
return () => {
|
|
47
|
+
onClearAuthorizationFlow();
|
|
48
|
+
};
|
|
49
|
+
}, [onClearAuthorizationFlow]);
|
|
50
|
+
const handleRevoke = useCallback((authorization, analyticsTraceId, onAuthorized) => {
|
|
51
|
+
onRevoke(analyticsTraceId, authorization, onAuthorized);
|
|
52
|
+
}, [onRevoke]);
|
|
53
|
+
const handleGrant = useCallback((authorization, options) => {
|
|
54
|
+
onGrant(options?.traceId ?? uuid(), authorization, options?.requiredAllowance, options?.currentAllowance, options?.onAuthorized);
|
|
55
|
+
}, [onGrant]);
|
|
23
56
|
const handleAuthorizedAction = useCallback(async (authorizeOptions) => {
|
|
24
|
-
if (!
|
|
57
|
+
if (!userAddress) {
|
|
25
58
|
return;
|
|
26
59
|
}
|
|
27
60
|
setIsLoadingAuthorization(true);
|
|
@@ -30,7 +63,7 @@ export default function withAuthorizedAction(WrappedComponent, action, translati
|
|
|
30
63
|
const provider = new ethers.providers.Web3Provider(networkProvider);
|
|
31
64
|
const authorization = {
|
|
32
65
|
type: authorizationType,
|
|
33
|
-
address,
|
|
66
|
+
address: userAddress,
|
|
34
67
|
authorizedAddress,
|
|
35
68
|
contractAddress: targetContract.address,
|
|
36
69
|
chainId: targetContract.chainId,
|
|
@@ -45,17 +78,26 @@ export default function withAuthorizedAction(WrappedComponent, action, translati
|
|
|
45
78
|
return;
|
|
46
79
|
}
|
|
47
80
|
const contract = getERC20ContractInstance(targetContract.address, provider);
|
|
48
|
-
const
|
|
49
|
-
if (
|
|
81
|
+
const currentAllowance = await contract.allowance(userAddress, authorizedAddress);
|
|
82
|
+
if (currentAllowance.gte(BigNumber.from(requiredAllowanceInWei))) {
|
|
50
83
|
onAuthorized(true);
|
|
51
84
|
setIsLoadingAuthorization(false);
|
|
52
85
|
return;
|
|
53
86
|
}
|
|
87
|
+
if (isMagicAutoSignEnabled && isUserLoggedInWithMagic) {
|
|
88
|
+
handleGrant(authorization, {
|
|
89
|
+
requiredAllowance: BigNumber.from(requiredAllowanceInWei),
|
|
90
|
+
currentAllowance: currentAllowance,
|
|
91
|
+
onAuthorized: () => onAuthorized(false)
|
|
92
|
+
});
|
|
93
|
+
setIsLoadingAuthorization(false);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
54
96
|
setAuthModalData({
|
|
55
97
|
translationKeys,
|
|
56
98
|
authorization,
|
|
57
99
|
authorizedContractLabel,
|
|
58
|
-
currentAllowance
|
|
100
|
+
currentAllowance,
|
|
59
101
|
requiredAllowance: BigNumber.from(requiredAllowanceInWei),
|
|
60
102
|
authorizationType: authorizationType,
|
|
61
103
|
action,
|
|
@@ -67,13 +109,20 @@ export default function withAuthorizedAction(WrappedComponent, action, translati
|
|
|
67
109
|
}
|
|
68
110
|
else if (authorizationType === AuthorizationType.APPROVAL) {
|
|
69
111
|
const contract = getERC721ContractInstance(targetContract.address, provider);
|
|
70
|
-
const isApprovedForAll = await contract.isApprovedForAll(
|
|
112
|
+
const isApprovedForAll = await contract.isApprovedForAll(userAddress, authorizedAddress);
|
|
71
113
|
if (isApprovedForAll) {
|
|
72
114
|
onAuthorized(true);
|
|
73
115
|
setIsLoadingAuthorization(false);
|
|
74
116
|
return;
|
|
75
117
|
}
|
|
76
118
|
const { targetContractLabel } = authorizeOptions;
|
|
119
|
+
if (isMagicAutoSignEnabled && isUserLoggedInWithMagic) {
|
|
120
|
+
handleGrant(authorization, {
|
|
121
|
+
onAuthorized: () => onAuthorized(false)
|
|
122
|
+
});
|
|
123
|
+
setIsLoadingAuthorization(false);
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
77
126
|
setAuthModalData({
|
|
78
127
|
translationKeys,
|
|
79
128
|
authorization,
|
|
@@ -96,6 +145,13 @@ export default function withAuthorizedAction(WrappedComponent, action, translati
|
|
|
96
145
|
setIsLoadingAuthorization(false);
|
|
97
146
|
return;
|
|
98
147
|
}
|
|
148
|
+
if (isMagicAutoSignEnabled && isUserLoggedInWithMagic) {
|
|
149
|
+
handleGrant(authorization, {
|
|
150
|
+
onAuthorized: () => onAuthorized(false)
|
|
151
|
+
});
|
|
152
|
+
setIsLoadingAuthorization(false);
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
99
155
|
setAuthModalData({
|
|
100
156
|
translationKeys,
|
|
101
157
|
authorization,
|
|
@@ -115,16 +171,22 @@ export default function withAuthorizedAction(WrappedComponent, action, translati
|
|
|
115
171
|
// TODO: handle error scenario
|
|
116
172
|
console.error(error);
|
|
117
173
|
}
|
|
118
|
-
}, [
|
|
174
|
+
}, [
|
|
175
|
+
userAddress,
|
|
176
|
+
isMagicAutoSignEnabled,
|
|
177
|
+
isUserLoggedInWithMagic,
|
|
178
|
+
handleGrant,
|
|
179
|
+
handleRevoke
|
|
180
|
+
]);
|
|
119
181
|
const handleClose = useCallback(() => {
|
|
120
182
|
setIsLoadingAuthorization(false);
|
|
121
183
|
setShowAuthorizationModal(false);
|
|
122
184
|
onClearAuthorizationFlow();
|
|
123
|
-
}, []);
|
|
185
|
+
}, [onClearAuthorizationFlow]);
|
|
124
186
|
return (React.createElement(React.Fragment, null,
|
|
125
|
-
React.createElement(WrappedComponent, { ...props, onAuthorizedAction: handleAuthorizedAction, onCloseAuthorization: handleClose, isLoadingAuthorization: isLoadingAuthorization }),
|
|
126
|
-
showAuthorizationModal && authModalData ? (React.createElement(AuthorizationModal, { onClose: handleClose, ...authModalData })) : null));
|
|
187
|
+
React.createElement(WrappedComponent, { ...props, onAuthorizedAction: handleAuthorizedAction, onCloseAuthorization: handleClose, authorizationError: authorizationError, isLoadingAuthorization: isLoadingAuthorization || isAuthorizing }),
|
|
188
|
+
showAuthorizationModal && authModalData ? (React.createElement(AuthorizationModal, { onGrant: handleGrant, onRevoke: handleRevoke, onClose: handleClose, ...authModalData })) : null));
|
|
127
189
|
};
|
|
128
|
-
return connect(mapState, mapDispatch)(
|
|
190
|
+
return connect(mapState, mapDispatch)(WithAuthorizedActionComponent);
|
|
129
191
|
}
|
|
130
192
|
//# sourceMappingURL=withAuthorizedAction.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withAuthorizedAction.js","sourceRoot":"","sources":["../../../src/containers/withAuthorizedAction/withAuthorizedAction.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAkB,OAAO,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"withAuthorizedAction.js","sourceRoot":"","sources":["../../../src/containers/withAuthorizedAction/withAuthorizedAction.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { Dispatch } from 'redux';
|
|
2
2
|
import { ContractName } from 'decentraland-transactions';
|
|
3
3
|
import { Contract } from '@dcl/schemas';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { Wallet } from '../../modules/wallet/types';
|
|
5
|
+
import { AuthorizationFlowClearAction, AuthorizationFlowRequestAction, authorizationFlowClear, authorizationFlowRequest, FetchAuthorizationsRequestAction } from '../../modules/authorization/actions';
|
|
6
|
+
import { Authorization, AuthorizationType } from '../../modules/authorization/types';
|
|
6
7
|
import { en } from '../../modules/translation/defaults';
|
|
7
8
|
type AuthorizeBaseOptions = {
|
|
8
9
|
/**
|
|
@@ -42,12 +43,20 @@ export type WithAuthorizedActionProps = {
|
|
|
42
43
|
onAuthorizedAction: (options: AuthorizeActionOptions) => void;
|
|
43
44
|
onCloseAuthorization: () => void;
|
|
44
45
|
isLoadingAuthorization: boolean;
|
|
46
|
+
authorizationError: string | null;
|
|
47
|
+
wallet: Wallet;
|
|
48
|
+
isMagicAutoSignEnabled: boolean;
|
|
45
49
|
};
|
|
46
50
|
export type MapStateProps = {
|
|
47
|
-
|
|
51
|
+
wallet: Wallet | null;
|
|
52
|
+
isAuthorizing: boolean;
|
|
53
|
+
authorizationError: string | null;
|
|
54
|
+
isMagicAutoSignEnabled: boolean;
|
|
48
55
|
};
|
|
49
|
-
export type MapDispatch = Dispatch<AuthorizationFlowClearAction>;
|
|
56
|
+
export type MapDispatch = Dispatch<AuthorizationFlowClearAction | AuthorizationFlowRequestAction | FetchAuthorizationsRequestAction>;
|
|
50
57
|
export type MapDispatchProps = {
|
|
51
58
|
onClearAuthorizationFlow: typeof authorizationFlowClear;
|
|
59
|
+
onRevoke: (traceId: string, authorization: Authorization) => ReturnType<typeof authorizationFlowRequest>;
|
|
60
|
+
onGrant: (traceId: string, authorization: Authorization) => ReturnType<typeof authorizationFlowRequest>;
|
|
52
61
|
};
|
|
53
62
|
export {};
|
|
@@ -10,7 +10,7 @@ declare const useNotifications: (identity: AuthIdentity | undefined, isNotificat
|
|
|
10
10
|
modalActiveTab: NotificationActiveTab;
|
|
11
11
|
isNotificationsOnboarding: any;
|
|
12
12
|
handleOnBegin: () => void;
|
|
13
|
-
handleNotificationsOpen: () =>
|
|
13
|
+
handleNotificationsOpen: () => void;
|
|
14
14
|
handleOnChangeModalTab: (tab: NotificationActiveTab) => void;
|
|
15
15
|
handleRenderProfile: (address: string) => JSX.Element;
|
|
16
16
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { useState, useEffect, useCallback } from 'react';
|
|
3
3
|
import { NotificationsAPI, checkIsOnboarding, setOnboardingDone } from '../modules/notifications';
|
|
4
4
|
import { NotificationActiveTab } from 'decentraland-ui/dist/components/Notifications/types';
|
|
5
5
|
import { CURRENT_AVAILABLE_NOTIFICATIONS } from 'decentraland-ui/dist/components/Notifications/utils';
|
|
@@ -16,72 +16,73 @@ const useNotifications = (identity, isNotificationsEnabled) => {
|
|
|
16
16
|
isOnboarding: checkIsOnboarding(),
|
|
17
17
|
isOpen: false
|
|
18
18
|
});
|
|
19
|
-
const notificationsClient =
|
|
20
|
-
if (identity)
|
|
21
|
-
return new NotificationsAPI({ identity });
|
|
22
|
-
return null;
|
|
23
|
-
}, [identity]);
|
|
19
|
+
const [notificationsClient, setNotificationsClient] = useState(null);
|
|
24
20
|
const handleOnBegin = () => {
|
|
25
21
|
setOnboardingDone();
|
|
26
22
|
setNotificationsState(prevState => ({ ...prevState, isOnboarding: false }));
|
|
27
23
|
};
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
24
|
+
const fetchAndUpdateNotifications = useCallback(async (scopedNotificationsClient) => {
|
|
25
|
+
return scopedNotificationsClient.getNotifications().then((notificationsFetched) => {
|
|
26
|
+
const filteredNotifications = notificationsFetched
|
|
27
|
+
.filter((notification => CURRENT_AVAILABLE_NOTIFICATIONS.includes(notification.type)));
|
|
28
|
+
setUserNotifications(prevState => ({
|
|
29
|
+
...prevState,
|
|
30
|
+
isLoading: false,
|
|
31
|
+
notifications: filteredNotifications
|
|
32
|
+
}));
|
|
32
33
|
});
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
34
|
+
}, []);
|
|
35
|
+
useEffect(() => {
|
|
36
|
+
if (identity) {
|
|
37
|
+
const notificationsClient = new NotificationsAPI({ identity });
|
|
38
|
+
setNotificationsClient(notificationsClient);
|
|
39
|
+
if (isNotificationsEnabled) {
|
|
40
|
+
setUserNotifications(prevState => ({ ...prevState, isLoading: true }));
|
|
41
|
+
fetchAndUpdateNotifications(notificationsClient);
|
|
42
|
+
const interval = setInterval(() => {
|
|
43
|
+
fetchAndUpdateNotifications(notificationsClient);
|
|
44
|
+
}, NOTIFICATIONS_QUERY_INTERVAL);
|
|
45
|
+
return () => clearInterval(interval);
|
|
39
46
|
}
|
|
40
47
|
}
|
|
41
48
|
else {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
49
|
+
setNotificationsClient(null);
|
|
50
|
+
}
|
|
51
|
+
return () => { };
|
|
52
|
+
}, [identity]);
|
|
53
|
+
useEffect(() => {
|
|
54
|
+
const isClosing = !isOpen;
|
|
55
|
+
if (isClosing) {
|
|
56
|
+
const unreadNotificationsIds = notifications.filter(notification => !notification.read).map(notification => notification.id);
|
|
57
|
+
if (unreadNotificationsIds.length && notificationsClient) {
|
|
58
|
+
try {
|
|
59
|
+
notificationsClient.markNotificationsAsRead(unreadNotificationsIds);
|
|
60
|
+
setUserNotifications(prevState => ({
|
|
61
|
+
...prevState,
|
|
62
|
+
notifications: prevState.notifications.map(notification => ({
|
|
63
|
+
...notification,
|
|
64
|
+
read: unreadNotificationsIds.includes(notification.id) ? true : notification.read
|
|
65
|
+
}))
|
|
66
|
+
}));
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
console.error('Error marking notifications as read:', error);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
55
72
|
}
|
|
73
|
+
}, [isOpen]);
|
|
74
|
+
const handleNotificationsOpen = () => {
|
|
75
|
+
setNotificationsState(prevState => {
|
|
76
|
+
return { ...prevState, isOpen: !prevState.isOpen };
|
|
77
|
+
});
|
|
56
78
|
};
|
|
57
79
|
const handleOnChangeModalTab = (tab) => setNotificationsState(prevState => ({
|
|
58
80
|
...prevState,
|
|
59
81
|
activeTab: tab
|
|
60
82
|
}));
|
|
61
|
-
const fetchNotificationsState = () => {
|
|
62
|
-
setUserNotifications({ notifications: [], isLoading: true });
|
|
63
|
-
notificationsClient?.getNotifications().then(retrievedNotifications => {
|
|
64
|
-
setUserNotifications({
|
|
65
|
-
isLoading: false,
|
|
66
|
-
notifications: retrievedNotifications.filter(notification => CURRENT_AVAILABLE_NOTIFICATIONS.includes(notification.type))
|
|
67
|
-
});
|
|
68
|
-
});
|
|
69
|
-
};
|
|
70
83
|
const handleRenderProfile = useCallback((address) => {
|
|
71
84
|
return (React.createElement(Profile, { address: address, as: "a", href: `${getBaseUrl()}/profile/accounts/${address}`, style: { fontWeight: 500, color: 'white', textDecoration: 'none' }, target: "_blank" }));
|
|
72
85
|
}, []);
|
|
73
|
-
useEffect(() => {
|
|
74
|
-
if (identity && isNotificationsEnabled) {
|
|
75
|
-
fetchNotificationsState();
|
|
76
|
-
const interval = setInterval(() => {
|
|
77
|
-
fetchNotificationsState();
|
|
78
|
-
}, NOTIFICATIONS_QUERY_INTERVAL);
|
|
79
|
-
return () => {
|
|
80
|
-
clearInterval(interval);
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
return () => { };
|
|
84
|
-
}, [identity]);
|
|
85
86
|
return {
|
|
86
87
|
notificationsClient,
|
|
87
88
|
notifications,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useNotifications.js","sourceRoot":"","sources":["../../src/hooks/useNotifications.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"useNotifications.js","sourceRoot":"","sources":["../../src/hooks/useNotifications.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ChainId } from '@dcl/schemas/dist/dapps/chain-id';
|
|
2
|
-
import { Authorization, AuthorizationAction } from './types';
|
|
2
|
+
import { Authorization, AuthorizationAction, AuthorizationOptions } from './types';
|
|
3
3
|
export declare const FETCH_AUTHORIZATIONS_REQUEST = "[Request] Fetch Authorizations";
|
|
4
4
|
export declare const FETCH_AUTHORIZATIONS_SUCCESS = "[Success] Fetch Authorizations";
|
|
5
5
|
export declare const FETCH_AUTHORIZATIONS_FAILURE = "[Failure] Fetch Authorizations";
|
|
@@ -76,11 +76,13 @@ export declare const AUTHORIZATION_FLOW_REQUEST = "[Request] Authorization Flow"
|
|
|
76
76
|
export declare const AUTHORIZATION_FLOW_SUCCESS = "[Success] Authorization Flow";
|
|
77
77
|
export declare const AUTHORIZATION_FLOW_FAILURE = "[Failure] Authorization Flow";
|
|
78
78
|
export declare const AUTHORIZATION_FLOW_CLEAR = "[Clear] Authorization Flow";
|
|
79
|
-
export declare const authorizationFlowRequest: (authorization: Authorization, authorizationAction: AuthorizationAction,
|
|
79
|
+
export declare const authorizationFlowRequest: (authorization: Authorization, authorizationAction: AuthorizationAction, options?: AuthorizationOptions) => import("typesafe-actions/dist/types").PayloadAction<"[Request] Authorization Flow", {
|
|
80
80
|
authorization: Authorization;
|
|
81
81
|
authorizationAction: AuthorizationAction;
|
|
82
|
-
|
|
82
|
+
requiredAllowance: string | undefined;
|
|
83
|
+
currentAllowance: string | undefined;
|
|
83
84
|
traceId: string | undefined;
|
|
85
|
+
onAuthorized: (() => void) | undefined;
|
|
84
86
|
}>;
|
|
85
87
|
export declare const authorizationFlowSuccess: (authorization: Authorization) => import("typesafe-actions/dist/types").PayloadAction<"[Success] Authorization Flow", {
|
|
86
88
|
authorization: Authorization;
|
|
@@ -44,11 +44,13 @@ export const AUTHORIZATION_FLOW_REQUEST = '[Request] Authorization Flow';
|
|
|
44
44
|
export const AUTHORIZATION_FLOW_SUCCESS = '[Success] Authorization Flow';
|
|
45
45
|
export const AUTHORIZATION_FLOW_FAILURE = '[Failure] Authorization Flow';
|
|
46
46
|
export const AUTHORIZATION_FLOW_CLEAR = '[Clear] Authorization Flow';
|
|
47
|
-
export const authorizationFlowRequest = (authorization, authorizationAction,
|
|
47
|
+
export const authorizationFlowRequest = (authorization, authorizationAction, options) => action(AUTHORIZATION_FLOW_REQUEST, {
|
|
48
48
|
authorization,
|
|
49
49
|
authorizationAction,
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
requiredAllowance: options?.requiredAllowance,
|
|
51
|
+
currentAllowance: options?.currentAllowance,
|
|
52
|
+
traceId: options?.traceId,
|
|
53
|
+
onAuthorized: options?.onAuthorized
|
|
52
54
|
});
|
|
53
55
|
export const authorizationFlowSuccess = (authorization) => action(AUTHORIZATION_FLOW_SUCCESS, {
|
|
54
56
|
authorization
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../../../src/modules/authorization/actions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../../../src/modules/authorization/actions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { put, call, takeEvery, take, select, race } from 'redux-saga/effects';
|
|
1
|
+
import { put, call, takeEvery, take, select, race, fork } from 'redux-saga/effects';
|
|
2
2
|
import { providers } from '@0xsequence/multicall';
|
|
3
|
-
import { ethers } from 'ethers';
|
|
3
|
+
import { BigNumber, ethers } from 'ethers';
|
|
4
4
|
import { getContract } from 'decentraland-transactions';
|
|
5
5
|
import { getNetworkProvider } from '../../lib/eth';
|
|
6
6
|
import { sendTransaction } from '../wallet/utils/sendTransaction';
|
|
@@ -116,8 +116,7 @@ export function createAuthorizationSaga() {
|
|
|
116
116
|
yield put(revokeTokenFailure(authorization, error.message));
|
|
117
117
|
}
|
|
118
118
|
}
|
|
119
|
-
function*
|
|
120
|
-
const { authorizationAction, authorization, allowance, traceId } = action.payload;
|
|
119
|
+
function* authorizeAndWaitForTx(authorization, authorizationAction, traceId) {
|
|
121
120
|
const isRevoke = authorizationAction === AuthorizationAction.REVOKE;
|
|
122
121
|
const tokenRequest = isRevoke
|
|
123
122
|
? revokeTokenRequest(authorization)
|
|
@@ -125,18 +124,34 @@ export function createAuthorizationSaga() {
|
|
|
125
124
|
const TOKEN_SUCCESS = isRevoke ? REVOKE_TOKEN_SUCCESS : GRANT_TOKEN_SUCCESS;
|
|
126
125
|
const TOKEN_FAILURE = isRevoke ? REVOKE_TOKEN_FAILURE : GRANT_TOKEN_FAILURE;
|
|
127
126
|
yield put(tokenRequest);
|
|
127
|
+
const { success, failure } = yield race({
|
|
128
|
+
success: take(TOKEN_SUCCESS),
|
|
129
|
+
failure: take(TOKEN_FAILURE)
|
|
130
|
+
});
|
|
131
|
+
if (failure) {
|
|
132
|
+
throw new Error(failure.payload.error);
|
|
133
|
+
}
|
|
134
|
+
const analytics = getAnalytics();
|
|
135
|
+
analytics.track(`[Authorization Flow] ${isRevoke ? 'Revoke' : 'Grant'} Transaction Approved in Wallet`, { traceId });
|
|
136
|
+
const txHash = getTransactionHashFromAction(success);
|
|
137
|
+
yield call(waitForTx, txHash);
|
|
138
|
+
}
|
|
139
|
+
function* handleAuthorizationFlowRequest(action) {
|
|
140
|
+
const { authorizationAction, authorization, requiredAllowance, currentAllowance, traceId, onAuthorized } = action.payload;
|
|
128
141
|
try {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
142
|
+
// If we're building an allowance request, we need to check if the user has any allowance set
|
|
143
|
+
// If they have it already set, we need to revoke it before granting the new allowance
|
|
144
|
+
if (authorizationAction === AuthorizationAction.GRANT &&
|
|
145
|
+
authorization.type === AuthorizationType.ALLOWANCE &&
|
|
146
|
+
requiredAllowance !== undefined &&
|
|
147
|
+
currentAllowance !== undefined &&
|
|
148
|
+
!BigNumber.from(currentAllowance).isZero() &&
|
|
149
|
+
onAuthorized) {
|
|
150
|
+
// Build revoke request
|
|
151
|
+
yield call(authorizeAndWaitForTx, authorization, AuthorizationAction.REVOKE, traceId ?? 'Unknown trace id');
|
|
135
152
|
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
const txHash = getTransactionHashFromAction(success);
|
|
139
|
-
yield call(waitForTx, txHash);
|
|
153
|
+
// Perform the solicited action
|
|
154
|
+
yield call(authorizeAndWaitForTx, authorization, authorizationAction, traceId ?? 'Unknown trace id');
|
|
140
155
|
yield put(fetchAuthorizationsRequest([authorization]));
|
|
141
156
|
const { fetchFailure } = yield race({
|
|
142
157
|
fetchSuccess: take(FETCH_AUTHORIZATIONS_SUCCESS),
|
|
@@ -153,8 +168,8 @@ export function createAuthorizationSaga() {
|
|
|
153
168
|
}
|
|
154
169
|
if (authorizationAction === AuthorizationAction.GRANT) {
|
|
155
170
|
if (authorization.type === AuthorizationType.ALLOWANCE &&
|
|
156
|
-
|
|
157
|
-
!hasAuthorizationAndEnoughAllowance(authorizations, authorization,
|
|
171
|
+
requiredAllowance &&
|
|
172
|
+
!hasAuthorizationAndEnoughAllowance(authorizations, authorization, requiredAllowance)) {
|
|
158
173
|
throw new Error(AuthorizationError.INSUFFICIENT_ALLOWANCE);
|
|
159
174
|
}
|
|
160
175
|
if ((authorization.type === AuthorizationType.APPROVAL ||
|
|
@@ -163,6 +178,9 @@ export function createAuthorizationSaga() {
|
|
|
163
178
|
throw new Error(AuthorizationError.GRANT_FAILED);
|
|
164
179
|
}
|
|
165
180
|
}
|
|
181
|
+
if (onAuthorized) {
|
|
182
|
+
yield fork(onAuthorized);
|
|
183
|
+
}
|
|
166
184
|
yield put(authorizationFlowSuccess(authorization));
|
|
167
185
|
}
|
|
168
186
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sagas.js","sourceRoot":"","sources":["../../../src/modules/authorization/sagas.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"sagas.js","sourceRoot":"","sources":["../../../src/modules/authorization/sagas.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,8 +19,12 @@ export type Authorization = {
|
|
|
19
19
|
allowance?: string;
|
|
20
20
|
};
|
|
21
21
|
export type AuthorizationOptions = {
|
|
22
|
+
/** The minimum allowance amount required for the authorization in wei */
|
|
22
23
|
requiredAllowance?: string;
|
|
24
|
+
/** The current allowance amount that has been already approved in wei */
|
|
23
25
|
currentAllowance?: string;
|
|
26
|
+
/** Callback function to be executed when the authorization is granted */
|
|
24
27
|
onAuthorized?: () => void;
|
|
28
|
+
/** Unique identifier for tracking the authorization process */
|
|
25
29
|
traceId?: string;
|
|
26
30
|
};
|
|
@@ -16,7 +16,7 @@ export declare class FailedTransactionError extends Error {
|
|
|
16
16
|
status: TransactionStatus;
|
|
17
17
|
constructor(hash: string, status: TransactionStatus);
|
|
18
18
|
}
|
|
19
|
-
export declare function handleCrossChainTransactionRequest(action: FetchTransactionRequestAction, config?: TransactionsConfig): Generator<Promise<new (...args: any[]) => import("decentraland-transactions/esm/crossChain/types").CrossChainProvider> | import("redux-saga/effects").
|
|
19
|
+
export declare function handleCrossChainTransactionRequest(action: FetchTransactionRequestAction, config?: TransactionsConfig): Generator<Promise<new (...args: any[]) => import("decentraland-transactions/esm/crossChain/types").CrossChainProvider> | import("redux-saga/effects").CallEffect<true> | import("redux-saga/effects").SelectEffect | import("redux-saga/effects").CallEffect<import("@0xsquid/sdk/dist/types").StatusResponse> | import("redux-saga/effects").PutEffect<import("typesafe-actions/dist/types").PayloadAction<"Update Transaction Status", {
|
|
20
20
|
hash: string;
|
|
21
21
|
status: TransactionStatus | null;
|
|
22
22
|
}>> | import("redux-saga/effects").CallEffect<number> | import("redux-saga/effects").PutEffect<import("typesafe-actions/dist/types").PayloadAction<"[Success] Fetch Transaction", {
|
|
@@ -40,7 +40,7 @@ export declare function handleCrossChainTransactionRequest(action: FetchTransact
|
|
|
40
40
|
routeStatus?: any;
|
|
41
41
|
squidTransactionStatus?: string | undefined;
|
|
42
42
|
} & Transaction & number>;
|
|
43
|
-
export declare function handleRegularTransactionRequest(action: FetchTransactionRequestAction): Generator<import("redux-saga/effects").
|
|
43
|
+
export declare function handleRegularTransactionRequest(action: FetchTransactionRequestAction): Generator<import("redux-saga/effects").CallEffect<true> | import("redux-saga/effects").SelectEffect | import("redux-saga/effects").PutEffect<import("typesafe-actions/dist/types").PayloadAction<"Update Transaction Status", {
|
|
44
44
|
hash: string;
|
|
45
45
|
status: TransactionStatus | null;
|
|
46
46
|
}>> | import("redux-saga/effects").CallEffect<number> | import("redux-saga/effects").PutEffect<import("typesafe-actions/dist/types").PayloadAction<"[Success] Fetch Transaction", {
|
|
@@ -61,7 +61,7 @@ export declare function handleRegularTransactionRequest(action: FetchTransaction
|
|
|
61
61
|
hash: string;
|
|
62
62
|
}>>, void, Transaction & AnyTransaction & number>;
|
|
63
63
|
export declare function getFibonacciDelay(attempt: number): Generator<never, number, unknown>;
|
|
64
|
-
export declare function handleReplaceTransactionRequest(action: ReplaceTransactionRequestAction): Generator<import("redux-saga/effects").
|
|
64
|
+
export declare function handleReplaceTransactionRequest(action: ReplaceTransactionRequestAction): Generator<import("redux-saga/effects").CallEffect<true> | import("redux-saga/effects").SelectEffect | import("redux-saga/effects").PutEffect<import("typesafe-actions/dist/types").PayloadAction<"Update Transaction Status", {
|
|
65
65
|
hash: string;
|
|
66
66
|
status: TransactionStatus | null;
|
|
67
67
|
}>> | import("redux-saga/effects").CallEffect<number> | import("redux-saga/effects").CallEffect<AnyTransaction | null> | import("redux-saga/effects").CallEffect<ethers.providers.Web3Provider> | import("redux-saga/effects").PutEffect<import("typesafe-actions/dist/types").PayloadAction<"[Request] Fetch Transaction", {
|
|
@@ -77,7 +77,7 @@ export declare function handleWatchPendingTransactions(): Generator<import("redu
|
|
|
77
77
|
status: TransactionStatus | null;
|
|
78
78
|
}>>, void, Transaction[]>;
|
|
79
79
|
export declare function handleWatchDroppedTransactions(): Generator<import("redux-saga/effects").SelectEffect | ForkEffect<void>, void, Transaction[]>;
|
|
80
|
-
export declare function handleWatchRevertedTransaction(action: WatchRevertedTransactionAction): Generator<import("redux-saga/effects").
|
|
80
|
+
export declare function handleWatchRevertedTransaction(action: WatchRevertedTransactionAction): Generator<import("redux-saga/effects").CallEffect<true> | import("redux-saga/effects").SelectEffect | import("redux-saga/effects").CallEffect<number> | import("redux-saga/effects").CallEffect<AnyTransaction | null> | import("redux-saga/effects").PutEffect<import("typesafe-actions/dist/types").PayloadAction<"[Request] Replace Transaction", {
|
|
81
81
|
hash: string;
|
|
82
82
|
nonce: number;
|
|
83
83
|
address: string;
|