style(views): rename various UI elements for better accuracy, add steps on how to create a board to related button

This commit is contained in:
plebeius.eth
2023-10-01 18:28:00 +02:00
parent 8e6ad3d55d
commit 8ca19c9cda
12 changed files with 829 additions and 704 deletions
+259 -259
View File
@@ -9,307 +9,307 @@ import useAnonModeStore from '../../hooks/stores/useAnonModeStore';
import useGeneralStore from '../../hooks/stores/useGeneralStore'; import useGeneralStore from '../../hooks/stores/useGeneralStore';
const ReplyModal = ({ isOpen, closeModal }) => { const ReplyModal = ({ isOpen, closeModal }) => {
const { const {
captchaResponse, captchaResponse,
setCaptchaResponse, setCaptchaResponse,
setChallengesArray, setChallengesArray,
setIsCaptchaOpen, setIsCaptchaOpen,
setPendingComment, setPendingComment,
setPendingCommentIndex, setPendingCommentIndex,
replyQuoteCid, replyQuoteCid,
setResolveCaptchaPromise, setResolveCaptchaPromise,
selectedAddress, selectedAddress,
selectedParentCid, selectedParentCid,
selectedShortCid, selectedShortCid,
selectedStyle, selectedStyle,
selectedText, selectedText,
setSelectedText, setSelectedText,
triggerInsertion, triggerInsertion,
} = useGeneralStore((state) => state); } = useGeneralStore((state) => state);
const { anonymousMode } = useAnonModeStore(); const { anonymousMode } = useAnonModeStore();
const account = useAccount(); const account = useAccount();
const [, setNewErrorMessage] = useError(); const [, setNewErrorMessage] = useError();
const nodeRef = useRef(null); const nodeRef = useRef(null);
const nameRef = useRef(); const nameRef = useRef();
const commentRef = useRef(); const commentRef = useRef();
const linkRef = useRef(); const linkRef = useRef();
const [triggerPublishComment, setTriggerPublishComment] = useState(false); const [triggerPublishComment, setTriggerPublishComment] = useState(false);
const [isMobile, setIsMobile] = useState(window.innerWidth <= 480); const [isMobile, setIsMobile] = useState(window.innerWidth <= 480);
const [executeAnonMode, setExecuteAnonMode] = useState(false); const [executeAnonMode, setExecuteAnonMode] = useState(false);
useAnonMode(selectedParentCid, anonymousMode && executeAnonMode); useAnonMode(selectedParentCid, anonymousMode && executeAnonMode);
useEffect(() => { useEffect(() => {
const handleResize = () => setIsMobile(window.innerWidth <= 480); const handleResize = () => setIsMobile(window.innerWidth <= 480);
window.addEventListener('resize', handleResize); window.addEventListener('resize', handleResize);
// Cleanup function // Cleanup function
return () => { return () => {
window.removeEventListener('resize', handleResize); window.removeEventListener('resize', handleResize);
}; };
}, [setIsMobile]); }, [setIsMobile]);
const onModalOpen = () => { const onModalOpen = () => {
if (commentRef.current) { if (commentRef.current) {
if (selectedText) { if (selectedText) {
commentRef.current.value += '\n'; commentRef.current.value += '\n';
} }
commentRef.current.focus(); commentRef.current.focus();
const len = commentRef.current.value.length; const len = commentRef.current.value.length;
commentRef.current.setSelectionRange(len, len); commentRef.current.setSelectionRange(len, len);
} }
}; };
const insertAtCursor = (inputElement, valueToInsert) => { const insertAtCursor = (inputElement, valueToInsert) => {
const startPos = inputElement.selectionStart || inputElement.value.length; const startPos = inputElement.selectionStart || inputElement.value.length;
const endPos = startPos + valueToInsert.length; const endPos = startPos + valueToInsert.length;
inputElement.setRangeText(valueToInsert, startPos, startPos, 'end'); inputElement.setRangeText(valueToInsert, startPos, startPos, 'end');
inputElement.setSelectionRange(endPos, endPos); inputElement.setSelectionRange(endPos, endPos);
}; };
useEffect(() => { useEffect(() => {
if (replyQuoteCid && commentRef.current) { if (replyQuoteCid && commentRef.current) {
const prefixedReplyQuoteCid = `c/${replyQuoteCid}\n`; const prefixedReplyQuoteCid = `c/${replyQuoteCid}\n`;
insertAtCursor(commentRef.current, prefixedReplyQuoteCid); insertAtCursor(commentRef.current, prefixedReplyQuoteCid);
} }
}, [triggerInsertion, replyQuoteCid]); }, [triggerInsertion, replyQuoteCid]);
const getSelectedText = useCallback(() => { const getSelectedText = useCallback(() => {
const text = document.getSelection().toString(); const text = document.getSelection().toString();
setSelectedText(text ? `>${text}\n` : ''); setSelectedText(text ? `>${text}\n` : '');
}, [setSelectedText]); }, [setSelectedText]);
useEffect(() => { useEffect(() => {
if (isOpen) { if (isOpen) {
setTimeout(getSelectedText, 0); setTimeout(getSelectedText, 0);
} else { } else {
setSelectedText(''); setSelectedText('');
} }
}, [isOpen, getSelectedText, setSelectedText]); }, [isOpen, getSelectedText, setSelectedText]);
const onChallengeVerification = (challengeVerification) => { const onChallengeVerification = (challengeVerification) => {
if (challengeVerification.challengeSuccess === true) { if (challengeVerification.challengeSuccess === true) {
return; return;
} else if (challengeVerification.challengeSuccess === false) { } else if (challengeVerification.challengeSuccess === false) {
setNewErrorMessage(`Challenge Failed, reason: ${challengeVerification.reason}. Errors: ${challengeVerification.errors}`); setNewErrorMessage(`Challenge Failed, reason: ${challengeVerification.reason}. Errors: ${challengeVerification.errors}`);
console.log('challenge failed', challengeVerification); console.log('challenge failed', challengeVerification);
} }
}; };
const onChallenge = async (challenges, comment) => { const onChallenge = async (challenges, comment) => {
setPendingComment(comment); setPendingComment(comment);
let challengeAnswers = []; let challengeAnswers = [];
try { try {
challengeAnswers = await getChallengeAnswersFromUser(challenges); challengeAnswers = await getChallengeAnswersFromUser(challenges);
} catch (error) { } catch (error) {
setNewErrorMessage(error.message); setNewErrorMessage(error.message);
console.log(error); console.log(error);
} }
if (challengeAnswers) { if (challengeAnswers) {
await comment.publishChallengeAnswers(challengeAnswers); await comment.publishChallengeAnswers(challengeAnswers);
} }
}; };
useEffect(() => { useEffect(() => {
setPublishCommentOptions((prevPublishCommentOptions) => ({ setPublishCommentOptions((prevPublishCommentOptions) => ({
...prevPublishCommentOptions, ...prevPublishCommentOptions,
subplebbitAddress: selectedAddress, subplebbitAddress: selectedAddress,
})); }));
}, [selectedAddress]); }, [selectedAddress]);
const [publishCommentOptions, setPublishCommentOptions] = useState({ const [publishCommentOptions, setPublishCommentOptions] = useState({
subplebbitAddress: selectedAddress, subplebbitAddress: selectedAddress,
onChallenge, onChallenge,
onChallengeVerification, onChallengeVerification,
onError: (error) => { onError: (error) => {
setNewErrorMessage(error.message); setNewErrorMessage(error.message);
console.log(error); console.log(error);
}, },
}); });
const { publishComment, index } = usePublishComment(publishCommentOptions); const { publishComment, index } = usePublishComment(publishCommentOptions);
useEffect(() => { useEffect(() => {
if (index !== undefined) { if (index !== undefined) {
setPendingCommentIndex(index); setPendingCommentIndex(index);
} }
}, [index, setPendingCommentIndex]); }, [index, setPendingCommentIndex]);
const resetFields = useCallback(() => { const resetFields = useCallback(() => {
if (nameRef.current) { if (nameRef.current) {
nameRef.current.value = ''; nameRef.current.value = '';
} }
if (commentRef.current) { if (commentRef.current) {
commentRef.current.value = ''; commentRef.current.value = '';
} }
if (linkRef.current) { if (linkRef.current) {
linkRef.current.value = ''; linkRef.current.value = '';
} }
}, []); }, []);
const handleSubmit = async (event) => { const handleSubmit = async (event) => {
event.preventDefault(); event.preventDefault();
if (commentRef.current.value === '' && linkRef.current.value === '') { if (commentRef.current.value === '' && linkRef.current.value === '') {
setNewErrorMessage('Please enter a comment or link.'); setNewErrorMessage('Please enter a comment or link.');
return; return;
} }
setPublishCommentOptions((prevPublishCommentOptions) => ({ setPublishCommentOptions((prevPublishCommentOptions) => ({
...prevPublishCommentOptions, ...prevPublishCommentOptions,
author: { author: {
displayName: nameRef.current.value || undefined, displayName: nameRef.current.value || undefined,
...(anonymousMode ? {} : { address: account?.author.address }), ...(anonymousMode ? {} : { address: account?.author.address }),
}, },
content: commentRef.current.value || undefined, content: commentRef.current.value || undefined,
link: linkRef.current.value || undefined, link: linkRef.current.value || undefined,
parentCid: selectedParentCid, parentCid: selectedParentCid,
})); }));
setTriggerPublishComment(true); setTriggerPublishComment(true);
}; };
const updateSigner = useCallback(async () => { const updateSigner = useCallback(async () => {
if (anonymousMode) { if (anonymousMode) {
setExecuteAnonMode(true); setExecuteAnonMode(true);
let storedSigners = JSON.parse(localStorage.getItem('storedSigners')) || {}; let storedSigners = JSON.parse(localStorage.getItem('storedSigners')) || {};
let signer; let signer;
if (!storedSigners[selectedParentCid]) { if (!storedSigners[selectedParentCid]) {
signer = await account?.plebbit.createSigner(); signer = await account?.plebbit.createSigner();
storedSigners[selectedParentCid] = { privateKey: signer?.privateKey, address: signer?.address }; storedSigners[selectedParentCid] = { privateKey: signer?.privateKey, address: signer?.address };
localStorage.setItem('storedSigners', JSON.stringify(storedSigners)); localStorage.setItem('storedSigners', JSON.stringify(storedSigners));
} else { } else {
const signerPrivateKey = storedSigners[selectedParentCid].privateKey; const signerPrivateKey = storedSigners[selectedParentCid].privateKey;
try { try {
signer = await account?.plebbit.createSigner({ type: 'ed25519', privateKey: signerPrivateKey }); signer = await account?.plebbit.createSigner({ type: 'ed25519', privateKey: signerPrivateKey });
} catch (error) { } catch (error) {
console.log(error); console.log(error);
} }
} }
setPublishCommentOptions((prevPublishCommentOptions) => { setPublishCommentOptions((prevPublishCommentOptions) => {
const newPublishCommentOptions = { const newPublishCommentOptions = {
...prevPublishCommentOptions, ...prevPublishCommentOptions,
signer, signer,
author: { author: {
...prevPublishCommentOptions.author, ...prevPublishCommentOptions.author,
address: signer?.address, address: signer?.address,
}, },
}; };
if (JSON.stringify(prevPublishCommentOptions) !== JSON.stringify(newPublishCommentOptions)) { if (JSON.stringify(prevPublishCommentOptions) !== JSON.stringify(newPublishCommentOptions)) {
return newPublishCommentOptions; return newPublishCommentOptions;
} }
return prevPublishCommentOptions; return prevPublishCommentOptions;
}); });
} }
}, [selectedParentCid, anonymousMode, account]); }, [selectedParentCid, anonymousMode, account]);
useEffect(() => { useEffect(() => {
if (anonymousMode) { if (anonymousMode) {
updateSigner(); updateSigner();
} }
}, [updateSigner, anonymousMode]); }, [updateSigner, anonymousMode]);
useEffect(() => { useEffect(() => {
if (publishCommentOptions && triggerPublishComment) { if (publishCommentOptions && triggerPublishComment) {
(async () => { (async () => {
await publishComment(); await publishComment();
resetFields(); resetFields();
closeModal(); closeModal();
})(); })();
setTriggerPublishComment(false); setTriggerPublishComment(false);
setExecuteAnonMode(false); setExecuteAnonMode(false);
} }
}, [publishCommentOptions, triggerPublishComment, publishComment, resetFields, closeModal]); }, [publishCommentOptions, triggerPublishComment, publishComment, resetFields, closeModal]);
const getChallengeAnswersFromUser = async (challenges) => { const getChallengeAnswersFromUser = async (challenges) => {
setChallengesArray(challenges); setChallengesArray(challenges);
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const imageString = challenges?.challenges[0].challenge; const imageString = challenges?.challenges[0].challenge;
const imageSource = `data:image/png;base64,${imageString}`; const imageSource = `data:image/png;base64,${imageString}`;
const challengeImg = new Image(); const challengeImg = new Image();
challengeImg.src = imageSource; challengeImg.src = imageSource;
challengeImg.onload = () => { challengeImg.onload = () => {
setIsCaptchaOpen(true); setIsCaptchaOpen(true);
const handleKeyDown = async (event) => { const handleKeyDown = async (event) => {
if (event.key === 'Enter') { if (event.key === 'Enter') {
const currentCaptchaResponse = captchaResponse; const currentCaptchaResponse = captchaResponse;
resolve(currentCaptchaResponse); resolve(currentCaptchaResponse);
setIsCaptchaOpen(false); setIsCaptchaOpen(false);
document.removeEventListener('keydown', handleKeyDown); document.removeEventListener('keydown', handleKeyDown);
event.preventDefault(); event.preventDefault();
} }
}; };
setCaptchaResponse(''); setCaptchaResponse('');
document.addEventListener('keydown', handleKeyDown); document.addEventListener('keydown', handleKeyDown);
setResolveCaptchaPromise(resolve); setResolveCaptchaPromise(resolve);
}; };
challengeImg.onerror = () => { challengeImg.onerror = () => {
reject(setNewErrorMessage('Could not load challenges')); reject(setNewErrorMessage('Could not load challenges'));
}; };
}); });
}; };
return ( return (
<StyledModal <StyledModal
isOpen={isOpen} isOpen={isOpen}
onAfterOpen={onModalOpen} onAfterOpen={onModalOpen}
onRequestClose={closeModal} onRequestClose={closeModal}
contentLabel='Reply Modal' contentLabel='Reply Modal'
shouldCloseOnEsc={true} shouldCloseOnEsc={true}
shouldCloseOnOverlayClick={isMobile} shouldCloseOnOverlayClick={isMobile}
selectedStyle={selectedStyle} selectedStyle={selectedStyle}
overlayClassName='overlay' overlayClassName='overlay'
style={isMobile ? { overlay: { backgroundColor: 'rgba(0,0,0,.25)' } } : { overlay: { backgroundColor: 'rgba(0,0,0,0)' } }} style={isMobile ? { overlay: { backgroundColor: 'rgba(0,0,0,.25)' } } : { overlay: { backgroundColor: 'rgba(0,0,0,0)' } }}
> >
<Draggable handle='.modal-header' nodeRef={nodeRef} disabled={isMobile}> <Draggable handle='.modal-header' nodeRef={nodeRef} disabled={isMobile}>
<div className='modal-content' ref={nodeRef}> <div className='modal-content' ref={nodeRef}>
<div className='modal-header'> <div className='modal-header'>
Reply to c/{selectedShortCid} Reply to c/{selectedShortCid}
<button className='icon' onClick={() => closeModal()} title='close' /> <button className='icon' onClick={() => closeModal()} title='close' />
</div> </div>
<div id='form'> <div id='form'>
<div> <div>
{account?.author.displayName ? ( {account?.author.displayName ? (
<input id='name' type='text' defaultValue={account?.author?.displayName} ref={nameRef} /> <input id='name' type='text' defaultValue={account?.author?.displayName} ref={nameRef} />
) : ( ) : (
<input id='name' type='text' placeholder='Anonymous' ref={nameRef} /> <input id='name' type='text' placeholder='Anonymous' ref={nameRef} />
)} )}
</div> </div>
<div> <div>
<input id='name' type='text' placeholder='Embed link' ref={linkRef} /> <input id='name' type='text' placeholder='Link' ref={linkRef} />
</div> </div>
<div className='textarea-wrapper'> <div className='textarea-wrapper'>
<span className='fixed-text'>{`c/${selectedShortCid}`}</span> <span className='fixed-text'>{`c/${selectedShortCid}`}</span>
<textarea className='textarea' rows='4' placeholder='Comment' defaultValue={selectedText} wrap='soft' ref={commentRef} /> <textarea className='textarea' rows='4' placeholder='Comment' defaultValue={selectedText} wrap='soft' ref={commentRef} />
</div> </div>
<div> <div>
<button id='next' onClick={handleSubmit}> <button id='next' onClick={handleSubmit}>
Post Post
</button> </button>
</div> </div>
</div> </div>
</div> </div>
</Draggable> </Draggable>
</StyledModal> </StyledModal>
); );
}; };
Modal.setAppElement('#root'); Modal.setAppElement('#root');
+3 -3
View File
@@ -607,7 +607,7 @@ const All = () => {
window.electron && window.electron.isElectron window.electron && window.electron.isElectron
? setIsCreateBoardOpen(true) ? setIsCreateBoardOpen(true)
: alert( : alert(
'You can create a board with the desktop version of plebchan:\nhttps://github.com/plebbit/plebchan/releases/latest\n\nIf you are comfortable with the command line, use plebbit-cli:\nhttps://github.com/plebbit/plebbit-cli\n\n', 'HOW TO CREATE A BOARD (currently via CLI only):\n\n(1) have a computer you can use as server, because users will connect to your board peer-to-peer;\n\n(2) go to https://github.com/plebbit/plebbit-cli#install and follow the instructions to run your daemon, create a subplebbit (board) and edit its settings;\n\n(3) users can always connect to your board via its address, but it can be added below by submitting a pull request here: https://github.com/plebbit/temporary-default-subplebbits. This will be automated with a plebbit DAO using the plebbit token.',
); );
}} }}
> >
@@ -639,7 +639,7 @@ const All = () => {
style={{ cursor: 'pointer' }} style={{ cursor: 'pointer' }}
onClick={() => onClick={() =>
alert( alert(
'You can create a board with the desktop version of plebchan:\nhttps://github.com/plebbit/plebchan/releases/latest\n\nIf you are comfortable with the command line, use plebbit-cli:\nhttps://github.com/plebbit/plebbit-cli\n\n', 'HOW TO CREATE A BOARD (currently via CLI only):\n\n(1) have a computer you can use as server, because users will connect to your board peer-to-peer;\n\n(2) go to https://github.com/plebbit/plebbit-cli#install and follow the instructions to run your daemon, create a subplebbit (board) and edit its settings;\n\n(3) users can always connect to your board via its address, but it can be added below by submitting a pull request here: https://github.com/plebbit/temporary-default-subplebbits. This will be automated with a plebbit DAO using the plebbit token.',
) )
} }
> >
@@ -3318,7 +3318,7 @@ const All = () => {
window.electron && window.electron.isElectron window.electron && window.electron.isElectron
? setIsCreateBoardOpen(true) ? setIsCreateBoardOpen(true)
: alert( : alert(
'You can create a board with the desktop version of plebchan:\nhttps://github.com/plebbit/plebchan/releases/latest\n\nIf you are comfortable with the command line, use plebbit-cli:\nhttps://github.com/plebbit/plebbit-cli\n\n', 'HOW TO CREATE A BOARD (currently via CLI only):\n\n(1) have a computer you can use as server, because users will connect to your board peer-to-peer;\n\n(2) go to https://github.com/plebbit/plebbit-cli#install and follow the instructions to run your daemon, create a subplebbit (board) and edit its settings;\n\n(3) users can always connect to your board via its address, but it can be added below by submitting a pull request here: https://github.com/plebbit/temporary-default-subplebbits. This will be automated with a plebbit DAO using the plebbit token.',
); );
}} }}
> >
+3 -3
View File
@@ -849,7 +849,7 @@ const AllCatalog = () => {
window.electron && window.electron.isElectron window.electron && window.electron.isElectron
? setIsCreateBoardOpen(true) ? setIsCreateBoardOpen(true)
: alert( : alert(
'You can create a board with the desktop version of plebchan:\nhttps://github.com/plebbit/plebchan/releases/latest\n\nIf you are comfortable with the command line, use plebbit-cli:\nhttps://github.com/plebbit/plebbit-cli\n\n', 'HOW TO CREATE A BOARD (currently via CLI only):\n\n(1) have a computer you can use as server, because users will connect to your board peer-to-peer;\n\n(2) go to https://github.com/plebbit/plebbit-cli#install and follow the instructions to run your daemon, create a subplebbit (board) and edit its settings;\n\n(3) users can always connect to your board via its address, but it can be added below by submitting a pull request here: https://github.com/plebbit/temporary-default-subplebbits. This will be automated with a plebbit DAO using the plebbit token.',
); );
}} }}
> >
@@ -881,7 +881,7 @@ const AllCatalog = () => {
style={{ cursor: 'pointer' }} style={{ cursor: 'pointer' }}
onClick={() => onClick={() =>
alert( alert(
'You can create a board with the desktop version of plebchan:\nhttps://github.com/plebbit/plebchan/releases/latest\n\nIf you are comfortable with the command line, use plebbit-cli:\nhttps://github.com/plebbit/plebbit-cli\n\n', 'HOW TO CREATE A BOARD (currently via CLI only):\n\n(1) have a computer you can use as server, because users will connect to your board peer-to-peer;\n\n(2) go to https://github.com/plebbit/plebbit-cli#install and follow the instructions to run your daemon, create a subplebbit (board) and edit its settings;\n\n(3) users can always connect to your board via its address, but it can be added below by submitting a pull request here: https://github.com/plebbit/temporary-default-subplebbits. This will be automated with a plebbit DAO using the plebbit token.',
) )
} }
> >
@@ -1037,7 +1037,7 @@ const AllCatalog = () => {
window.electron && window.electron.isElectron window.electron && window.electron.isElectron
? setIsCreateBoardOpen(true) ? setIsCreateBoardOpen(true)
: alert( : alert(
'You can create a board with the desktop version of plebchan:\nhttps://github.com/plebbit/plebchan/releases/latest\n\nIf you are comfortable with the command line, use plebbit-cli:\nhttps://github.com/plebbit/plebbit-cli\n\n', 'HOW TO CREATE A BOARD (currently via CLI only):\n\n(1) have a computer you can use as server, because users will connect to your board peer-to-peer;\n\n(2) go to https://github.com/plebbit/plebbit-cli#install and follow the instructions to run your daemon, create a subplebbit (board) and edit its settings;\n\n(3) users can always connect to your board via its address, but it can be added below by submitting a pull request here: https://github.com/plebbit/temporary-default-subplebbits. This will be automated with a plebbit DAO using the plebbit token.',
); );
}} }}
> >
+4 -4
View File
@@ -765,7 +765,7 @@ const Board = () => {
window.electron && window.electron.isElectron window.electron && window.electron.isElectron
? setIsCreateBoardOpen(true) ? setIsCreateBoardOpen(true)
: alert( : alert(
'You can create a board with the desktop version of plebchan:\nhttps://github.com/plebbit/plebchan/releases/latest\n\nIf you are comfortable with the command line, use plebbit-cli:\nhttps://github.com/plebbit/plebbit-cli\n\n', 'HOW TO CREATE A BOARD (currently via CLI only):\n\n(1) have a computer you can use as server, because users will connect to your board peer-to-peer;\n\n(2) go to https://github.com/plebbit/plebbit-cli#install and follow the instructions to run your daemon, create a subplebbit (board) and edit its settings;\n\n(3) users can always connect to your board via its address, but it can be added below by submitting a pull request here: https://github.com/plebbit/temporary-default-subplebbits. This will be automated with a plebbit DAO using the plebbit token.',
); );
}} }}
> >
@@ -800,7 +800,7 @@ const Board = () => {
window.electron && window.electron.isElectron window.electron && window.electron.isElectron
? setIsCreateBoardOpen(true) ? setIsCreateBoardOpen(true)
: alert( : alert(
'You can create a board with the desktop version of plebchan:\nhttps://github.com/plebbit/plebchan/releases/latest\n\nIf you are comfortable with the command line, use plebbit-cli:\nhttps://github.com/plebbit/plebbit-cli\n\n', 'HOW TO CREATE A BOARD (currently via CLI only):\n\n(1) have a computer you can use as server, because users will connect to your board peer-to-peer;\n\n(2) go to https://github.com/plebbit/plebbit-cli#install and follow the instructions to run your daemon, create a subplebbit (board) and edit its settings;\n\n(3) users can always connect to your board via its address, but it can be added below by submitting a pull request here: https://github.com/plebbit/temporary-default-subplebbits. This will be automated with a plebbit DAO using the plebbit token.',
); );
}} }}
> >
@@ -884,7 +884,7 @@ const Board = () => {
</td> </td>
</tr> </tr>
<tr data-type='File'> <tr data-type='File'>
<td>Embed File</td> <td>Link</td>
<td> <td>
<input name='embed' type='text' tabIndex={7} placeholder='Paste link' ref={linkRef} /> <input name='embed' type='text' tabIndex={7} placeholder='Paste link' ref={linkRef} />
<button <button
@@ -4370,7 +4370,7 @@ const Board = () => {
window.electron && window.electron.isElectron window.electron && window.electron.isElectron
? setIsCreateBoardOpen(true) ? setIsCreateBoardOpen(true)
: alert( : alert(
'You can create a board with the desktop version of plebchan:\nhttps://github.com/plebbit/plebchan/releases/latest\n\nIf you are comfortable with the command line, use plebbit-cli:\nhttps://github.com/plebbit/plebbit-cli\n\n', 'HOW TO CREATE A BOARD (currently via CLI only):\n\n(1) have a computer you can use as server, because users will connect to your board peer-to-peer;\n\n(2) go to https://github.com/plebbit/plebbit-cli#install and follow the instructions to run your daemon, create a subplebbit (board) and edit its settings;\n\n(3) users can always connect to your board via its address, but it can be added below by submitting a pull request here: https://github.com/plebbit/temporary-default-subplebbits. This will be automated with a plebbit DAO using the plebbit token.',
); );
}} }}
> >
+4 -4
View File
@@ -1534,7 +1534,7 @@ const Catalog = () => {
window.electron && window.electron.isElectron window.electron && window.electron.isElectron
? setIsCreateBoardOpen(true) ? setIsCreateBoardOpen(true)
: alert( : alert(
'You can create a board with the desktop version of plebchan:\nhttps://github.com/plebbit/plebchan/releases/latest\n\nIf you are comfortable with the command line, use plebbit-cli:\nhttps://github.com/plebbit/plebbit-cli\n\n', 'HOW TO CREATE A BOARD (currently via CLI only):\n\n(1) have a computer you can use as server, because users will connect to your board peer-to-peer;\n\n(2) go to https://github.com/plebbit/plebbit-cli#install and follow the instructions to run your daemon, create a subplebbit (board) and edit its settings;\n\n(3) users can always connect to your board via its address, but it can be added below by submitting a pull request here: https://github.com/plebbit/temporary-default-subplebbits. This will be automated with a plebbit DAO using the plebbit token.',
); );
}} }}
> >
@@ -1567,7 +1567,7 @@ const Catalog = () => {
style={{ cursor: 'pointer' }} style={{ cursor: 'pointer' }}
onClick={() => onClick={() =>
alert( alert(
'You can create a board with the desktop version of plebchan:\nhttps://github.com/plebbit/plebchan/releases/latest\n\nIf you are comfortable with the command line, use plebbit-cli:\nhttps://github.com/plebbit/plebbit-cli\n\n', 'HOW TO CREATE A BOARD (currently via CLI only):\n\n(1) have a computer you can use as server, because users will connect to your board peer-to-peer;\n\n(2) go to https://github.com/plebbit/plebbit-cli#install and follow the instructions to run your daemon, create a subplebbit (board) and edit its settings;\n\n(3) users can always connect to your board via its address, but it can be added below by submitting a pull request here: https://github.com/plebbit/temporary-default-subplebbits. This will be automated with a plebbit DAO using the plebbit token.',
) )
} }
> >
@@ -1653,7 +1653,7 @@ const Catalog = () => {
</td> </td>
</tr> </tr>
<tr data-type='File'> <tr data-type='File'>
<td>Embed File</td> <td>Link</td>
<td> <td>
<input name='embed' type='text' tabIndex={7} placeholder='Paste link' ref={linkRef} /> <input name='embed' type='text' tabIndex={7} placeholder='Paste link' ref={linkRef} />
<button <button
@@ -1828,7 +1828,7 @@ const Catalog = () => {
window.electron && window.electron.isElectron window.electron && window.electron.isElectron
? setIsCreateBoardOpen(true) ? setIsCreateBoardOpen(true)
: alert( : alert(
'You can create a board with the desktop version of plebchan:\nhttps://github.com/plebbit/plebchan/releases/latest\n\nIf you are comfortable with the command line, use plebbit-cli:\nhttps://github.com/plebbit/plebbit-cli\n\n', 'HOW TO CREATE A BOARD (currently via CLI only):\n\n(1) have a computer you can use as server, because users will connect to your board peer-to-peer;\n\n(2) go to https://github.com/plebbit/plebbit-cli#install and follow the instructions to run your daemon, create a subplebbit (board) and edit its settings;\n\n(3) users can always connect to your board via its address, but it can be added below by submitting a pull request here: https://github.com/plebbit/temporary-default-subplebbits. This will be automated with a plebbit DAO using the plebbit token.',
); );
}} }}
> >
+3 -3
View File
@@ -196,7 +196,7 @@ const Description = () => {
window.electron && window.electron.isElectron window.electron && window.electron.isElectron
? setIsCreateBoardOpen(true) ? setIsCreateBoardOpen(true)
: alert( : alert(
'You can create a board with the desktop version of plebchan:\nhttps://github.com/plebbit/plebchan/releases/latest\n\nIf you are comfortable with the command line, use plebbit-cli:\nhttps://github.com/plebbit/plebbit-cli\n\n', 'HOW TO CREATE A BOARD (currently via CLI only):\n\n(1) have a computer you can use as server, because users will connect to your board peer-to-peer;\n\n(2) go to https://github.com/plebbit/plebbit-cli#install and follow the instructions to run your daemon, create a subplebbit (board) and edit its settings;\n\n(3) users can always connect to your board via its address, but it can be added below by submitting a pull request here: https://github.com/plebbit/temporary-default-subplebbits. This will be automated with a plebbit DAO using the plebbit token.',
); );
}} }}
> >
@@ -229,7 +229,7 @@ const Description = () => {
style={{ cursor: 'pointer' }} style={{ cursor: 'pointer' }}
onClick={() => onClick={() =>
alert( alert(
'You can create a board with the desktop version of plebchan:\nhttps://github.com/plebbit/plebchan/releases/latest\n\nIf you are comfortable with the command line, use plebbit-cli:\nhttps://github.com/plebbit/plebbit-cli\n\n', 'HOW TO CREATE A BOARD (currently via CLI only):\n\n(1) have a computer you can use as server, because users will connect to your board peer-to-peer;\n\n(2) go to https://github.com/plebbit/plebbit-cli#install and follow the instructions to run your daemon, create a subplebbit (board) and edit its settings;\n\n(3) users can always connect to your board via its address, but it can be added below by submitting a pull request here: https://github.com/plebbit/temporary-default-subplebbits. This will be automated with a plebbit DAO using the plebbit token.',
) )
} }
> >
@@ -719,7 +719,7 @@ const Description = () => {
window.electron && window.electron.isElectron window.electron && window.electron.isElectron
? setIsCreateBoardOpen(true) ? setIsCreateBoardOpen(true)
: alert( : alert(
'You can create a board with the desktop version of plebchan:\nhttps://github.com/plebbit/plebchan/releases/latest\n\nIf you are comfortable with the command line, use plebbit-cli:\nhttps://github.com/plebbit/plebbit-cli\n\n', 'HOW TO CREATE A BOARD (currently via CLI only):\n\n(1) have a computer you can use as server, because users will connect to your board peer-to-peer;\n\n(2) go to https://github.com/plebbit/plebbit-cli#install and follow the instructions to run your daemon, create a subplebbit (board) and edit its settings;\n\n(3) users can always connect to your board via its address, but it can be added below by submitting a pull request here: https://github.com/plebbit/temporary-default-subplebbits. This will be automated with a plebbit DAO using the plebbit token.',
); );
}} }}
> >
File diff suppressed because it is too large Load Diff
+3 -3
View File
@@ -206,7 +206,7 @@ const Rules = () => {
window.electron && window.electron.isElectron window.electron && window.electron.isElectron
? setIsCreateBoardOpen(true) ? setIsCreateBoardOpen(true)
: alert( : alert(
'You can create a board with the desktop version of plebchan:\nhttps://github.com/plebbit/plebchan/releases/latest\n\nIf you are comfortable with the command line, use plebbit-cli:\nhttps://github.com/plebbit/plebbit-cli\n\n', 'HOW TO CREATE A BOARD (currently via CLI only):\n\n(1) have a computer you can use as server, because users will connect to your board peer-to-peer;\n\n(2) go to https://github.com/plebbit/plebbit-cli#install and follow the instructions to run your daemon, create a subplebbit (board) and edit its settings;\n\n(3) users can always connect to your board via its address, but it can be added below by submitting a pull request here: https://github.com/plebbit/temporary-default-subplebbits. This will be automated with a plebbit DAO using the plebbit token.',
); );
}} }}
> >
@@ -239,7 +239,7 @@ const Rules = () => {
style={{ cursor: 'pointer' }} style={{ cursor: 'pointer' }}
onClick={() => onClick={() =>
alert( alert(
'You can create a board with the desktop version of plebchan:\nhttps://github.com/plebbit/plebchan/releases/latest\n\nIf you are comfortable with the command line, use plebbit-cli:\nhttps://github.com/plebbit/plebbit-cli\n\n', 'HOW TO CREATE A BOARD (currently via CLI only):\n\n(1) have a computer you can use as server, because users will connect to your board peer-to-peer;\n\n(2) go to https://github.com/plebbit/plebbit-cli#install and follow the instructions to run your daemon, create a subplebbit (board) and edit its settings;\n\n(3) users can always connect to your board via its address, but it can be added below by submitting a pull request here: https://github.com/plebbit/temporary-default-subplebbits. This will be automated with a plebbit DAO using the plebbit token.',
) )
} }
> >
@@ -655,7 +655,7 @@ const Rules = () => {
window.electron && window.electron.isElectron window.electron && window.electron.isElectron
? setIsCreateBoardOpen(true) ? setIsCreateBoardOpen(true)
: alert( : alert(
'You can create a board with the desktop version of plebchan:\nhttps://github.com/plebbit/plebchan/releases/latest\n\nIf you are comfortable with the command line, use plebbit-cli:\nhttps://github.com/plebbit/plebbit-cli\n\n', 'HOW TO CREATE A BOARD (currently via CLI only):\n\n(1) have a computer you can use as server, because users will connect to your board peer-to-peer;\n\n(2) go to https://github.com/plebbit/plebbit-cli#install and follow the instructions to run your daemon, create a subplebbit (board) and edit its settings;\n\n(3) users can always connect to your board via its address, but it can be added below by submitting a pull request here: https://github.com/plebbit/temporary-default-subplebbits. This will be automated with a plebbit DAO using the plebbit token.',
); );
}} }}
> >
+3 -3
View File
@@ -606,7 +606,7 @@ const Subscriptions = () => {
window.electron && window.electron.isElectron window.electron && window.electron.isElectron
? setIsCreateBoardOpen(true) ? setIsCreateBoardOpen(true)
: alert( : alert(
'You can create a board with the desktop version of plebchan:\nhttps://github.com/plebbit/plebchan/releases/latest\n\nIf you are comfortable with the command line, use plebbit-cli:\nhttps://github.com/plebbit/plebbit-cli\n\n', 'HOW TO CREATE A BOARD (currently via CLI only):\n\n(1) have a computer you can use as server, because users will connect to your board peer-to-peer;\n\n(2) go to https://github.com/plebbit/plebbit-cli#install and follow the instructions to run your daemon, create a subplebbit (board) and edit its settings;\n\n(3) users can always connect to your board via its address, but it can be added below by submitting a pull request here: https://github.com/plebbit/temporary-default-subplebbits. This will be automated with a plebbit DAO using the plebbit token.',
); );
}} }}
> >
@@ -638,7 +638,7 @@ const Subscriptions = () => {
style={{ cursor: 'pointer' }} style={{ cursor: 'pointer' }}
onClick={() => onClick={() =>
alert( alert(
'You can create a board with the desktop version of plebchan:\nhttps://github.com/plebbit/plebchan/releases/latest\n\nIf you are comfortable with the command line, use plebbit-cli:\nhttps://github.com/plebbit/plebbit-cli\n\n', 'HOW TO CREATE A BOARD (currently via CLI only):\n\n(1) have a computer you can use as server, because users will connect to your board peer-to-peer;\n\n(2) go to https://github.com/plebbit/plebbit-cli#install and follow the instructions to run your daemon, create a subplebbit (board) and edit its settings;\n\n(3) users can always connect to your board via its address, but it can be added below by submitting a pull request here: https://github.com/plebbit/temporary-default-subplebbits. This will be automated with a plebbit DAO using the plebbit token.',
) )
} }
> >
@@ -3322,7 +3322,7 @@ const Subscriptions = () => {
window.electron && window.electron.isElectron window.electron && window.electron.isElectron
? setIsCreateBoardOpen(true) ? setIsCreateBoardOpen(true)
: alert( : alert(
'You can create a board with the desktop version of plebchan:\nhttps://github.com/plebbit/plebchan/releases/latest\n\nIf you are comfortable with the command line, use plebbit-cli:\nhttps://github.com/plebbit/plebbit-cli\n\n', 'HOW TO CREATE A BOARD (currently via CLI only):\n\n(1) have a computer you can use as server, because users will connect to your board peer-to-peer;\n\n(2) go to https://github.com/plebbit/plebbit-cli#install and follow the instructions to run your daemon, create a subplebbit (board) and edit its settings;\n\n(3) users can always connect to your board via its address, but it can be added below by submitting a pull request here: https://github.com/plebbit/temporary-default-subplebbits. This will be automated with a plebbit DAO using the plebbit token.',
); );
}} }}
> >
@@ -849,7 +849,7 @@ const SubscriptionsCatalog = () => {
window.electron && window.electron.isElectron window.electron && window.electron.isElectron
? setIsCreateBoardOpen(true) ? setIsCreateBoardOpen(true)
: alert( : alert(
'You can create a board with the desktop version of plebchan:\nhttps://github.com/plebbit/plebchan/releases/latest\n\nIf you are comfortable with the command line, use plebbit-cli:\nhttps://github.com/plebbit/plebbit-cli\n\n', 'HOW TO CREATE A BOARD (currently via CLI only):\n\n(1) have a computer you can use as server, because users will connect to your board peer-to-peer;\n\n(2) go to https://github.com/plebbit/plebbit-cli#install and follow the instructions to run your daemon, create a subplebbit (board) and edit its settings;\n\n(3) users can always connect to your board via its address, but it can be added below by submitting a pull request here: https://github.com/plebbit/temporary-default-subplebbits. This will be automated with a plebbit DAO using the plebbit token.',
); );
}} }}
> >
@@ -881,7 +881,7 @@ const SubscriptionsCatalog = () => {
style={{ cursor: 'pointer' }} style={{ cursor: 'pointer' }}
onClick={() => onClick={() =>
alert( alert(
'You can create a board with the desktop version of plebchan:\nhttps://github.com/plebbit/plebchan/releases/latest\n\nIf you are comfortable with the command line, use plebbit-cli:\nhttps://github.com/plebbit/plebbit-cli\n\n', 'HOW TO CREATE A BOARD (currently via CLI only):\n\n(1) have a computer you can use as server, because users will connect to your board peer-to-peer;\n\n(2) go to https://github.com/plebbit/plebbit-cli#install and follow the instructions to run your daemon, create a subplebbit (board) and edit its settings;\n\n(3) users can always connect to your board via its address, but it can be added below by submitting a pull request here: https://github.com/plebbit/temporary-default-subplebbits. This will be automated with a plebbit DAO using the plebbit token.',
) )
} }
> >
@@ -1040,7 +1040,7 @@ const SubscriptionsCatalog = () => {
window.electron && window.electron.isElectron window.electron && window.electron.isElectron
? setIsCreateBoardOpen(true) ? setIsCreateBoardOpen(true)
: alert( : alert(
'You can create a board with the desktop version of plebchan:\nhttps://github.com/plebbit/plebchan/releases/latest\n\nIf you are comfortable with the command line, use plebbit-cli:\nhttps://github.com/plebbit/plebbit-cli\n\n', 'HOW TO CREATE A BOARD (currently via CLI only):\n\n(1) have a computer you can use as server, because users will connect to your board peer-to-peer;\n\n(2) go to https://github.com/plebbit/plebbit-cli#install and follow the instructions to run your daemon, create a subplebbit (board) and edit its settings;\n\n(3) users can always connect to your board via its address, but it can be added below by submitting a pull request here: https://github.com/plebbit/temporary-default-subplebbits. This will be automated with a plebbit DAO using the plebbit token.',
); );
}} }}
> >
+4 -4
View File
@@ -700,7 +700,7 @@ const Thread = () => {
window.electron && window.electron.isElectron window.electron && window.electron.isElectron
? setIsCreateBoardOpen(true) ? setIsCreateBoardOpen(true)
: alert( : alert(
'You can create a board with the desktop version of plebchan:\nhttps://github.com/plebbit/plebchan/releases/latest\n\nIf you are comfortable with the command line, use plebbit-cli:\nhttps://github.com/plebbit/plebbit-cli\n\n', 'HOW TO CREATE A BOARD (currently via CLI only):\n\n(1) have a computer you can use as server, because users will connect to your board peer-to-peer;\n\n(2) go to https://github.com/plebbit/plebbit-cli#install and follow the instructions to run your daemon, create a subplebbit (board) and edit its settings;\n\n(3) users can always connect to your board via its address, but it can be added below by submitting a pull request here: https://github.com/plebbit/temporary-default-subplebbits. This will be automated with a plebbit DAO using the plebbit token.',
); );
}} }}
> >
@@ -733,7 +733,7 @@ const Thread = () => {
style={{ cursor: 'pointer' }} style={{ cursor: 'pointer' }}
onClick={() => onClick={() =>
alert( alert(
'You can create a board with the desktop version of plebchan:\nhttps://github.com/plebbit/plebchan/releases/latest\n\nIf you are comfortable with the command line, use plebbit-cli:\nhttps://github.com/plebbit/plebbit-cli\n\n', 'HOW TO CREATE A BOARD (currently via CLI only):\n\n(1) have a computer you can use as server, because users will connect to your board peer-to-peer;\n\n(2) go to https://github.com/plebbit/plebbit-cli#install and follow the instructions to run your daemon, create a subplebbit (board) and edit its settings;\n\n(3) users can always connect to your board via its address, but it can be added below by submitting a pull request here: https://github.com/plebbit/temporary-default-subplebbits. This will be automated with a plebbit DAO using the plebbit token.',
) )
} }
> >
@@ -860,7 +860,7 @@ const Thread = () => {
</td> </td>
</tr> </tr>
<tr data-type='File'> <tr data-type='File'>
<td>Embed File</td> <td>Link</td>
<td> <td>
<input name='embed' type='text' tabIndex={7} placeholder='Paste link' ref={linkRef} /> <input name='embed' type='text' tabIndex={7} placeholder='Paste link' ref={linkRef} />
<button <button
@@ -3159,7 +3159,7 @@ const Thread = () => {
window.electron && window.electron.isElectron window.electron && window.electron.isElectron
? setIsCreateBoardOpen(true) ? setIsCreateBoardOpen(true)
: alert( : alert(
'You can create a board with the desktop version of plebchan:\nhttps://github.com/plebbit/plebchan/releases/latest\n\nIf you are comfortable with the command line, use plebbit-cli:\nhttps://github.com/plebbit/plebbit-cli\n\n', 'HOW TO CREATE A BOARD (currently via CLI only):\n\n(1) have a computer you can use as server, because users will connect to your board peer-to-peer;\n\n(2) go to https://github.com/plebbit/plebbit-cli#install and follow the instructions to run your daemon, create a subplebbit (board) and edit its settings;\n\n(3) users can always connect to your board via its address, but it can be added below by submitting a pull request here: https://github.com/plebbit/temporary-default-subplebbits. This will be automated with a plebbit DAO using the plebbit token.',
); );
}} }}
> >
-15
View File
@@ -2817,21 +2817,6 @@
dependencies: dependencies:
debug "4.3.3" debug "4.3.3"
"@plebbit/plebbit-react-hooks@https://github.com/plebbit/plebbit-react-hooks.git#0024401c390929e47b44331a8dadd61ba212b871":
version "0.0.1"
resolved "https://github.com/plebbit/plebbit-react-hooks.git#0024401c390929e47b44331a8dadd61ba212b871"
dependencies:
"@plebbit/plebbit-js" "https://github.com/plebbit/plebbit-js.git#6985b2a4194328752c6d76e80470c8079c562869"
"@plebbit/plebbit-logger" "https://github.com/plebbit/plebbit-logger.git"
assert "2.0.0"
ethers "5.6.9"
localforage "1.10.0"
lodash.isequal "4.5.0"
memoizee "0.4.15"
quick-lru "5.1.1"
uuid "8.3.2"
zustand "4.0.0"
"@plebbit/plebbit-react-hooks@https://github.com/plebbit/plebbit-react-hooks.git#b6477148191a501aa0b0c11acfc4761aca0dcc1e": "@plebbit/plebbit-react-hooks@https://github.com/plebbit/plebbit-react-hooks.git#b6477148191a501aa0b0c11acfc4761aca0dcc1e":
version "0.0.1" version "0.0.1"
resolved "https://github.com/plebbit/plebbit-react-hooks.git#b6477148191a501aa0b0c11acfc4761aca0dcc1e" resolved "https://github.com/plebbit/plebbit-react-hooks.git#b6477148191a501aa0b0c11acfc4761aca0dcc1e"