display image for profile
This commit is contained in:
parent
b2a2d83d7c
commit
eaa49e8b01
|
@ -9,7 +9,7 @@ import InputAdornment from '@material-ui/core/InputAdornment'
|
||||||
import CloudUpload from '@material-ui/icons/CloudUpload'
|
import CloudUpload from '@material-ui/icons/CloudUpload'
|
||||||
import web3 from 'Embark/web3'
|
import web3 from 'Embark/web3'
|
||||||
import { MySnackbarContentWrapper } from './base/SnackBars'
|
import { MySnackbarContentWrapper } from './base/SnackBars'
|
||||||
import { captureFile } from '../utils/ipfs'
|
import { captureFile, isIpfs } from '../utils/ipfs'
|
||||||
|
|
||||||
const { addGiver, addDelegate, addProject } = LiquidPledging.methods
|
const { addGiver, addDelegate, addProject } = LiquidPledging.methods
|
||||||
const FUNDER = 'FUNDER'
|
const FUNDER = 'FUNDER'
|
||||||
|
@ -136,7 +136,13 @@ const AddFunder = ({ appendFundProfile }) => (
|
||||||
<input
|
<input
|
||||||
ref={(input) => { uploadInput = input }}
|
ref={(input) => { uploadInput = input }}
|
||||||
type="file"
|
type="file"
|
||||||
onChange={(e) => captureFile(e, hash => setFieldValue('funderDescription', hash))}
|
onChange={
|
||||||
|
(e) => captureFile(
|
||||||
|
e,
|
||||||
|
hash => setFieldValue('funderDescription', hash),
|
||||||
|
profileImg => setStatus({ profileImg })
|
||||||
|
)
|
||||||
|
}
|
||||||
style={{ display: 'none' }} />
|
style={{ display: 'none' }} />
|
||||||
<TextField
|
<TextField
|
||||||
id="funderDescription"
|
id="funderDescription"
|
||||||
|
@ -156,6 +162,7 @@ const AddFunder = ({ appendFundProfile }) => (
|
||||||
onBlur={handleBlur}
|
onBlur={handleBlur}
|
||||||
value={values.funderDescription || ''}
|
value={values.funderDescription || ''}
|
||||||
/>
|
/>
|
||||||
|
{status && status.profileImg && <img src={status.profileImg} alt='ipfs' style={{maxWidth: '90%'}} />}
|
||||||
<TextField
|
<TextField
|
||||||
id="commitTime"
|
id="commitTime"
|
||||||
name="commitTime"
|
name="commitTime"
|
||||||
|
@ -171,7 +178,7 @@ const AddFunder = ({ appendFundProfile }) => (
|
||||||
<Button variant="contained" color="primary" type="submit">
|
<Button variant="contained" color="primary" type="submit">
|
||||||
{`ADD ${buttonLabel[values.adminType]} PROFILE`}
|
{`ADD ${buttonLabel[values.adminType]} PROFILE`}
|
||||||
</Button>
|
</Button>
|
||||||
{status && <Snackbar
|
{status && status.snackbar && <Snackbar
|
||||||
anchorOrigin={{
|
anchorOrigin={{
|
||||||
vertical: 'bottom',
|
vertical: 'bottom',
|
||||||
horizontal: 'left',
|
horizontal: 'left',
|
||||||
|
|
|
@ -1,17 +1,20 @@
|
||||||
import IPFS from 'ipfs'
|
import IPFS from 'ipfs'
|
||||||
import fileReaderPullStream from 'pull-file-reader'
|
import fileReaderPullStream from 'pull-file-reader'
|
||||||
|
import { Matcher } from '@areknawo/rex'
|
||||||
|
|
||||||
|
const ipfsMatcher = new Matcher().begin().find('/ipfs/')
|
||||||
const ipfs = new IPFS()
|
const ipfs = new IPFS()
|
||||||
|
|
||||||
export const captureFile = (event, cb) => {
|
export const isIpfs = str => ipfsMatcher.test(str)
|
||||||
|
export const captureFile = (event, cb, imgCb) => {
|
||||||
event.stopPropagation()
|
event.stopPropagation()
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
const file = event.target.files[0]
|
const file = event.target.files[0]
|
||||||
saveToIpfs(file, cb)
|
saveToIpfs(file, cb, imgCb)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const saveToIpfs = (file, cb) => {
|
const saveToIpfs = (file, cb, imgCb) => {
|
||||||
let ipfsId
|
let ipfsId
|
||||||
const fileStream = fileReaderPullStream(file)
|
const fileStream = fileReaderPullStream(file)
|
||||||
ipfs.add(fileStream, { progress: (prog) => console.log(`received: ${prog}`) })
|
ipfs.add(fileStream, { progress: (prog) => console.log(`received: ${prog}`) })
|
||||||
|
@ -20,7 +23,26 @@ const saveToIpfs = (file, cb) => {
|
||||||
ipfsId = response[0].hash
|
ipfsId = response[0].hash
|
||||||
console.log(ipfsId)
|
console.log(ipfsId)
|
||||||
cb(`ipfs/${ipfsId}`)
|
cb(`ipfs/${ipfsId}`)
|
||||||
|
getImageFromIpfs(ipfsId, imgCb)
|
||||||
}).catch((err) => {
|
}).catch((err) => {
|
||||||
console.error(err)
|
console.error(err)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const getImageFromIpfs = async (hash, cb) => {
|
||||||
|
const files = await getFile(hash);
|
||||||
|
const { content } = files[0];
|
||||||
|
const arrayBufferView = new Uint8Array(content);
|
||||||
|
const blob = new Blob([ arrayBufferView ], { type: "image/jpeg" });
|
||||||
|
const img = URL.createObjectURL(blob);
|
||||||
|
cb(img)
|
||||||
|
};
|
||||||
|
|
||||||
|
export const getFile = CID => {
|
||||||
|
return new Promise(function(resolve, reject) {
|
||||||
|
ipfs.get(CID, function (err, files) {
|
||||||
|
if (err) reject(err)
|
||||||
|
else resolve(files)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
|
@ -55,6 +55,7 @@
|
||||||
"homepage": "https://github.com/Giveth/liquidpledging#readme",
|
"homepage": "https://github.com/Giveth/liquidpledging#readme",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@aragon/os": "3.1.9",
|
"@aragon/os": "3.1.9",
|
||||||
|
"@areknawo/rex": "^2.0.0",
|
||||||
"@material-ui/core": "^3.6.0",
|
"@material-ui/core": "^3.6.0",
|
||||||
"@material-ui/icons": "^3.0.1",
|
"@material-ui/icons": "^3.0.1",
|
||||||
"@nozbe/watermelondb": "^0.9.0",
|
"@nozbe/watermelondb": "^0.9.0",
|
||||||
|
|
|
@ -10,6 +10,11 @@
|
||||||
truffle-hdwallet-provider "0.0.3"
|
truffle-hdwallet-provider "0.0.3"
|
||||||
truffle-privatekey-provider "0.0.6"
|
truffle-privatekey-provider "0.0.6"
|
||||||
|
|
||||||
|
"@areknawo/rex@^2.0.0":
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@areknawo/rex/-/rex-2.0.0.tgz#3b61f7d3eb6057af81f56d48233c0062dd12ace0"
|
||||||
|
integrity sha512-iazmkgfyEVtHJIVUThcBk+aRhAzuB/Nf/5RYHS9s/31udEdGjkntgqMxwqy4KchNPyckMaOP5wW0+Lc1+L/a6A==
|
||||||
|
|
||||||
"@babel/code-frame@^7.0.0":
|
"@babel/code-frame@^7.0.0":
|
||||||
version "7.0.0"
|
version "7.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8"
|
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8"
|
||||||
|
@ -8749,7 +8754,7 @@ pull-write@^1.1.4:
|
||||||
pull-cat "^1.1.11"
|
pull-cat "^1.1.11"
|
||||||
pull-stream "^3.4.5"
|
pull-stream "^3.4.5"
|
||||||
|
|
||||||
"pull-ws@github:hugomrdias/pull-ws#fix/bundle-size":
|
pull-ws@hugomrdias/pull-ws#fix/bundle-size:
|
||||||
version "3.3.1"
|
version "3.3.1"
|
||||||
resolved "https://codeload.github.com/hugomrdias/pull-ws/tar.gz/8e2ce0bb3b1cd6804828316e937fff8e0bef6225"
|
resolved "https://codeload.github.com/hugomrdias/pull-ws/tar.gz/8e2ce0bb3b1cd6804828316e937fff8e0bef6225"
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|
Loading…
Reference in New Issue