mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2026-01-02 10:42:44 +00:00
Move "share" dropdown to own component
This commit is contained in:
35
client/homebrew/navbar/share.navitem.jsx
Normal file
35
client/homebrew/navbar/share.navitem.jsx
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
import React from 'react';
|
||||||
|
import dedent from 'dedent-tabs';
|
||||||
|
import Nav from 'naturalcrit/nav/nav.jsx';
|
||||||
|
|
||||||
|
const getShareId = (brew)=>(
|
||||||
|
brew.googleId && !brew.stubbed
|
||||||
|
? brew.googleId + brew.shareId
|
||||||
|
: brew.shareId
|
||||||
|
);
|
||||||
|
|
||||||
|
const getRedditLink = (brew)=>{
|
||||||
|
const text = dedent`
|
||||||
|
Hey guys! I've been working on this homebrew. I'd love your feedback. Check it out.
|
||||||
|
|
||||||
|
**[Homebrewery Link](${global.config.baseUrl}/share/${getShareId(brew)})**`;
|
||||||
|
|
||||||
|
return `https://www.reddit.com/r/UnearthedArcana/submit?title=${encodeURIComponent(brew.title.toWellFormed())}&text=${encodeURIComponent(text)}`;
|
||||||
|
};
|
||||||
|
|
||||||
|
export default ({brew}) => (
|
||||||
|
<Nav.dropdown>
|
||||||
|
<Nav.item color='teal' icon='fas fa-share-alt'>
|
||||||
|
share
|
||||||
|
</Nav.item>
|
||||||
|
<Nav.item color='blue' href={`/share/${getShareId(brew)}`}>
|
||||||
|
view
|
||||||
|
</Nav.item>
|
||||||
|
<Nav.item color='blue' onClick={()=>{navigator.clipboard.writeText(`${global.config.baseUrl}/share/${getShareId(brew)}`);}}>
|
||||||
|
copy url
|
||||||
|
</Nav.item>
|
||||||
|
<Nav.item color='blue' href={getRedditLink(brew)} newTab rel='noopener noreferrer'>
|
||||||
|
post to reddit
|
||||||
|
</Nav.item>
|
||||||
|
</Nav.dropdown>
|
||||||
|
);
|
||||||
@@ -15,6 +15,7 @@ import Nav from 'naturalcrit/nav/nav.jsx';
|
|||||||
import Navbar from '../../navbar/navbar.jsx';
|
import Navbar from '../../navbar/navbar.jsx';
|
||||||
import NewBrewItem from '../../navbar/newbrew.navitem.jsx';
|
import NewBrewItem from '../../navbar/newbrew.navitem.jsx';
|
||||||
import AccountNavItem from '../../navbar/account.navitem.jsx';
|
import AccountNavItem from '../../navbar/account.navitem.jsx';
|
||||||
|
import ShareNavItem from '../../navbar/share.navitem.jsx';
|
||||||
import ErrorNavItem from '../../navbar/error-navitem.jsx';
|
import ErrorNavItem from '../../navbar/error-navitem.jsx';
|
||||||
import HelpNavItem from '../../navbar/help.navitem.jsx';
|
import HelpNavItem from '../../navbar/help.navitem.jsx';
|
||||||
import VaultNavItem from '../../navbar/vault.navitem.jsx';
|
import VaultNavItem from '../../navbar/vault.navitem.jsx';
|
||||||
@@ -333,31 +334,12 @@ const EditPage = (props)=>{
|
|||||||
</Nav.item>
|
</Nav.item>
|
||||||
);
|
);
|
||||||
|
|
||||||
const processShareId = ()=>(
|
|
||||||
currentBrew.googleId && !currentBrew.stubbed
|
|
||||||
? currentBrew.googleId + currentBrew.shareId
|
|
||||||
: currentBrew.shareId
|
|
||||||
);
|
|
||||||
|
|
||||||
const getRedditLink = ()=>{
|
|
||||||
const shareLink = processShareId();
|
|
||||||
const systems = currentBrew.systems.length > 0 ? ` [${currentBrew.systems.join(' - ')}]` : '';
|
|
||||||
const title = `${currentBrew.title} ${systems}`;
|
|
||||||
const text = `Hey guys! I've been working on this homebrew. I'd love your feedback. Check it out.
|
|
||||||
|
|
||||||
**[Homebrewery Link](${global.config.baseUrl}/share/${shareLink})**`;
|
|
||||||
|
|
||||||
return `https://www.reddit.com/r/UnearthedArcana/submit?title=${encodeURIComponent(title.toWellFormed())}&text=${encodeURIComponent(text)}`;
|
|
||||||
};
|
|
||||||
|
|
||||||
const clearError = ()=>{
|
const clearError = ()=>{
|
||||||
setError(null);
|
setError(null);
|
||||||
setIsSaving(false);
|
setIsSaving(false);
|
||||||
};
|
};
|
||||||
|
|
||||||
const renderNavbar = ()=>{
|
const renderNavbar = ()=>{
|
||||||
const shareLink = processShareId();
|
|
||||||
|
|
||||||
return <Navbar>
|
return <Navbar>
|
||||||
<Nav.section>
|
<Nav.section>
|
||||||
<Nav.item className='brewTitle'>{currentBrew.title}</Nav.item>
|
<Nav.item className='brewTitle'>{currentBrew.title}</Nav.item>
|
||||||
@@ -373,20 +355,7 @@ const EditPage = (props)=>{
|
|||||||
</Nav.dropdown>}
|
</Nav.dropdown>}
|
||||||
<NewBrewItem/>
|
<NewBrewItem/>
|
||||||
<HelpNavItem/>
|
<HelpNavItem/>
|
||||||
<Nav.dropdown>
|
<ShareNavItem brew={currentBrew} />
|
||||||
<Nav.item color='teal' icon='fas fa-share-alt'>
|
|
||||||
share
|
|
||||||
</Nav.item>
|
|
||||||
<Nav.item color='blue' href={`/share/${shareLink}`}>
|
|
||||||
view
|
|
||||||
</Nav.item>
|
|
||||||
<Nav.item color='blue' onClick={()=>{navigator.clipboard.writeText(`${global.config.baseUrl}/share/${shareLink}`);}}>
|
|
||||||
copy url
|
|
||||||
</Nav.item>
|
|
||||||
<Nav.item color='blue' href={getRedditLink()} newTab={true} rel='noopener noreferrer'>
|
|
||||||
post to reddit
|
|
||||||
</Nav.item>
|
|
||||||
</Nav.dropdown>
|
|
||||||
<PrintNavItem />
|
<PrintNavItem />
|
||||||
<VaultNavItem />
|
<VaultNavItem />
|
||||||
<RecentNavItem brew={currentBrew} storageKey='edit' />
|
<RecentNavItem brew={currentBrew} storageKey='edit' />
|
||||||
|
|||||||
Reference in New Issue
Block a user