update all deps, use react-redux-devtools

This commit is contained in:
2019-02-08 14:11:59 +03:00
parent 3c8dbc14aa
commit 684729fa54
11 changed files with 531 additions and 312 deletions

View File

@@ -827,11 +827,11 @@
}
},
"@blueprintjs/core": {
"version": "3.10.0",
"resolved": "https://registry.npmjs.org/@blueprintjs/core/-/core-3.10.0.tgz",
"integrity": "sha512-GAxyOQBwRaVEaE/5KVRVuhYuo3ihjn6uhKuzyBta6kHvdBdk5m+1S3v0o1bzzvnJHyeJzBZQOq684q+FJCLNoQ==",
"version": "3.13.0",
"resolved": "https://registry.npmjs.org/@blueprintjs/core/-/core-3.13.0.tgz",
"integrity": "sha512-4+DqwflyOLbdHCLXA67UWKP8Efq7bKphIEkHfMdzxWkyXvqYm82YzTTh6T4wt8IKGsjdKQq9gE1lt8peJH8J6w==",
"requires": {
"@blueprintjs/icons": "^3.4.0",
"@blueprintjs/icons": "^3.6.0",
"@types/dom4": "^2.0.0",
"classnames": "^2.2",
"dom4": "^2.0.1",
@@ -844,9 +844,9 @@
}
},
"@blueprintjs/icons": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/@blueprintjs/icons/-/icons-3.4.0.tgz",
"integrity": "sha512-e7YqPzDYjXJquBD4+ZAKkIcVt52MusaEb7mbYGb8ikVXS3wVDhYOc+5csMK++uwMzIm0fqmFUZe8We3eeegprw==",
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/@blueprintjs/icons/-/icons-3.6.0.tgz",
"integrity": "sha512-sgB6rJtMjc2mS4aCS+65gK5DCr8fiWgOYi0buc0ODvGD2fwOtOFZuE4Duuj6/GZnCYj4s7E8NZgYK9Krd7G73Q==",
"requires": {
"classnames": "^2.2",
"tslib": "^1.9.0"
@@ -924,6 +924,53 @@
"physical-cpu-count": "^2.0.0"
}
},
"@redux-saga/core": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@redux-saga/core/-/core-1.0.1.tgz",
"integrity": "sha512-e/rvF5jA/2BBLHwQWIwRVSbD8ylQAUXp0zaCUJrfDQmsKGY2VJbcUdSgkM4rxRss9d4U/c2Oa0D9o5geDCup0w==",
"requires": {
"@babel/runtime": "^7.0.0",
"@redux-saga/deferred": "^1.0.1",
"@redux-saga/delay-p": "^1.0.1",
"@redux-saga/is": "^1.0.1",
"@redux-saga/symbols": "^1.0.1",
"@redux-saga/types": "^1.0.0",
"redux": ">=0.10 <5",
"typescript-tuple": "^2.1.0"
}
},
"@redux-saga/deferred": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@redux-saga/deferred/-/deferred-1.0.1.tgz",
"integrity": "sha512-+gW5xQ93QXOOmRLAmX8x2Hx1HpbTG6CM6+HcdTSbJovh4uMWaGyeDECnqXSt8QqA/ja3s2nqYXLqXFKepIQ1hw=="
},
"@redux-saga/delay-p": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@redux-saga/delay-p/-/delay-p-1.0.1.tgz",
"integrity": "sha512-0SnNDyDLUyB4NThtptAwiprNOnbCNhoed/Rp5JwS7SB+a/AdWynVgg/E6BmjsggLFNr07KW0bzn05tsPRBuU7Q==",
"requires": {
"@redux-saga/symbols": "^1.0.1"
}
},
"@redux-saga/is": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@redux-saga/is/-/is-1.0.1.tgz",
"integrity": "sha512-hOm7MyvGToJX6aeYkKmoL88a/7bzD8PXP1yPfELEgrKeiN5oBvMTbZ0LNU3boM3HJcYuiyjZED9qw12YpmXGAA==",
"requires": {
"@redux-saga/symbols": "^1.0.1",
"@redux-saga/types": "^1.0.0"
}
},
"@redux-saga/symbols": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@redux-saga/symbols/-/symbols-1.0.1.tgz",
"integrity": "sha512-akKkzcVnb1RzJaZV2LQFbi51abvdICMuAKwwLoCjjxLbLAGIw9EJxk5ucNnWSSCEsoEQMeol5tkAcK+Xzuv1Bg=="
},
"@redux-saga/types": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@redux-saga/types/-/types-1.0.0.tgz",
"integrity": "sha512-9I7ejD0kASU3H8gD6Wv8Y3F9VabNdvjE8apkGfSphCAjt46snJKjt79CnHdxo1xkTE0qMEZzmYmZ8hnIYDydhw=="
},
"@types/dom4": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/@types/dom4/-/dom4-2.0.1.tgz",
@@ -969,9 +1016,9 @@
"dev": true
},
"@types/react": {
"version": "16.7.18",
"resolved": "https://registry.npmjs.org/@types/react/-/react-16.7.18.tgz",
"integrity": "sha512-Tx4uu3ppK53/iHk6VpamMP3f3ahfDLEVt3ZQc8TFm30a1H3v9lMsCntBREswZIW/SKrvJjkb3Hq8UwO6GREBng==",
"version": "16.8.2",
"resolved": "https://registry.npmjs.org/@types/react/-/react-16.8.2.tgz",
"integrity": "sha512-6mcKsqlqkN9xADrwiUz2gm9Wg4iGnlVGciwBRYFQSMWG6MQjhOZ/AVnxn+6v8nslFgfYTV8fNdE6XwKu6va5PA==",
"dev": true,
"requires": {
"@types/prop-types": "*",
@@ -979,18 +1026,18 @@
}
},
"@types/react-dom": {
"version": "16.0.11",
"resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.0.11.tgz",
"integrity": "sha512-x6zUx9/42B5Kl2Vl9HlopV8JF64wLpX3c+Pst9kc1HgzrsH+mkehe/zmHMQTplIrR48H2gpU7ZqurQolYu8XBA==",
"version": "16.8.0",
"resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.8.0.tgz",
"integrity": "sha512-Jp4ufcEEjVJEB0OHq2MCZcE1u3KYUKO6WnSuiU/tZeYeiZxUoQavfa/TZeiIT+1XoN6l0lQVNM30VINZFDeolQ==",
"dev": true,
"requires": {
"@types/react": "*"
}
},
"@types/react-redux": {
"version": "6.0.11",
"resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-6.0.11.tgz",
"integrity": "sha512-I3POoeGGwNqZjbK7TfnPJS2C51TFvT0atQPz4M+xpVTrLMjsX37AAfcTF3XUOTnmxHsryEjwJN9r/ScGwSXdtg==",
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.0.1.tgz",
"integrity": "sha512-+DIH7TI2MT4Ke4lOrRMgNy//DzTDIzv5QwkJSD6AVrlsIgzf7yMM0JoWL5wJUXYwKQ2f1FgvwlvIVGD2QWQnew==",
"dev": true,
"requires": {
"@types/react": "*",
@@ -2450,9 +2497,9 @@
}
},
"csstype": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.0.tgz",
"integrity": "sha512-by8hi8BlLbowQq0qtkx54d9aN73R9oUW20HISpka5kmgsR9F7nnxgfsemuR2sdCKZh+CDNf5egW9UZMm4mgJRg==",
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.2.tgz",
"integrity": "sha512-Rl7PvTae0pflc1YtxtKbiSqq20Ts6vpIYOD5WBafl4y123DyHUeLrRdQP66sQW8/6gmX8jrYJLXwNeMqYVJcow==",
"dev": true
},
"currently-unhandled": {
@@ -4584,9 +4631,9 @@
"dev": true
},
"iconv-lite": {
"version": "0.4.23",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
"integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"requires": {
"safer-buffer": ">= 2.1.2 < 3"
}
@@ -6123,9 +6170,9 @@
}
},
"popper.js": {
"version": "1.14.6",
"resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.14.6.tgz",
"integrity": "sha512-AGwHGQBKumlk/MDfrSOf0JHhJCImdDMcGNoqKmKkU+68GFazv3CQ6q9r7Ja1sKDZmYWTckY/uLyEznheTDycnA=="
"version": "1.14.7",
"resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.14.7.tgz",
"integrity": "sha512-4q1hNvoUre/8srWsH7hnoSJ5xVmIL4qgz+s4qf2TnJIMyZFUFMGH+9vE7mXynAlHSZ/NdTmmow86muD0myUkVQ=="
},
"posix-character-classes": {
"version": "0.1.1",
@@ -7214,25 +7261,25 @@
}
},
"react": {
"version": "16.7.0",
"resolved": "https://registry.npmjs.org/react/-/react-16.7.0.tgz",
"integrity": "sha512-StCz3QY8lxTb5cl2HJxjwLFOXPIFQp+p+hxQfc8WE0QiLfCtIlKj8/+5tjjKm8uSTlAW+fCPaavGFS06V9Ar3A==",
"version": "16.8.1",
"resolved": "https://registry.npmjs.org/react/-/react-16.8.1.tgz",
"integrity": "sha512-wLw5CFGPdo7p/AgteFz7GblI2JPOos0+biSoxf1FPsGxWQZdN/pj6oToJs1crn61DL3Ln7mN86uZ4j74p31ELQ==",
"requires": {
"loose-envify": "^1.1.0",
"object-assign": "^4.1.1",
"prop-types": "^15.6.2",
"scheduler": "^0.12.0"
"scheduler": "^0.13.1"
}
},
"react-dom": {
"version": "16.7.0",
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.7.0.tgz",
"integrity": "sha512-D0Ufv1ExCAmF38P2Uh1lwpminZFRXEINJe53zRAbm4KPwSyd6DY/uDoS0Blj9jvPpn1+wivKpZYc8aAAN/nAkg==",
"version": "16.8.1",
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.8.1.tgz",
"integrity": "sha512-N74IZUrPt6UiDjXaO7UbDDFXeUXnVhZzeRLy/6iqqN1ipfjrhR60Bp5NuBK+rv3GMdqdIuwIl22u1SYwf330bg==",
"requires": {
"loose-envify": "^1.1.0",
"object-assign": "^4.1.1",
"prop-types": "^15.6.2",
"scheduler": "^0.12.0"
"scheduler": "^0.13.1"
}
},
"react-is": {
@@ -7246,9 +7293,9 @@
"integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
},
"react-popper": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/react-popper/-/react-popper-1.3.2.tgz",
"integrity": "sha512-UbFWj55Yt9uqvy0oZ+vULDL2Bw1oxeZF9/JzGyxQ5ypgauRH/XlarA5+HLZWro/Zss6Ht2kqpegtb6sYL8GUGw==",
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/react-popper/-/react-popper-1.3.3.tgz",
"integrity": "sha512-ynMZBPkXONPc5K4P5yFWgZx5JGAUIP3pGGLNs58cfAPgK67olx7fmLp+AdpZ0+GoQ+ieFDa/z4cdV6u7sioH6w==",
"requires": {
"@babel/runtime": "^7.1.2",
"create-react-context": "<=0.2.2",
@@ -7324,17 +7371,17 @@
}
},
"react-spring": {
"version": "7.2.7",
"resolved": "https://registry.npmjs.org/react-spring/-/react-spring-7.2.7.tgz",
"integrity": "sha512-UFPkQzPQMOf9E9GFprcGVfa+1EdnffQV6tvFGY+kck32orqgqKrfP54y8da3qP3T6hLnLkU77seVZOD7GYPNEg==",
"version": "8.0.4",
"resolved": "https://registry.npmjs.org/react-spring/-/react-spring-8.0.4.tgz",
"integrity": "sha512-cNAs+ChoA4ZcUnVzd0KjJpkZCWOQSO82FtvYS6JlCgt4aRvpg7qbeq5ySTzFnAHo02mj0vhqQWf5MVpBZexuYA==",
"requires": {
"@babel/runtime": "^7.0.0"
}
},
"react-transition-group": {
"version": "2.5.2",
"resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.5.2.tgz",
"integrity": "sha512-vwHP++S+f6KL7rg8V1mfs62+MBKtbMeZDR8KiNmD7v98Gs3UPGsDZDahPJH2PVprFW5YHJfh6cbNim3zPndaSQ==",
"version": "2.5.3",
"resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.5.3.tgz",
"integrity": "sha512-2DGFck6h99kLNr8pOFk+z4Soq3iISydwOFeeEVPjTN6+Y01CmvbWmnN02VuTWyFdnRtIDPe+wy2q6Ui8snBPZg==",
"requires": {
"dom-helpers": "^3.3.1",
"loose-envify": "^1.4.0",
@@ -7444,15 +7491,24 @@
"symbol-observable": "^1.2.0"
}
},
"redux-devtools-extension": {
"version": "2.13.8",
"resolved": "https://registry.npmjs.org/redux-devtools-extension/-/redux-devtools-extension-2.13.8.tgz",
"integrity": "sha512-8qlpooP2QqPtZHQZRhx3x3OP5skEV1py/zUdMY28WNAocbafxdG2tRD1MWE7sp8obGMNYuLWanhhQ7EQvT1FBg==",
"dev": true
},
"redux-persist": {
"version": "5.10.0",
"resolved": "https://registry.npmjs.org/redux-persist/-/redux-persist-5.10.0.tgz",
"integrity": "sha512-sSJAzNq7zka3qVHKce1hbvqf0Vf5DuTVm7dr4GtsqQVOexnrvbV47RWFiPxQ8fscnyiuWyD2O92DOxPl0tGCRg=="
},
"redux-saga": {
"version": "0.16.2",
"resolved": "https://registry.npmjs.org/redux-saga/-/redux-saga-0.16.2.tgz",
"integrity": "sha512-iIjKnRThI5sKPEASpUvySemjzwqwI13e3qP7oLub+FycCRDysLSAOwt958niZW6LhxfmS6Qm1BzbU70w/Koc4w=="
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/redux-saga/-/redux-saga-1.0.1.tgz",
"integrity": "sha512-XAp0OliRaoBCk/qynMfvXnTtC1WXrEpSqMwPKtOZHXVbQFekdcei/Eln/w0L7m3NcNxYQSlWwdUoffWzB1oAAQ==",
"requires": {
"@redux-saga/core": "^1.0.1"
}
},
"regenerate": {
"version": "1.4.0",
@@ -7723,9 +7779,9 @@
"dev": true
},
"scheduler": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.12.0.tgz",
"integrity": "sha512-t7MBR28Akcp4Jm+QoR63XgAi9YgCUmgvDHqf5otgAj4QvdoBE4ImCX0ffehefePPG+aitiYHp0g/mW6s4Tp+dw==",
"version": "0.13.1",
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.13.1.tgz",
"integrity": "sha512-VJKOkiKIN2/6NOoexuypwSrybx13MY7NSy9RNt8wPvZDMRT1CW6qlpF5jXRToXNHz3uWzbm2elNpZfXfGPqP9A==",
"requires": {
"loose-envify": "^1.1.0",
"object-assign": "^4.1.1"
@@ -8590,6 +8646,27 @@
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
"dev": true
},
"typescript-compare": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/typescript-compare/-/typescript-compare-0.0.2.tgz",
"integrity": "sha512-8ja4j7pMHkfLJQO2/8tut7ub+J3Lw2S3061eJLFQcvs3tsmJKp8KG5NtpLn7KcY2w08edF74BSVN7qJS0U6oHA==",
"requires": {
"typescript-logic": "^0.0.0"
}
},
"typescript-logic": {
"version": "0.0.0",
"resolved": "https://registry.npmjs.org/typescript-logic/-/typescript-logic-0.0.0.tgz",
"integrity": "sha512-zXFars5LUkI3zP492ls0VskH3TtdeHCqu0i7/duGt60i5IGPIpAHE/DWo5FqJ6EjQ15YKXrt+AETjv60Dat34Q=="
},
"typescript-tuple": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-2.1.1.tgz",
"integrity": "sha512-7jOyW+a6vGSfzpkgimnldfkvT5FEY7hURzdS8gXHBXCOZ7NZRqoXNvsEmkNNhPLbdXUbZexjFXQOz1CSn+7stg==",
"requires": {
"typescript-compare": "^0.0.2"
}
},
"ua-parser-js": {
"version": "0.7.19",
"resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.19.tgz",

View File

@@ -8,26 +8,27 @@
"devDependencies": {
"@types/node-sass": "^3.10.32",
"@types/parcel-bundler": "^1.10.1",
"@types/react": "^16.7.18",
"@types/react-dom": "^16.0.11",
"@types/react-redux": "^6.0.11",
"@types/react": "^16.8.2",
"@types/react-dom": "^16.8.0",
"@types/react-redux": "^7.0.1",
"@types/react-router": "^4.4.3",
"@types/react-router-dom": "^4.3.1",
"node-sass": "^4.11.0",
"parcel-bundler": "^1.11.0"
"parcel-bundler": "^1.11.0",
"redux-devtools-extension": "^2.13.8"
},
"dependencies": {
"@blueprintjs/core": "^3.10.0",
"@blueprintjs/icons": "^3.4.0",
"@blueprintjs/core": "^3.13.0",
"@blueprintjs/icons": "^3.6.0",
"rea": "0.0.1",
"react": "^16.7.0",
"react-dom": "^16.7.0",
"react": "^16.8.1",
"react-dom": "^16.8.1",
"react-redux": "^6.0.0",
"react-router": "^4.3.1",
"react-router-dom": "^4.3.1",
"react-spring": "^7.2.7",
"react-spring": "^8.0.4",
"redux": "^4.0.1",
"redux-persist": "^5.10.0",
"redux-saga": "^0.16.2"
"redux-saga": "^1.0.1"
}
}

