summaryrefslogtreecommitdiffhomepage
path: root/desktop
diff options
context:
space:
mode:
authorTobias Järvelöv <tobias.jarvelov@mullvad.net>2025-09-03 16:35:34 +0200
committerTobias Järvelöv <tobias.jarvelov@mullvad.net>2025-09-11 14:55:41 +0200
commita3d5e4cc8d859ee96ecc836a04e26cd7c8559c07 (patch)
tree48348cd30ceed7cd943aecc806240dc1c0f186fa /desktop
parent4ff6060f02996e23c1f86c4cf1c17e6e80652cfa (diff)
downloadmullvadvpn-a3d5e4cc8d859ee96ecc836a04e26cd7c8559c07.tar.xz
mullvadvpn-a3d5e4cc8d859ee96ecc836a04e26cd7c8559c07.zip
Show spinner when linux application list is not ready to display
Diffstat (limited to 'desktop')
-rw-r--r--desktop/packages/mullvad-vpn/src/renderer/components/views/split-tunneling/components/linux-settings/LinuxSettings.tsx10
-rw-r--r--desktop/packages/mullvad-vpn/src/renderer/components/views/split-tunneling/components/linux-settings/hooks/index.ts1
-rw-r--r--desktop/packages/mullvad-vpn/src/renderer/components/views/split-tunneling/components/linux-settings/hooks/use-show-spinner.ts12
3 files changed, 21 insertions, 2 deletions
diff --git a/desktop/packages/mullvad-vpn/src/renderer/components/views/split-tunneling/components/linux-settings/LinuxSettings.tsx b/desktop/packages/mullvad-vpn/src/renderer/components/views/split-tunneling/components/linux-settings/LinuxSettings.tsx
index c0970d13dc..fc9a7c3ca3 100644
--- a/desktop/packages/mullvad-vpn/src/renderer/components/views/split-tunneling/components/linux-settings/LinuxSettings.tsx
+++ b/desktop/packages/mullvad-vpn/src/renderer/components/views/split-tunneling/components/linux-settings/LinuxSettings.tsx
@@ -3,7 +3,7 @@ import { useEffect } from 'react';
import { strings } from '../../../../../../shared/constants';
import { messages } from '../../../../../../shared/gettext';
import { useAppContext } from '../../../../../context';
-import { Flex } from '../../../../../lib/components';
+import { Flex, Spinner } from '../../../../../lib/components';
import { FlexColumn } from '../../../../../lib/components/flex-column';
import { useAfterTransition } from '../../../../../lib/transition-hooks';
import { useEffectEvent } from '../../../../../lib/utility-hooks';
@@ -11,7 +11,7 @@ import SettingsHeader, { HeaderSubTitle, HeaderTitle } from '../../../../Setting
import { ApplicationSearchBar } from '../application-search-bar';
import { ApplicationSearchNoResult } from '../application-search-no-result';
import { LaunchErrorDialog, LinuxApplicationList, OpenFilePickerButton } from './components';
-import { useShowLinuxApplicationList, useShowNoSearchResult } from './hooks';
+import { useShowLinuxApplicationList, useShowNoSearchResult, useShowSpinner } from './hooks';
import { LinuxSettingsContextProvider, useLinuxSettingsContext } from './LinuxSettingsContext';
function LinuxSettingsInner() {
@@ -20,6 +20,7 @@ function LinuxSettingsInner() {
const runAfterTransition = useAfterTransition();
const showLinuxApplicationList = useShowLinuxApplicationList();
const showNoSearchResult = useShowNoSearchResult();
+ const showSpinner = useShowSpinner();
const updateApplications = useEffectEvent(() => {
runAfterTransition(async () => {
@@ -50,6 +51,11 @@ function LinuxSettingsInner() {
{showNoSearchResult && <ApplicationSearchNoResult searchTerm={searchTerm} />}
<FlexColumn $gap="medium">
{showLinuxApplicationList && <LinuxApplicationList />}
+ {showSpinner && (
+ <Flex $justifyContent="center" $margin={{ top: 'large' }}>
+ <Spinner size="big" />
+ </Flex>
+ )}
<Flex $margin={{ horizontal: 'medium', bottom: 'large' }}>
<OpenFilePickerButton />
</Flex>
diff --git a/desktop/packages/mullvad-vpn/src/renderer/components/views/split-tunneling/components/linux-settings/hooks/index.ts b/desktop/packages/mullvad-vpn/src/renderer/components/views/split-tunneling/components/linux-settings/hooks/index.ts
index 103337c62a..4acd4bba98 100644
--- a/desktop/packages/mullvad-vpn/src/renderer/components/views/split-tunneling/components/linux-settings/hooks/index.ts
+++ b/desktop/packages/mullvad-vpn/src/renderer/components/views/split-tunneling/components/linux-settings/hooks/index.ts
@@ -2,3 +2,4 @@ export * from './use-filtered-applications';
export * from './use-launch-application';
export * from './use-show-linux-application-list';
export * from './use-show-no-search-result';
+export * from './use-show-spinner';
diff --git a/desktop/packages/mullvad-vpn/src/renderer/components/views/split-tunneling/components/linux-settings/hooks/use-show-spinner.ts b/desktop/packages/mullvad-vpn/src/renderer/components/views/split-tunneling/components/linux-settings/hooks/use-show-spinner.ts
new file mode 100644
index 0000000000..d95d2f2f3d
--- /dev/null
+++ b/desktop/packages/mullvad-vpn/src/renderer/components/views/split-tunneling/components/linux-settings/hooks/use-show-spinner.ts
@@ -0,0 +1,12 @@
+import { useLinuxSettingsContext } from '../LinuxSettingsContext';
+import { useFilteredApplications } from './use-filtered-applications';
+
+export function useShowSpinner() {
+ const { searchTerm } = useLinuxSettingsContext();
+ const filteredApplications = useFilteredApplications();
+
+ const showNoSearchResult =
+ searchTerm === '' && (filteredApplications === undefined || filteredApplications.length === 0);
+
+ return showNoSearchResult;
+}