mirror of
https://github.com/dergigi/boris.git
synced 2026-01-03 23:14:36 +01:00
feat: update external article menu with Share (Boris link) and Search options
This commit is contained in:
@@ -380,10 +380,16 @@ const ContentPanel: React.FC<ContentPanelProps> = ({
|
|||||||
|
|
||||||
const handleShareExternalUrl = async () => {
|
const handleShareExternalUrl = async () => {
|
||||||
try {
|
try {
|
||||||
if (selectedUrl && (navigator as { share?: (d: { title?: string; url?: string }) => Promise<void> }).share) {
|
if (!selectedUrl) return
|
||||||
await (navigator as { share: (d: { title?: string; url?: string }) => Promise<void> }).share({ title: title || 'Article', url: selectedUrl })
|
const borisUrl = `${window.location.origin}/r/${encodeURIComponent(selectedUrl)}`
|
||||||
} else if (selectedUrl) {
|
|
||||||
await navigator.clipboard.writeText(selectedUrl)
|
if ((navigator as { share?: (d: { title?: string; url?: string }) => Promise<void> }).share) {
|
||||||
|
await (navigator as { share: (d: { title?: string; url?: string }) => Promise<void> }).share({
|
||||||
|
title: title || 'Article',
|
||||||
|
url: borisUrl
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
await navigator.clipboard.writeText(borisUrl)
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.warn('Share failed', e)
|
console.warn('Share failed', e)
|
||||||
@@ -391,6 +397,14 @@ const ContentPanel: React.FC<ContentPanelProps> = ({
|
|||||||
setShowExternalMenu(false)
|
setShowExternalMenu(false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const handleSearchExternalUrl = () => {
|
||||||
|
if (selectedUrl) {
|
||||||
|
const searchUrl = `https://ants.sh/?q=${encodeURIComponent(selectedUrl)}`
|
||||||
|
window.open(searchUrl, '_blank', 'noopener,noreferrer')
|
||||||
|
}
|
||||||
|
setShowExternalMenu(false)
|
||||||
|
}
|
||||||
|
|
||||||
// Check if article is already marked as read when URL/article changes
|
// Check if article is already marked as read when URL/article changes
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@@ -658,10 +672,10 @@ const ContentPanel: React.FC<ContentPanelProps> = ({
|
|||||||
<div className="article-menu">
|
<div className="article-menu">
|
||||||
<button
|
<button
|
||||||
className="article-menu-item"
|
className="article-menu-item"
|
||||||
onClick={handleOpenExternalUrl}
|
onClick={handleShareExternalUrl}
|
||||||
>
|
>
|
||||||
<FontAwesomeIcon icon={faExternalLinkAlt} />
|
<FontAwesomeIcon icon={faShare} />
|
||||||
<span>Open Original URL</span>
|
<span>Share</span>
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
className="article-menu-item"
|
className="article-menu-item"
|
||||||
@@ -672,10 +686,17 @@ const ContentPanel: React.FC<ContentPanelProps> = ({
|
|||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
className="article-menu-item"
|
className="article-menu-item"
|
||||||
onClick={handleShareExternalUrl}
|
onClick={handleOpenExternalUrl}
|
||||||
>
|
>
|
||||||
<FontAwesomeIcon icon={faShare} />
|
<FontAwesomeIcon icon={faExternalLinkAlt} />
|
||||||
<span>Share</span>
|
<span>Open Original</span>
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
className="article-menu-item"
|
||||||
|
onClick={handleSearchExternalUrl}
|
||||||
|
>
|
||||||
|
<FontAwesomeIcon icon={faSearch} />
|
||||||
|
<span>Search</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|||||||
Reference in New Issue
Block a user