diff --git a/app/assets/javascripts/preferences/panes/Extensions.tsx b/app/assets/javascripts/preferences/panes/Extensions.tsx index e313134ba..f7b870671 100644 --- a/app/assets/javascripts/preferences/panes/Extensions.tsx +++ b/app/assets/javascripts/preferences/panes/Extensions.tsx @@ -3,33 +3,30 @@ import { Button } from '@/components/Button'; import { DecoratedInput } from '@/components/DecoratedInput'; import { WebApplication } from '@/ui_models/application'; import { FunctionComponent } from 'preact'; +import { Title, PreferencesSegment } from '../components'; import { - Title, - PreferencesSegment, -} from '../components'; -import { ConfirmCustomExtension, ExtensionItem, ExtensionsLatestVersions } from './extensions-segments'; + ConfirmCustomExtension, + ExtensionItem, + ExtensionsLatestVersions, +} from './extensions-segments'; import { useEffect, useRef, useState } from 'preact/hooks'; import { observer } from 'mobx-react-lite'; -const loadExtensions = (application: WebApplication) => application.getItems([ - ContentType.ActionsExtension, - ContentType.Component, - ContentType.Theme, -], true) as SNComponent[]; +const loadExtensions = (application: WebApplication) => + application.getItems( + [ContentType.ActionsExtension, ContentType.Component, ContentType.Theme], + true + ) as SNComponent[]; export const Extensions: FunctionComponent<{ - application: WebApplication - extensionsLatestVersions: ExtensionsLatestVersions, - className?: string, -}> = observer( - ({ - application, - extensionsLatestVersions, - className = '' - }) => { - + application: WebApplication; + extensionsLatestVersions: ExtensionsLatestVersions; + className?: string; +}> = observer(({ application, extensionsLatestVersions, className = '' }) => { const [customUrl, setCustomUrl] = useState(''); - const [confirmableExtension, setConfirmableExtension] = useState(undefined); + const [confirmableExtension, setConfirmableExtension] = useState< + SNComponent | undefined + >(undefined); const [extensions, setExtensions] = useState(loadExtensions(application)); const confirmableEnd = useRef(null); @@ -41,13 +38,14 @@ export const Extensions: FunctionComponent<{ }, [confirmableExtension, confirmableEnd]); const uninstallExtension = async (extension: SNComponent) => { - application.alertService.confirm( - 'Are you sure you want to uninstall this extension? Note that extensions managed by your subscription will automatically be re-installed on application restart.', - 'Uninstall Extension?', - 'Uninstall', - ButtonType.Danger, - 'Cancel' - ) + application.alertService + .confirm( + 'Are you sure you want to uninstall this extension? Note that extensions managed by your subscription will automatically be re-installed on application restart.', + 'Uninstall Extension?', + 'Uninstall', + ButtonType.Danger, + 'Cancel' + ) .then(async (shouldRemove: boolean) => { if (shouldRemove) { await application.deleteItem(extension); @@ -84,41 +82,46 @@ export const Extensions: FunctionComponent<{ setExtensions(loadExtensions(application)); }; - const visibleExtensions = extensions - .filter((extension) => { - return extension.package_info != undefined && !['modal', 'rooms'].includes(extension.area); - }); + const visibleExtensions = extensions.filter((extension) => { + return ( + extension.package_info != undefined && + !['modal', 'rooms'].includes(extension.area) + ); + }); return (
- {visibleExtensions.length > 0 && + {visibleExtensions.length > 0 && (
- { - visibleExtensions - .sort((e1, e2) => e1.name.toLowerCase().localeCompare(e2.name.toLowerCase())) - .map((extension, i) => ( - - )) - } + {visibleExtensions + .sort((e1, e2) => + e1.name?.toLowerCase().localeCompare(e2.name?.toLowerCase()) + ) + .map((extension, i) => ( + + ))}
- } + )}
- {!confirmableExtension && + {!confirmableExtension && ( Install Custom Extension
{ setCustomUrl(value); }} + onChange={(value) => { + setCustomUrl(value); + }} />
);