fallback to ctrl+click simulation if extension is not installed (#1074 #1075)

This commit is contained in:
Athou
2023-06-14 01:02:00 +02:00
parent 8abb2770ec
commit 18f68aab31
32 changed files with 59 additions and 47 deletions

View File

@@ -184,7 +184,7 @@ export function KeyboardShortcutsHelp() {
<Box>
<span>* </span>
<Anchor href={Constants.browserExtensionUrl} target="_blank" rel="noreferrer">
<Trans>Browser extension required</Trans>
<Trans>Browser extension required for Chrome</Trans>
</Anchor>
</Box>
</Stack>

View File

@@ -33,7 +33,7 @@ export function FeedEntries() {
const scrollMarks = useAppSelector(state => state.user.settings?.scrollMarks)
const scrollingToEntry = useAppSelector(state => state.entries.scrollingToEntry)
const dispatch = useAppDispatch()
const { isBrowserExtensionInstalled, openLinkInBackgroundTab } = useBrowserExtension()
const { openLinkInBackgroundTab } = useBrowserExtension()
const selectedEntry = entries.find(e => e.id === selectedEntryId)
@@ -212,7 +212,6 @@ export function FeedEntries() {
window.open(selectedEntry.url, "_blank", "noreferrer")
})
useMousetrap("b", () => {
if (!isBrowserExtensionInstalled) return
if (!selectedEntry) return
openLinkInBackgroundTab(selectedEntry.url)
})

View File

@@ -35,7 +35,7 @@ export function FeedEntryContextMenu(props: FeedEntryContextMenuProps) {
const { classes, theme } = useStyles()
const sourceType = useAppSelector(state => state.entries.source.type)
const dispatch = useAppDispatch()
const { isBrowserExtensionInstalled, openLinkInBackgroundTab } = useBrowserExtension()
const { openLinkInBackgroundTab } = useBrowserExtension()
return (
<Menu id={menuId(props.entry)} theme={theme.colorScheme} animation={false} className={classes.menu}>
@@ -50,19 +50,17 @@ export function FeedEntryContextMenu(props: FeedEntryContextMenuProps) {
<Trans>Open link in new tab</Trans>
</Group>
</Item>
{isBrowserExtensionInstalled && (
<Item
onClick={() => {
openLinkInBackgroundTab(props.entry.url)
dispatch(markEntry({ entry: props.entry, read: true }))
}}
>
<Group>
<TbExternalLink size={iconSize} />
<Trans>Open link in new background tab</Trans>
</Group>
</Item>
)}
<Item
onClick={() => {
openLinkInBackgroundTab(props.entry.url)
dispatch(markEntry({ entry: props.entry, read: true }))
}}
>
<Group>
<TbExternalLink size={iconSize} />
<Trans>Open link in new background tab</Trans>
</Group>
</Item>
<Separator />

View File

@@ -33,7 +33,22 @@ export const useBrowserExtension = () => {
const w = isBrowserExtensionPopup ? window.parent : window
const openSettingsPage = () => w.postMessage("open-settings-page", "*")
const openAppInNewTab = () => w.postMessage("open-app-in-new-tab", "*")
const openLinkInBackgroundTab = (url: string) => w.postMessage(`open-link-in-background-tab:${url}`, "*")
const openLinkInBackgroundTab = (url: string) => {
if (isBrowserExtensionInstalled) {
w.postMessage(`open-link-in-background-tab:${url}`, "*")
} else {
// fallback to ctrl+click simulation
const a = document.createElement("a")
a.href = url
a.rel = "noreferrer"
a.dispatchEvent(
new MouseEvent("click", {
ctrlKey: true,
metaKey: true,
})
)
}
}
const setBadgeUnreadCount = (count: number) => w.postMessage(`set-badge-unread-count:${count}`, "*")
return {

View File

@@ -128,7 +128,7 @@ msgid "Back to log in"
msgstr "العودة لتسجيل الدخول"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx

View File

@@ -128,7 +128,7 @@ msgid "Back to log in"
msgstr "Tornar a iniciar sessió"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx

View File

@@ -128,7 +128,7 @@ msgid "Back to log in"
msgstr "Zpět k přihlášení"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx

View File

@@ -128,7 +128,7 @@ msgid "Back to log in"
msgstr "Yn ôl i fewngofnodi"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx

View File

@@ -128,7 +128,7 @@ msgid "Back to log in"
msgstr "Tilbage for at logge ind"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx

View File

@@ -128,7 +128,7 @@ msgid "Back to log in"
msgstr "Zurück zum Anmelden"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx

View File

@@ -128,8 +128,8 @@ msgid "Back to log in"
msgstr "Back to log in"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgstr "Browser extension required"
msgid "Browser extension required for Chrome"
msgstr "Browser extension required for Chrome"
#: src/pages/app/AboutPage.tsx
msgid "Browser extention"

View File

@@ -128,7 +128,7 @@ msgid "Back to log in"
msgstr "Volver a iniciar sesión"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx

View File

@@ -128,7 +128,7 @@ msgid "Back to log in"
msgstr "بازگشت برای ورود به سیستم"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx

View File

@@ -128,7 +128,7 @@ msgid "Back to log in"
msgstr "Takaisin sisäänkirjautumiseen"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx

View File

@@ -128,7 +128,7 @@ msgid "Back to log in"
msgstr "Retour à la connexion"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx

View File

@@ -128,7 +128,7 @@ msgid "Back to log in"
msgstr "Volver para iniciar sesión"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx

View File

@@ -128,7 +128,7 @@ msgid "Back to log in"
msgstr "Vissza a bejelentkezéshez"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx

View File

@@ -128,7 +128,7 @@ msgid "Back to log in"
msgstr "Kembali untuk masuk"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx

View File

@@ -128,7 +128,7 @@ msgid "Back to log in"
msgstr "Torna per accedere"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx

View File

@@ -128,7 +128,7 @@ msgid "Back to log in"
msgstr "ログインに戻る"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx

View File

@@ -128,7 +128,7 @@ msgid "Back to log in"
msgstr "로그인으로 돌아가기"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx

View File

@@ -128,7 +128,7 @@ msgid "Back to log in"
msgstr "Kembali untuk log masuk"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx

View File

@@ -128,7 +128,7 @@ msgid "Back to log in"
msgstr "Tilbake for å logge inn"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx

View File

@@ -128,7 +128,7 @@ msgid "Back to log in"
msgstr "Terug naar inloggen"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx

View File

@@ -128,7 +128,7 @@ msgid "Back to log in"
msgstr "Tilbake for å logge inn"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx

View File

@@ -128,7 +128,7 @@ msgid "Back to log in"
msgstr "Powrót do logowania"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx

View File

@@ -128,7 +128,7 @@ msgid "Back to log in"
msgstr "Voltar para logar"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx

View File

@@ -128,7 +128,7 @@ msgid "Back to log in"
msgstr "Вернуться к входу"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx

View File

@@ -128,7 +128,7 @@ msgid "Back to log in"
msgstr "Späť na prihlásenie"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx

View File

@@ -128,7 +128,7 @@ msgid "Back to log in"
msgstr "Tillbaka för att logga in"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx

View File

@@ -128,7 +128,7 @@ msgid "Back to log in"
msgstr "Giriş yapmak için geri dön"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx

View File

@@ -128,7 +128,7 @@ msgid "Back to log in"
msgstr "返回登录"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Browser extension required"
msgid "Browser extension required for Chrome"
msgstr ""
#: src/pages/app/AboutPage.tsx