From cf4d97e7f924f0d4a74e36c33d4d48ca77ec997b Mon Sep 17 00:00:00 2001 From: Rajarshee Chatterjee Date: Tue, 30 Apr 2024 20:13:57 +0530 Subject: [PATCH] Use `Promise.allSettled` and Update Plugin Repository Regex --- src/plugins/pluginManager.ts | 11 +++++++++-- .../components/AddRepositoryModal.tsx | 6 +++--- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/plugins/pluginManager.ts b/src/plugins/pluginManager.ts index 29e12603..fdaa1465 100644 --- a/src/plugins/pluginManager.ts +++ b/src/plugins/pluginManager.ts @@ -16,6 +16,7 @@ import { encode, decode } from 'urlencode'; import { Parser } from 'htmlparser2'; import TextFile from '@native/TextFile'; import { getRepositoriesFromDb } from '@database/queries/RepositoryQueries'; +import { showToast } from '@utils/showToast'; const pluginsFilePath = PluginDownloadFolder + '/plugins.json'; @@ -132,11 +133,17 @@ const fetchPlugins = async (): Promise => { const allPlugins: PluginItem[] = []; const allRepositories = await getRepositoriesFromDb(); - const repoPluginsRes = await Promise.all( + const repoPluginsRes = await Promise.allSettled( allRepositories.map(({ url }) => fetch(url).then(res => res.json())), ); - repoPluginsRes.forEach(repoPlugins => allPlugins.push(...repoPlugins)); + repoPluginsRes.forEach(repoPlugins => { + if (repoPlugins.status === 'fulfilled') { + allPlugins.push(...repoPlugins.value); + } else { + showToast(repoPlugins.reason); + } + }); return uniqBy(reverse(allPlugins), 'id'); }; diff --git a/src/screens/settings/SettingsRepositoryScreen/components/AddRepositoryModal.tsx b/src/screens/settings/SettingsRepositoryScreen/components/AddRepositoryModal.tsx index ef273cfe..94ef771c 100644 --- a/src/screens/settings/SettingsRepositoryScreen/components/AddRepositoryModal.tsx +++ b/src/screens/settings/SettingsRepositoryScreen/components/AddRepositoryModal.tsx @@ -60,9 +60,9 @@ const AddRepositoryModal: React.FC = ({ title={getString(isEditMode ? 'common.ok' : 'common.add')} onPress={async () => { if ( - !new RegExp( - /https:\/\/raw\.githubusercontent\.com\/(.*)plugins\.min\.json/, - ).test(repositoryUrl) + !new RegExp(/http(?:s)?:\/\/(.*)plugins\.min\.json/).test( + repositoryUrl, + ) ) { showToast('Repository URL is invalid'); return;