From 54c99eb054d3a98a141677ebd5743565ec365c1c Mon Sep 17 00:00:00 2001 From: xmflsct Date: Tue, 20 Dec 2022 23:09:21 +0100 Subject: [PATCH] Fix #593 --- fastlane/metadata/en-US/release_notes.txt | 4 --- fastlane/metadata/zh-Hans/release_notes.txt | 4 --- package.json | 2 +- src/components/openLink.ts | 28 ++++++++++++--------- 4 files changed, 17 insertions(+), 21 deletions(-) diff --git a/fastlane/metadata/en-US/release_notes.txt b/fastlane/metadata/en-US/release_notes.txt index 699973d8..862623d2 100644 --- a/fastlane/metadata/en-US/release_notes.txt +++ b/fastlane/metadata/en-US/release_notes.txt @@ -1,5 +1 @@ Enjoy toooting! This version includes following improvements and fixes: -- Align filter experience with v4.0 and above -- Supports enlarging user's avatar and banner -- Fix iPad weird sizing (not optimisation) -- Experiment (!) support of Pleroma diff --git a/fastlane/metadata/zh-Hans/release_notes.txt b/fastlane/metadata/zh-Hans/release_notes.txt index ee10414f..d9488dcd 100644 --- a/fastlane/metadata/zh-Hans/release_notes.txt +++ b/fastlane/metadata/zh-Hans/release_notes.txt @@ -1,5 +1 @@ toooting愉快!此版本包括以下改进和修复: -- 改进过滤体验,与v4.0以上版本一致 -- 支持查看用户的头像和横幅图片 -- 修复iPad部分尺寸问题(非优化) -- 试验性(!)支持Pleroma diff --git a/package.json b/package.json index 82ef675d..1a0f20db 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "tooot", - "version": "4.7.1", + "version": "4.7.2", "description": "tooot for Mastodon", "author": "xmflsct ", "license": "GPL-3.0-or-later", diff --git a/src/components/openLink.ts b/src/components/openLink.ts index 4e566f7d..cf0f9f68 100644 --- a/src/components/openLink.ts +++ b/src/components/openLink.ts @@ -7,6 +7,7 @@ import { SearchResult } from '@utils/queryHooks/search' import { getSettingsBrowser } from '@utils/slices/settingsSlice' import * as Linking from 'expo-linking' import * as WebBrowser from 'expo-web-browser' +import validUrl from 'valid-url' export let loadingLink = false @@ -86,18 +87,21 @@ const openLink = async (url: string, navigation?: any) => { } loadingLink = false - switch (getSettingsBrowser(store.getState())) { - // Some links might end with an empty space at the end that triggers an error - case 'internal': - await WebBrowser.openBrowserAsync(encodeURI(url), { - dismissButtonStyle: 'close', - enableBarCollapsing: true, - ...(await browserPackage()) - }) - break - case 'external': - await Linking.openURL(encodeURI(url)) - break + const validatedUrl = validUrl.isWebUri(url) + if (validatedUrl) { + switch (getSettingsBrowser(store.getState())) { + // Some links might end with an empty space at the end that triggers an error + case 'internal': + await WebBrowser.openBrowserAsync(validatedUrl, { + dismissButtonStyle: 'close', + enableBarCollapsing: true, + ...(await browserPackage()) + }) + break + case 'external': + await Linking.openURL(validatedUrl) + break + } } }