mirror of
https://github.com/jeffvli/feishin.git
synced 2026-07-08 03:30:01 +02:00
more potential fixes for server lock duplication
This commit is contained in:
@@ -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', {
|
||||
|
||||
Reference in New Issue
Block a user