diff --git a/src/renderer/features/sidebar/components/server-selector-items.tsx b/src/renderer/features/sidebar/components/server-selector-items.tsx
index 9e04003b6..1a574f1e7 100644
--- a/src/renderer/features/sidebar/components/server-selector-items.tsx
+++ b/src/renderer/features/sidebar/components/server-selector-items.tsx
@@ -1,4 +1,4 @@
-import { openModal } from '@mantine/modals';
+import { closeAllModals, openModal } from '@mantine/modals';
import { useQuery, useQueryClient } from '@tanstack/react-query';
import isElectron from 'is-electron';
import { useTranslation } from 'react-i18next';
@@ -8,6 +8,7 @@ import { isServerLock } from '/@/renderer/features/action-required/utils/window-
import JellyfinLogo from '/@/renderer/features/servers/assets/jellyfin.png';
import NavidromeLogo from '/@/renderer/features/servers/assets/navidrome.png';
import OpenSubsonicLogo from '/@/renderer/features/servers/assets/opensubsonic.png';
+import { EditServerForm } from '/@/renderer/features/servers/components/edit-server-form';
import { ServerList } from '/@/renderer/features/servers/components/server-list';
import { sharedQueries } from '/@/renderer/features/shared/api/shared-api';
import { AppRoute } from '/@/renderer/router/routes';
@@ -15,7 +16,11 @@ import { useAuthStoreActions, useCurrentServer, useServerList } from '/@/rendere
import { hasFeature } from '/@/shared/api/utils';
import { DropdownMenu } from '/@/shared/components/dropdown-menu/dropdown-menu';
import { Icon } from '/@/shared/components/icon/icon';
-import { ServerListItemWithCredential, ServerType } from '/@/shared/types/domain-types';
+import {
+ ServerListItem,
+ ServerListItemWithCredential,
+ ServerType,
+} from '/@/shared/types/domain-types';
import { ServerFeature } from '/@/shared/types/features-types';
const localSettings = isElectron() ? window.api.localSettings : null;
@@ -39,6 +44,31 @@ export const ServerSelectorItems = () => {
setMusicFolderId(undefined);
};
+ const handleCredentialsModal = async (server: ServerListItem) => {
+ let password: null | string = null;
+
+ try {
+ if (localSettings && server.savePassword) {
+ password = await localSettings.passwordGet(server.id);
+ }
+ } catch (error) {
+ console.error(error);
+ }
+
+ openModal({
+ children: (
+
+ ),
+ size: 'sm',
+ title: t('form.updateServer.title'),
+ });
+ };
+
const supportsMultiSelect = hasFeature(currentServer, ServerFeature.MUSIC_FOLDER_MULTISELECT);
const queryClient = useQueryClient();
@@ -131,10 +161,15 @@ export const ServerSelectorItems = () => {
key={`server-${server.id}`}
leftSection={
}
onClick={() => {
- if (!isSessionExpired) {
+ if (isSessionExpired) {
+ handleCredentialsModal(server);
+ } else {
handleSetCurrentServer(server);
}
}}
+ rightSection={
+ isSessionExpired ? :
+ }
>
{server.name}