View File

@@ -7,7 +7,7 @@ import {
Switch,
withRouter,
} from "react-router";
import { Transition } from "react-spring";
import { Transition } from "react-spring/renderprops";
import { IAppState } from "~redux/reducers";
import { Login } from "./Login";
@@ -45,7 +45,7 @@ export class AuthScreenComponent extends React.PureComponent<IAuthScreenProps> {
transform: "translate3d(400px,0,0)",
}}
>
{_location => style => (
{(_location: any) => (style: any) => (
<div style={style}>
<Switch location={_location}>
<Route path="/login" component={Login} />

View File

@@ -12,7 +12,7 @@ import { IAppState } from "~redux/reducers";
import { DocsList } from "./DocsList";
export interface IOverviewComponentProps {
all: IDocumentJSON[] | null;
all: { [key: number]: IDocumentJSON };
fetching: boolean;
spinner: boolean;
@@ -35,7 +35,8 @@ export class OverviewComponent extends React.PureComponent<
public render() {
if (this.props.all) {
const recent = [...this.props.all];
const docs = Object.values(this.props.all);
const recent = [...docs];
recent.sort((a, b) => b.editedAt - a.editedAt);
const recentCut = recent.splice(0, 4);
return (
@@ -47,7 +48,7 @@ export class OverviewComponent extends React.PureComponent<
<span className="separator" />
<div className="section">
<H3>All documents</H3>
<DocsList docs={this.props.all} />
<DocsList docs={docs} />
</div>
</div>
);

View File

@@ -1,8 +1,8 @@
import { delay } from "redux-saga";
import {
all,
call,
cancel,
delay,
fork,
put,
race,
@@ -31,7 +31,7 @@ function* authStart(action: IAuthStartAction) {
const { response, timeout } = yield race({
response: call(login, username, password),
timeout: call(delay, 10000),
timeout: delay(10000),
});
yield cancel(spinner);
@@ -58,7 +58,7 @@ function* signupStart(action: ISignupStartAction) {
const { response, timeout } = yield race({
response: call(signup, username, password, email),
timeout: call(delay, 10000),
timeout: delay(10000),
});
yield cancel(spinner);

View File

@@ -4,7 +4,7 @@ import { IDocumentJSON } from "~../../src/entity/Document";
import { DocsAction, DocsTypes } from "./actions";
export interface IDocsState {
all: IDocumentJSON[] | null;
all: { [key: number]: IDocumentJSON };
fetching: boolean;
error: string | null;
spinner: boolean;
@@ -27,7 +27,11 @@ export const docsReducer: Reducer<IDocsState, DocsAction> = (
case DocsTypes.DOCS_FETCH_START:
return { ...defaultDocsState, fetching: true };
case DocsTypes.DOCS_FETCH_SUCCESS:
return { ...defaultDocsState, ...action.payload };
const all: { [key: number]: IDocumentJSON } = {};
action.payload.all.forEach(doc => {
all[doc.id] = doc;
});
return { ...defaultDocsState, all };
case DocsTypes.DOCS_FETCH_FAIL:
return { ...defaultDocsState, ...action.payload };
default:

View File

@@ -1,8 +1,8 @@
import { delay } from "redux-saga";
import {
all,
call,
cancel,
delay,
fork,
put,
race,
@@ -29,7 +29,7 @@ function* docsFetchStart(action: IDocsFetchStartAction) {
const { response, timeout } = yield race({
response: call(fetchAllDocs),
timeout: call(delay, 10000),
timeout: delay(10000),
});
yield cancel(spinner);

View File

@@ -1,4 +1,5 @@
import { applyMiddleware, createStore } from "redux";
import { composeWithDevTools } from "redux-devtools-extension";
import { persistStore } from "redux-persist";
import createSagaMiddlware from "redux-saga";
import { rootReducer } from "~redux/reducers";
@@ -11,7 +12,10 @@ import { userSaga } from "./user/sagas";
const sagaMiddleware = createSagaMiddlware();
export const store = createStore(rootReducer, applyMiddleware(sagaMiddleware));
export const store = createStore(
rootReducer,
composeWithDevTools(applyMiddleware(sagaMiddleware)),
);
export const persistor = persistStore(store, null, () => {
const state = store.getState();

View File

@@ -1,5 +1,4 @@
import { delay } from "redux-saga";
import { all, call, put, race, takeLatest } from "redux-saga/effects";
import { all, call, delay, put, race, takeLatest } from "redux-saga/effects";
import { fetchUser } from "~redux/api/user";
import { getUserFail, getUserSuccess, UserTypes } from "./actions";
@@ -8,7 +7,7 @@ function* getUser() {
try {
const { response, timeout } = yield race({
response: call(fetchUser),
timeout: call(delay, 10000),
timeout: delay(10000),
});
if (timeout) {