import * as React from "react";
import * as System from "~/components/system";
import SystemPage from "~/components/system/SystemPage";
import ViewSourceLink from "~/components/system/ViewSourceLink";
import CodeBlock from "~/components/system/CodeBlock";
const EXAMPLE_CODE = `import * as React from 'react';
import { CreateFilecoinStorageDeal } from 'slate-react-system';
import { createPow } from "@textile/powergate-client";
const PowerGate = createPow({ host: "http://pow.slate.textile.io:6002" });
class Example extends React.Component {
componentDidMount = async () => {
const FFS = await PowerGate.ffs.create();
const token = FFS.token ? FFS.token : null;
PowerGate.setToken(token);
this.setState({ token });
}
_handleSubmit = async (data) => {
const file = data.file.files[0];
var buffer = [];
// NOTE(jim): A little hacky...
const getByteArray = async () =>
new Promise((resolve) => {
const reader = new FileReader();
reader.onloadend = function(e) {
if (e.target.readyState == FileReader.DONE) {
buffer = new Uint8Array(e.target.result);
}
resolve();
};
reader.readAsArrayBuffer(file);
});
await getByteArray();
const { cid } = await PowerGate.ffs.stage(buffer);
const { jobId } = await PowerGate.ffs.pushStorageConfig(cid);
const cancel = PowerGate.ffs.watchJobs((job) => {
console.log(job);
}, jobId);
}
render() {
return (
);
}
}
`;
export default class SystemPageMakeStorageDeal extends React.Component {
_handleSubmit = async ({ file }) => {
// TODO(jim): Send file data to server.
alert(file);
};
render() {
return (
Make a Storage Deal{" "}
Here is a partial example of using{" "}
Textile's Powergate
{" "}
to make a data storage deal. This example only provides an example for
how to send your file to a server.
There will be an example of how to make a storage deal coming soon.
Code
{EXAMPLE_CODE}
);
}
}