From 223bb030d4015b859a454550abe27a58f8b062d7 Mon Sep 17 00:00:00 2001 From: Tejas Kumar Date: Thu, 19 Jul 2018 18:18:59 +0200 Subject: [PATCH] Implement Contiamo Polling --- package.json | 2 +- src/Poll.tsx | 49 ++++++++++++++++++++++++++++++++++++------------- yarn.lock | 36 ++++++++++++++++-------------------- 3 files changed, 53 insertions(+), 34 deletions(-) diff --git a/package.json b/package.json index b36eb5b1..b342f577 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,7 @@ "lint-staged": "^7.2.0", "prettier": "^1.13.5", "rollup": "^0.61.2", - "rollup-plugin-typescript2": "^0.15.0", + "rollup-plugin-typescript2": "^0.16.1", "ts-jest": "^22.4.6", "tslint": "^5.10.0", "tslint-config-prettier": "^1.13.0", diff --git a/src/Poll.tsx b/src/Poll.tsx index 0180b046..0ee201dd 100644 --- a/src/Poll.tsx +++ b/src/Poll.tsx @@ -60,11 +60,19 @@ interface PollProps { */ children: (data: T | null, states: States, actions: Actions, meta: Meta) => React.ReactNode; /** - * How long do we wait between requests? + * How long do we wait between repeating a request? * Value in milliseconds. + * * Defaults to 1000. */ interval?: number; + /** + * How long should a request stay open? + * Value in seconds. + * + * Defaults to 60. + */ + wait?: number; /** * A stop condition for the poll that expects * a boolean. @@ -122,6 +130,10 @@ interface PollState { * Do we currently have an error? */ error?: GetComponentState["error"]; + /** + * Index of the last polled response. + */ + lastPollIndex?: string; } /** @@ -132,18 +144,13 @@ class ContextlessPoll extends React.Component, Readonly) { - return { - polling: !props.lazy, - }; - } - public static defaultProps = { interval: 1000, + wait: 60, resolve: (data: any) => data, }; @@ -159,6 +166,9 @@ class ContextlessPoll extends React.Component, Readonly + typeof this.props.requestOptions === "function" ? this.props.requestOptions() : this.props.requestOptions || {}; + /** * This thing does the actual poll. */ @@ -175,11 +185,19 @@ class ContextlessPoll extends React.Component, Readonly extends React.Component, Readonly ({ loading: false, lastResponse: response, data: resolve ? resolve(responseBody) : responseBody, + lastPollIndex: response.headers.get("x-polling-index") || undefined, })); } diff --git a/yarn.lock b/yarn.lock index 052253e5..fc2d56f9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1275,17 +1275,17 @@ fragment-cache@^0.2.1: dependencies: map-cache "^0.2.2" -fs-extra@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-6.0.0.tgz#0f0afb290bb3deb87978da816fcd3c7797f3a817" +fs-extra@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-5.0.0.tgz#414d0110cdd06705734d055652c5411260c31abd" dependencies: graceful-fs "^4.1.2" jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-5.0.0.tgz#414d0110cdd06705734d055652c5411260c31abd" +fs-extra@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-6.0.0.tgz#0f0afb290bb3deb87978da816fcd3c7797f3a817" dependencies: graceful-fs "^4.1.2" jsonfile "^4.0.0" @@ -3391,7 +3391,7 @@ resolve@1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" -resolve@^1.1.7, resolve@^1.3.2, resolve@^1.7.1: +resolve@1.8.1, resolve@^1.1.7, resolve@^1.3.2: version "1.8.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" dependencies: @@ -3420,16 +3420,16 @@ rimraf@^2.5.4, rimraf@^2.6.1: dependencies: glob "^7.0.5" -rollup-plugin-typescript2@^0.15.0: - version "0.15.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.15.1.tgz#7b35d0eaa6ad5a54a253ed158a565b99d8f15372" +rollup-plugin-typescript2@^0.16.1: + version "0.16.1" + resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.16.1.tgz#72e1f8a2e450550eabdc3d474e735feae322b474" dependencies: - fs-extra "^5.0.0" - resolve "^1.7.1" - rollup-pluginutils "^2.0.1" - tslib "1.9.2" + fs-extra "5.0.0" + resolve "1.8.1" + rollup-pluginutils "2.3.0" + tslib "1.9.3" -rollup-pluginutils@^2.0.1: +rollup-pluginutils@2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.3.0.tgz#478ace04bd7f6da2e724356ca798214884738fc4" dependencies: @@ -3927,11 +3927,7 @@ ts-jest@^22.4.6: source-map-support "^0.5.5" yargs "^11.0.0" -tslib@1.9.2: - version "1.9.2" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.2.tgz#8be0cc9a1f6dc7727c38deb16c2ebd1a2892988e" - -tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0: +tslib@1.9.3, tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"