more potential fixes for server lock duplication

This commit is contained in:
jeffvli
2026-06-15 20:49:17 -07:00
parent ba4664e797
commit f7adcb8533
3 changed files with 68 additions and 18 deletions
@@ -6,6 +6,10 @@ import { Navigate } from 'react-router';
import { api } from '/@/renderer/api';
import { PageHeader } from '/@/renderer/components/page-header/page-header';
import {
findExistingServerLockServer,
normalizeServerUrl,
} from '/@/renderer/features/action-required/utils/server-lock';
import {
isLegacyAuth,
isServerLock,
@@ -19,6 +23,7 @@ import { PageErrorBoundary } from '/@/renderer/features/shared/components/page-e
import { AppRoute } from '/@/renderer/router/routes';
import {
getServerById,
useAuthStore,
useAuthStoreActions,
useCurrentServer,
useServerList,
@@ -51,12 +56,10 @@ const SERVER_NAMES: Record<ServerType, string> = {
[ServerType.SUBSONIC]: 'OpenSubsonic',
};
const normalizeUrl = (url: string) => url.replace(/\/$/, '');
const LoginRoute = () => {
const { t } = useTranslation();
const [isLoading, setIsLoading] = useState(false);
const { addServer, setCurrentServer, updateServer } = useAuthStoreActions();
const { addServer, deleteServer, setCurrentServer, updateServer } = useAuthStoreActions();
const currentServer = useCurrentServer();
const serverList = useServerList();
@@ -151,15 +154,16 @@ const LoginRoute = () => {
});
}
const normalizedUrl = normalizeUrl(serverUrl);
const normalizedRemoteURL = normalizeUrl(remoteUrl);
const existingServer =
serverLock &&
Object.values(serverList).find((s) => normalizeUrl(s.url) === normalizedUrl);
const normalizedUrl = normalizeServerUrl(serverUrl);
const normalizedRemoteURL = normalizeServerUrl(remoteUrl);
const existingServer = serverLock
? findExistingServerLockServer(serverList, normalizedUrl, serverType)
: undefined;
const serverId = existingServer?.id ?? nanoid();
const serverItem: ServerListItemWithCredential = {
credential: data.credential,
id: nanoid(),
id: serverId,
isAdmin: data.isAdmin,
name: serverName,
remoteUrl: normalizedRemoteURL,
@@ -173,6 +177,9 @@ const LoginRoute = () => {
const updates: Partial<ServerListItemWithCredential> = {
credential: data.credential,
isAdmin: data.isAdmin,
name: serverName,
remoteUrl: normalizedRemoteURL,
url: normalizedUrl,
userId: data.userId,
username: data.username,
};
@@ -190,12 +197,20 @@ const LoginRoute = () => {
setCurrentServer(serverItem);
}
if (serverLock) {
Object.values(useAuthStore.getState().serverList).forEach((server) => {
if (server.id !== serverId) {
deleteServer(server.id);
}
});
}
toast.success({
message: t('form.addServer.success'),
});
if (localSettings && values.password) {
const saved = await localSettings.passwordSet(values.password, serverItem.id);
const saved = await localSettings.passwordSet(values.password, serverId);
if (!saved) {
toast.error({
message: t('form.addServer.error', {