Merge branch 'development' into feature/instant/token-picker-events
This commit is contained in:
19
.github/stale.yml
vendored
Normal file
19
.github/stale.yml
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
# Number of days of inactivity before an issue becomes stale
|
||||
daysUntilStale: 30
|
||||
# Number of days of inactivity before a stale issue is closed
|
||||
daysUntilClose: 7
|
||||
# Issues with these labels will never be considered stale
|
||||
exemptLabels:
|
||||
- pinned
|
||||
- security
|
||||
# Label to use when marking an issue as stale
|
||||
staleLabel: stale
|
||||
# Comment to post when marking an issue as stale. Set to `false` to disable
|
||||
markComment: >
|
||||
This issue has been automatically marked as stale because it has not had
|
||||
recent activity. It will be closed if no further activity occurs. Thank you
|
||||
for your contributions.
|
||||
# Comment to post when closing a stale issue. Set to `false` to disable
|
||||
closeComment: >
|
||||
This issue has been automatically closed because no activity occured in 7 days after being marked as stale. If it's still relevant - feel free to reopen. Thank you
|
||||
for your contributions.
|
||||
@@ -28,7 +28,7 @@
|
||||
"build:monorepo_scripts": "PKG=@0x/monorepo-scripts yarn build",
|
||||
"build:ts": "tsc -b",
|
||||
"watch:ts": "tsc -b -w",
|
||||
"clean": "wsrun clean $PKG --fast-exit -r --parallel",
|
||||
"clean": "wsrun clean $PKG --fast-exit -r --parallel --exclude-missing",
|
||||
"remove_node_modules": "lerna clean --yes; rm -rf node_modules",
|
||||
"rebuild": "run-s clean build",
|
||||
"rebuild:no_website": "run-s clean build:no_website",
|
||||
|
||||
@@ -1,4 +1,14 @@
|
||||
[
|
||||
{
|
||||
"name": "OrderValidator",
|
||||
"version": "1.0.1",
|
||||
"changes": [
|
||||
{
|
||||
"note": "remove `getApproved` check from ERC721 approval query",
|
||||
"pr": 1149
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Forwarder",
|
||||
"version": "1.1.0",
|
||||
|
||||
@@ -148,7 +148,7 @@ contract OrderValidator {
|
||||
balance = target == owner ? 1 : 0;
|
||||
|
||||
// Check if ERC721Proxy is approved to spend tokenId
|
||||
bool isApproved = IERC721Token(token).isApprovedForAll(target, assetProxy) || IERC721Token(token).getApproved(tokenId) == assetProxy;
|
||||
bool isApproved = IERC721Token(token).isApprovedForAll(target, assetProxy);
|
||||
|
||||
// Set alowance to 1 if ERC721Proxy is approved to spend tokenId
|
||||
allowance = isApproved ? 1 : 0;
|
||||
|
||||
@@ -198,7 +198,7 @@ describe('OrderValidator', () => {
|
||||
);
|
||||
expect(newAllowance).to.be.bignumber.equal(ERC721_ALLOWANCE);
|
||||
});
|
||||
it('should return an allowance of 1 when ERC721Proxy is approved for specific tokenId', async () => {
|
||||
it('should return an allowance of 0 when ERC721Proxy is approved for specific tokenId', async () => {
|
||||
await web3Wrapper.awaitTransactionSuccessAsync(
|
||||
await erc721Token.mint.sendTransactionAsync(makerAddress, tokenId),
|
||||
constants.AWAIT_TRANSACTION_MINED_MS,
|
||||
@@ -213,7 +213,7 @@ describe('OrderValidator', () => {
|
||||
makerAddress,
|
||||
erc721AssetData,
|
||||
);
|
||||
expect(newAllowance).to.be.bignumber.equal(ERC721_ALLOWANCE);
|
||||
expect(newAllowance).to.be.bignumber.equal(constants.ZERO_AMOUNT);
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -248,8 +248,9 @@ describe('OrderValidator', () => {
|
||||
await erc721Token.mint.sendTransactionAsync(makerAddress, tokenId),
|
||||
constants.AWAIT_TRANSACTION_MINED_MS,
|
||||
);
|
||||
const isApproved = true;
|
||||
await web3Wrapper.awaitTransactionSuccessAsync(
|
||||
await erc721Token.approve.sendTransactionAsync(erc721Proxy.address, tokenId, {
|
||||
await erc721Token.setApprovalForAll.sendTransactionAsync(erc721Proxy.address, isApproved, {
|
||||
from: makerAddress,
|
||||
}),
|
||||
constants.AWAIT_TRANSACTION_MINED_MS,
|
||||
@@ -311,8 +312,9 @@ describe('OrderValidator', () => {
|
||||
await erc721Token.mint.sendTransactionAsync(takerAddress, tokenId),
|
||||
constants.AWAIT_TRANSACTION_MINED_MS,
|
||||
);
|
||||
const isApproved = true;
|
||||
await web3Wrapper.awaitTransactionSuccessAsync(
|
||||
await erc721Token.approve.sendTransactionAsync(erc721Proxy.address, tokenId, {
|
||||
await erc721Token.setApprovalForAll.sendTransactionAsync(erc721Proxy.address, isApproved, {
|
||||
from: takerAddress,
|
||||
}),
|
||||
constants.AWAIT_TRANSACTION_MINED_MS,
|
||||
@@ -465,8 +467,9 @@ describe('OrderValidator', () => {
|
||||
await erc721Token.mint.sendTransactionAsync(takerAddress, tokenId),
|
||||
constants.AWAIT_TRANSACTION_MINED_MS,
|
||||
);
|
||||
const isApproved = true;
|
||||
await web3Wrapper.awaitTransactionSuccessAsync(
|
||||
await erc721Token.approve.sendTransactionAsync(erc721Proxy.address, tokenId, {
|
||||
await erc721Token.setApprovalForAll.sendTransactionAsync(erc721Proxy.address, isApproved, {
|
||||
from: takerAddress,
|
||||
}),
|
||||
constants.AWAIT_TRANSACTION_MINED_MS,
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
"engines": {
|
||||
"node": ">=6.12"
|
||||
},
|
||||
"private": true,
|
||||
"description": "0x Instant React Component",
|
||||
"main": "lib/index.js",
|
||||
"types": "lib/index.d.ts",
|
||||
|
||||
@@ -64,6 +64,9 @@ export class ERC20AssetAmountInput extends React.Component<ERC20AssetAmountInput
|
||||
maxFontSizePx={this.props.startingFontSizePx}
|
||||
onAmountChange={this._handleChange}
|
||||
onFontSizeChange={this._handleFontSizeChange}
|
||||
hasAutofocus={true}
|
||||
/* We send in a key of asset data to force a rerender of this component when the user selects a new asset. We do this so the autofocus attribute will bring focus onto this input */
|
||||
key={asset.assetData}
|
||||
/>
|
||||
</Container>
|
||||
<Container
|
||||
|
||||
@@ -107,7 +107,7 @@ export class InstantHeading extends React.Component<InstantHeadingProps, {}> {
|
||||
|
||||
private readonly _renderEthAmount = (): React.ReactNode => {
|
||||
return (
|
||||
<Text fontSize="16px" fontColor={ColorOption.white} fontWeight={500}>
|
||||
<Text fontSize="16px" textAlign="right" width="100%" fontColor={ColorOption.white} fontWeight={500}>
|
||||
{format.ethBaseUnitAmount(
|
||||
this.props.totalEthBaseUnitAmount,
|
||||
4,
|
||||
@@ -119,7 +119,7 @@ export class InstantHeading extends React.Component<InstantHeadingProps, {}> {
|
||||
|
||||
private readonly _renderDollarAmount = (): React.ReactNode => {
|
||||
return (
|
||||
<Text fontSize="16px" fontColor={ColorOption.white}>
|
||||
<Text fontSize="16px" textAlign="right" width="100%" fontColor={ColorOption.white}>
|
||||
{format.ethBaseUnitAmountInUsd(
|
||||
this.props.totalEthBaseUnitAmount,
|
||||
this.props.ethUsdPrice,
|
||||
|
||||
@@ -18,6 +18,7 @@ export interface ScalingAmountInputProps {
|
||||
value?: BigNumber;
|
||||
onAmountChange: (value?: BigNumber) => void;
|
||||
onFontSizeChange: (fontSizePx: number) => void;
|
||||
hasAutofocus: boolean;
|
||||
}
|
||||
interface ScalingAmountInputState {
|
||||
stringValue: string;
|
||||
@@ -29,6 +30,7 @@ export class ScalingAmountInput extends React.Component<ScalingAmountInputProps,
|
||||
onAmountChange: util.boundNoop,
|
||||
onFontSizeChange: util.boundNoop,
|
||||
isDisabled: false,
|
||||
hasAutofocus: false,
|
||||
};
|
||||
public constructor(props: ScalingAmountInputProps) {
|
||||
super(props);
|
||||
@@ -64,6 +66,7 @@ export class ScalingAmountInput extends React.Component<ScalingAmountInputProps,
|
||||
placeholder="0.00"
|
||||
emptyInputWidthCh={3.5}
|
||||
isDisabled={this.props.isDisabled}
|
||||
hasAutofocus={this.props.hasAutofocus}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@ export interface ScalingInputProps {
|
||||
maxLength?: number;
|
||||
scalingSettings: ScalingSettings;
|
||||
isDisabled: boolean;
|
||||
hasAutofocus: boolean;
|
||||
}
|
||||
|
||||
export interface ScalingInputState {
|
||||
@@ -51,6 +52,7 @@ export class ScalingInput extends React.Component<ScalingInputProps, ScalingInpu
|
||||
maxLength: 7,
|
||||
scalingSettings: defaultScalingSettings,
|
||||
isDisabled: false,
|
||||
hasAutofocus: false,
|
||||
};
|
||||
public state: ScalingInputState = {
|
||||
inputWidthPxAtPhaseChange: undefined,
|
||||
@@ -123,7 +125,7 @@ export class ScalingInput extends React.Component<ScalingInputProps, ScalingInpu
|
||||
}
|
||||
}
|
||||
public render(): React.ReactNode {
|
||||
const { isDisabled, fontColor, onChange, placeholder, value, maxLength } = this.props;
|
||||
const { hasAutofocus, isDisabled, fontColor, onChange, placeholder, value, maxLength } = this.props;
|
||||
const phase = ScalingInput.getPhaseFromProps(this.props);
|
||||
return (
|
||||
<Input
|
||||
@@ -136,6 +138,7 @@ export class ScalingInput extends React.Component<ScalingInputProps, ScalingInpu
|
||||
width={this._calculateWidth(phase)}
|
||||
maxLength={maxLength}
|
||||
disabled={isDisabled}
|
||||
autoFocus={hasAutofocus}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ export interface TextProps {
|
||||
fontSize?: string;
|
||||
opacity?: number;
|
||||
letterSpacing?: string;
|
||||
textAlign?: string;
|
||||
textTransform?: string;
|
||||
lineHeight?: string;
|
||||
className?: string;
|
||||
@@ -22,6 +23,7 @@ export interface TextProps {
|
||||
noWrap?: boolean;
|
||||
display?: string;
|
||||
href?: string;
|
||||
width?: string;
|
||||
}
|
||||
|
||||
export const Text: React.StatelessComponent<TextProps> = ({ href, onClick, ...rest }) => {
|
||||
@@ -51,6 +53,8 @@ export const StyledText =
|
||||
${props => (props.display ? `display: ${props.display}` : '')};
|
||||
${props => (props.letterSpacing ? `letter-spacing: ${props.letterSpacing}` : '')};
|
||||
${props => (props.textTransform ? `text-transform: ${props.textTransform}` : '')};
|
||||
${props => (props.textAlign ? `text-align: ${props.textAlign}` : '')};
|
||||
${props => (props.width ? `width: ${props.width}` : '')};
|
||||
&:hover {
|
||||
${props =>
|
||||
props.onClick ? `color: ${darken(darkenOnHoverAmount, props.theme[props.fontColor || 'white'])}` : ''};
|
||||
|
||||
Reference in New Issue
Block a user