Skip to content

Commit

Permalink
fix(ipfs): representation of text from search/or cid content (#1042)
Browse files Browse the repository at this point in the history
  • Loading branch information
dasein108 authored Dec 7, 2023
1 parent 298de7e commit d9d4709
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 40 deletions.
2 changes: 1 addition & 1 deletion src/components/contentIpfs/contentIpfs.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ function DownloadableItem({ cid, search }: { cid: string; search?: boolean }) {

type ContentTabProps = {
details: IPFSContentDetails;
content: IPFSContentMaybe;
content?: IPFSContentMaybe;
cid: string;
search?: boolean;
};
Expand Down
1 change: 1 addition & 0 deletions src/containers/ipfs/components/ContentIpfsCid.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ type Props = {
loading?: boolean;
statusFetching?: string;
status?: QueueItemStatus;
cid: string;
};

// TODO: refactor this component
Expand Down
76 changes: 37 additions & 39 deletions src/containers/ipfs/ipfs.tsx
Original file line number Diff line number Diff line change
@@ -1,50 +1,43 @@
import { useParams } from 'react-router-dom';
import ContentIpfs from 'src/components/contentIpfs/contentIpfs';
import useQueueIpfsContent from 'src/hooks/useQueueIpfsContent';
import { useEffect, useState } from 'react';
import { useQueryClient } from 'src/contexts/queryClient';
import { useEffect, useMemo, useState } from 'react';
import { useAdviser } from 'src/features/adviser/context';
import { encodeSlash } from 'src/utils/utils';
import { PATTERN_IPFS_HASH } from 'src/utils/config';
import { getIpfsHash } from 'src/utils/search/utils';
import { parseArrayLikeToDetails } from 'src/services/ipfs/utils/content';
import { IPFSContentDetails } from 'src/services/ipfs/ipfs';
import { useBackend } from 'src/contexts/backend';
import { Dots, MainContainer } from '../../components';
import ContentIpfsCid from './components/ContentIpfsCid';
import styles from './IPFS.module.scss';
import SearchResults from '../Search/SearchResults';
import AdviserMeta from './components/AdviserMeta/AdviserMeta';
import { useBackend } from 'src/contexts/backend';

function Ipfs() {
const { query = '' } = useParams();

const [cid, setKeywordHash] = useState<string>('');
const [cid, setCid] = useState<string>('');

const { fetchParticle, status, content } = useQueueIpfsContent(cid);
const { ipfsNode } = useBackend();
const [ipfsDataDetails, setIpfsDatDetails] = useState<IPFSContentDetails>();

const queryClient = useQueryClient();
const { setAdviser } = useAdviser();

const isText = useMemo(() => !query.match(PATTERN_IPFS_HASH), [query]);

useEffect(() => {
(async () => {
if (cid !== query) {
if (query.match(PATTERN_IPFS_HASH)) {
setKeywordHash(query);
} else {
const cidFromQuery = (await getIpfsHash(
encodeSlash(query)
)) as string;
if (cidFromQuery !== cid) {
await ipfsNode?.addContent(query);
setKeywordHash(cidFromQuery);
}
}
}
})();
}, [cid, query, ipfsNode]);
if (!isText) {
setCid(query);
} else {
(async () => {
const cidFromQuery = (await getIpfsHash(encodeSlash(query))) as string;
await ipfsNode?.addContent(query);
setCid(cidFromQuery);
})();
}
}, [isText, query, ipfsNode]);

useEffect(() => {
(async () => {
Expand All @@ -53,21 +46,17 @@ function Ipfs() {
}, [cid, fetchParticle]);

useEffect(() => {
// TODO: cover case with content === 'availableDownload'
// && !content?.availableDownload

if (status !== 'completed') {
return;
if (status === 'completed') {
(async () => {
const details = await parseArrayLikeToDetails(
content,
cid
// (progress: number) => console.log(`${cid} progress: ${progress}`)
);
setIpfsDatDetails(details);
})();
}
(async () => {
const details = await parseArrayLikeToDetails(
content,
cid
// (progress: number) => console.log(`${cid} progress: ${progress}`)
);
setIpfsDatDetails(details);
})();
}, [content, status, cid, queryClient]);
}, [content, status, cid]);

useEffect(() => {
if (!status) {
Expand Down Expand Up @@ -99,13 +88,22 @@ function Ipfs() {
}
}, [ipfsDataDetails, setAdviser, cid, content, status]);

console.debug(status, cid, content, ipfsDataDetails);

return (
<MainContainer width="62%" resetMaxWidth>
<div className={styles.wrapper}>
{status === 'completed' && ipfsDataDetails !== null ? (
{status === 'completed' && ipfsDataDetails ? (
<ContentIpfs content={content} details={ipfsDataDetails} cid={cid} />
) : isText ? (
<ContentIpfs
details={{
type: 'text',
text: query,
content: query,
cid,
gateway: false,
}}
cid={cid}
/>
) : (
<ContentIpfsCid
loading={status === 'executing'}
Expand Down

0 comments on commit d9d4709

Please sign in to comment.