mirror of
https://github.com/Psychotoxical/psysonic.git
synced 2026-07-22 07:15:47 +00:00
refactor(server): move serverCapabilities into lib
The serverCapabilities cluster (catalog, context, resolve, storeView, types) is lib-level infra: it imports only @/lib/server and is consumed by both lib and feature code, so a feature home would invert the two lib consumers. Move it to src/lib/serverCapabilities and repoint consumers. Pure move + import updates, no behavior change. Baseline gains one lib->store entry (storeView reads authStore, only now caught under lib/).
This commit is contained in:
@@ -4,7 +4,7 @@ vi.mock('@/lib/api/subsonicScrobble', () => ({
|
||||
reportPlayback: vi.fn(() => Promise.resolve()),
|
||||
reportNowPlaying: vi.fn(() => Promise.resolve()),
|
||||
}));
|
||||
vi.mock('@/serverCapabilities/storeView', () => ({
|
||||
vi.mock('@/lib/serverCapabilities/storeView', () => ({
|
||||
isFeatureActiveForServer: vi.fn(),
|
||||
}));
|
||||
vi.mock('@/store/authStore', () => ({
|
||||
@@ -25,7 +25,7 @@ vi.mock('@/store/orbitRuntime', async (importOriginal) => ({
|
||||
}));
|
||||
|
||||
import { reportNowPlaying, reportPlayback } from '@/lib/api/subsonicScrobble';
|
||||
import { isFeatureActiveForServer } from '@/serverCapabilities/storeView';
|
||||
import { isFeatureActiveForServer } from '@/lib/serverCapabilities/storeView';
|
||||
import { useAuthStore } from '@/store/authStore';
|
||||
import {
|
||||
_resetPlaybackReportSessionForTest,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { reportNowPlaying, reportPlayback } from '@/lib/api/subsonicScrobble';
|
||||
import type { PlaybackReportState } from '@/lib/api/subsonicTypes';
|
||||
import { FEATURE_PLAYBACK_REPORT } from '@/serverCapabilities/catalog';
|
||||
import { isFeatureActiveForServer } from '@/serverCapabilities/storeView';
|
||||
import { FEATURE_PLAYBACK_REPORT } from '@/lib/serverCapabilities/catalog';
|
||||
import { isFeatureActiveForServer } from '@/lib/serverCapabilities/storeView';
|
||||
import { isPlaybackRateApplied } from '@/features/playback/utils/audio/playbackRateHelpers';
|
||||
import { isOrbitPlaybackSyncActive } from '@/store/orbitRuntime';
|
||||
import { useAuthStore } from '@/store/authStore';
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { getCapabilityDefinition } from '@/serverCapabilities/catalog';
|
||||
import { isFeatureActiveForServer, resolveFeatureForServer } from '@/serverCapabilities/storeView';
|
||||
import { getCapabilityDefinition } from '@/lib/serverCapabilities/catalog';
|
||||
import { isFeatureActiveForServer, resolveFeatureForServer } from '@/lib/serverCapabilities/storeView';
|
||||
|
||||
/** Inline badge for auto-managed server capabilities (Settings → Servers header row). */
|
||||
export function ServerCapabilityHeaderBadge({
|
||||
|
||||
@@ -5,7 +5,7 @@ import { open as openUrl } from '@tauri-apps/plugin-shell';
|
||||
import { AlertTriangle, CheckCircle2, Info, Lock, LogOut, Pencil, Plus, Power, Server, Sparkles, Wifi, WifiOff } from 'lucide-react';
|
||||
import { useAuthStore } from '@/store/authStore';
|
||||
import { formatServerSoftware, isNavidromeAudiomuseSoftwareEligible, type InstantMixProbeResult, type SubsonicServerIdentity } from '@/lib/server/subsonicServerIdentity';
|
||||
import { buildCapabilityContext } from '@/serverCapabilities/context';
|
||||
import { buildCapabilityContext } from '@/lib/serverCapabilities/context';
|
||||
import { useLibraryIndexStore } from '@/store/libraryIndexStore';
|
||||
import { libraryDeleteServerData, librarySyncClearSession } from '@/lib/api/library';
|
||||
import { bootstrapIndexedServer } from '@/lib/library/librarySession';
|
||||
@@ -29,9 +29,9 @@ import {
|
||||
} from '@/lib/server/serverUrlRemigration';
|
||||
import { useConfirmModalStore } from '@/store/confirmModalStore';
|
||||
import { showToast } from '@/lib/dom/toast';
|
||||
import { FEATURE_AUDIOMUSE_SIMILAR_TRACKS } from '@/serverCapabilities/catalog';
|
||||
import { isFeatureActiveForServer, resolveFeatureForServer } from '@/serverCapabilities/storeView';
|
||||
import type { ResolvedCapability } from '@/serverCapabilities/types';
|
||||
import { FEATURE_AUDIOMUSE_SIMILAR_TRACKS } from '@/lib/serverCapabilities/catalog';
|
||||
import { isFeatureActiveForServer, resolveFeatureForServer } from '@/lib/serverCapabilities/storeView';
|
||||
import type { ResolvedCapability } from '@/lib/serverCapabilities/types';
|
||||
import { serverIdentityLabel, serverListDisplayLabel, serverSettingsEntryTitle } from '@/lib/server/serverDisplayName';
|
||||
import { serverIndexKeyForProfile } from '@/lib/server/serverIndexKey';
|
||||
import { switchActiveServer } from '@/utils/server/switchActiveServer';
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
import { useAuthStore } from '@/store/authStore';
|
||||
import type { NavidromeAdminRole } from '@/lib/hooks/useNavidromeAdminRole';
|
||||
import { isNavidromeServer, formatServerSoftware } from '@/lib/server/subsonicServerIdentity';
|
||||
import { FEATURE_AUDIOMUSE_SIMILAR_TRACKS, OP_SIMILAR_TRACKS } from '@/serverCapabilities/catalog';
|
||||
import { FEATURE_AUDIOMUSE_SIMILAR_TRACKS, OP_SIMILAR_TRACKS } from '@/lib/serverCapabilities/catalog';
|
||||
import {
|
||||
isFeatureActiveForServer,
|
||||
resolveCallRoutesForServer,
|
||||
resolveFeatureForServer,
|
||||
} from '@/serverCapabilities/storeView';
|
||||
import type { CapabilityStatus, FeatureTrust, ResolvedCapability } from '@/serverCapabilities/types';
|
||||
} from '@/lib/serverCapabilities/storeView';
|
||||
import type { CapabilityStatus, FeatureTrust, ResolvedCapability } from '@/lib/serverCapabilities/types';
|
||||
import { PerfProbeMetricSection } from '@/features/sidebar/components/perfProbe/PerfProbeMetricCard';
|
||||
import PerfProbeDetailList, { type PerfProbeDetailRow } from '@/features/sidebar/components/perfProbe/PerfProbeDetailList';
|
||||
import PerfProbeStatusBadge, { type PerfProbeBadgeTone } from '@/features/sidebar/components/perfProbe/PerfProbeStatusBadge';
|
||||
|
||||
Reference in New Issue
Block a user