2020-06-19 06:57:57 +03:00
|
|
|
import * as React from "react";
|
2020-07-24 10:45:21 +03:00
|
|
|
import * as Actions from "~/common/actions";
|
2020-06-19 06:57:57 +03:00
|
|
|
import * as System from "~/components/system";
|
2020-04-09 00:29:13 +03:00
|
|
|
|
2020-06-19 06:57:57 +03:00
|
|
|
import { css } from "@emotion/react";
|
2020-04-09 00:29:13 +03:00
|
|
|
|
2020-06-19 06:57:57 +03:00
|
|
|
import ScenePage from "~/components/core/ScenePage";
|
2020-08-12 11:22:28 +03:00
|
|
|
import DataView from "~/components/core/DataView";
|
2020-08-08 03:22:45 +03:00
|
|
|
import DataMeter from "~/components/core/DataMeter";
|
2020-08-22 07:25:34 +03:00
|
|
|
import ScenePageHeader from "~/components/core/ScenePageHeader";
|
2020-04-09 00:29:13 +03:00
|
|
|
|
2020-07-24 19:35:00 +03:00
|
|
|
const POLLING_INTERVAL = 10000;
|
|
|
|
|
2020-04-09 00:29:13 +03:00
|
|
|
export default class SceneFilesFolder extends React.Component {
|
2020-07-24 10:45:21 +03:00
|
|
|
_interval;
|
2020-04-09 00:29:13 +03:00
|
|
|
|
2020-07-24 10:45:21 +03:00
|
|
|
loop = async () => {
|
|
|
|
let jobs = [];
|
|
|
|
|
|
|
|
this.props.viewer.library[0].children.forEach((d) => {
|
|
|
|
if (d.networks && d.networks.includes("FILECOIN")) {
|
2020-08-01 05:04:44 +03:00
|
|
|
console.log(d);
|
2020-07-24 10:45:21 +03:00
|
|
|
jobs.push({
|
|
|
|
ipfs: d.ipfs,
|
|
|
|
cid: d.ipfs.replace("/ipfs/", ""),
|
|
|
|
job: d.job,
|
2020-08-02 07:09:49 +03:00
|
|
|
error: d.error,
|
2020-07-24 10:45:21 +03:00
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2020-07-24 19:35:00 +03:00
|
|
|
console.log({ jobs });
|
2020-08-02 09:00:04 +03:00
|
|
|
if (jobs.length) {
|
|
|
|
const response = await Actions.checkCIDStatus(jobs);
|
2020-07-24 10:45:21 +03:00
|
|
|
|
2020-08-02 09:00:04 +03:00
|
|
|
console.log(response);
|
2020-07-24 10:45:21 +03:00
|
|
|
|
2020-08-02 09:00:04 +03:00
|
|
|
if (response && response.update) {
|
|
|
|
await this.props.onRehydrate();
|
|
|
|
}
|
2020-07-24 10:45:21 +03:00
|
|
|
}
|
|
|
|
|
2020-07-27 12:10:12 +03:00
|
|
|
if (this._interval) {
|
|
|
|
this._interval = window.setTimeout(this.loop, POLLING_INTERVAL);
|
|
|
|
}
|
2020-04-09 00:29:13 +03:00
|
|
|
};
|
|
|
|
|
2020-07-24 10:45:21 +03:00
|
|
|
componentDidMount() {
|
2020-08-01 05:04:44 +03:00
|
|
|
this._interval = this.loop();
|
2020-07-24 10:45:21 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
componentWillUnmount() {
|
|
|
|
window.clearTimeout(this._interval);
|
|
|
|
this._interval = null;
|
|
|
|
}
|
|
|
|
|
2020-08-04 10:35:55 +03:00
|
|
|
componentDidUpdate(prevProps) {
|
|
|
|
if (!this._interval) {
|
|
|
|
console.log("Starting loop again");
|
|
|
|
this._interval = this.loop();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-04-09 00:29:13 +03:00
|
|
|
render() {
|
|
|
|
return (
|
|
|
|
<ScenePage>
|
2020-08-22 07:25:34 +03:00
|
|
|
<ScenePageHeader title="Data [WIP]">
|
|
|
|
This scene is currently a work in progress.
|
|
|
|
</ScenePageHeader>
|
2020-08-04 05:57:27 +03:00
|
|
|
|
2020-08-22 07:25:34 +03:00
|
|
|
<DataMeter
|
|
|
|
stats={this.props.viewer.stats}
|
2020-08-26 07:13:50 +03:00
|
|
|
style={{ margin: "48px 0 48px 0" }}
|
2020-08-22 07:25:34 +03:00
|
|
|
/>
|
2020-08-08 03:22:45 +03:00
|
|
|
|
2020-08-12 11:22:28 +03:00
|
|
|
<DataView
|
2020-04-09 00:29:13 +03:00
|
|
|
buttons={[
|
|
|
|
{
|
2020-08-02 09:00:04 +03:00
|
|
|
name: "Upload data",
|
2020-06-19 06:57:57 +03:00
|
|
|
type: "SIDEBAR",
|
2020-07-23 13:05:13 +03:00
|
|
|
value: "SIDEBAR_ADD_FILE_TO_BUCKET",
|
2020-04-09 00:29:13 +03:00
|
|
|
},
|
2020-08-28 09:57:04 +03:00
|
|
|
{
|
|
|
|
name: "Filecoin archive",
|
|
|
|
type: "SIDEBAR",
|
|
|
|
value: "SIDEBAR_FILECOIN_ARCHIVE",
|
|
|
|
},
|
2020-08-12 11:22:28 +03:00
|
|
|
]}
|
|
|
|
viewer={this.props.viewer}
|
|
|
|
items={this.props.viewer.library[0].children}
|
|
|
|
onAction={this.props.onAction}
|
|
|
|
onRehydrate={this.props.onRehydrate}
|
|
|
|
/>
|
2020-04-09 00:29:13 +03:00
|
|
|
</ScenePage>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|