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> <Box>
<span>* </span> <span>* </span>
<Anchor href={Constants.browserExtensionUrl} target="_blank" rel="noreferrer"> <Anchor href={Constants.browserExtensionUrl} target="_blank" rel="noreferrer">
<Trans>Browser extension required</Trans> <Trans>Browser extension required for Chrome</Trans>
</Anchor> </Anchor>
</Box> </Box>
</Stack> </Stack>

View File

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

View File

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

View File

@@ -33,7 +33,22 @@ export const useBrowserExtension = () => {
const w = isBrowserExtensionPopup ? window.parent : window const w = isBrowserExtensionPopup ? window.parent : window
const openSettingsPage = () => w.postMessage("open-settings-page", "*") const openSettingsPage = () => w.postMessage("open-settings-page", "*")
const openAppInNewTab = () => w.postMessage("open-app-in-new-tab", "*") 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}`, "*") const setBadgeUnreadCount = (count: number) => w.postMessage(`set-badge-unread-count:${count}`, "*")
return { return {

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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