06e49be1f9
99ea3a6 feat: Display next sync schedule information fb8d17a feat: Implement schedule settings and basic UI git-subtree-dir: sample-front-end git-subtree-split: 99ea3a68de98503b706d3ee5782baf4a66dc7134
89 lines
1.6 KiB
TypeScript
89 lines
1.6 KiB
TypeScript
|
|
|
|
export interface Track {
|
|
id: string;
|
|
title: string;
|
|
artist: string;
|
|
duration: number; // in seconds
|
|
}
|
|
|
|
export interface Playlist {
|
|
id: string;
|
|
title: string;
|
|
trackCount: number;
|
|
thumbnail?: string;
|
|
lastUpdated: string;
|
|
tracks?: Track[]; // Optional detailed track list
|
|
}
|
|
|
|
export enum ServerType {
|
|
LOCAL = 'LOCAL',
|
|
CLOUD = 'CLOUD'
|
|
}
|
|
|
|
export enum SyncStrategy {
|
|
LOCAL_OVERWRITE = 'LOCAL_OVERWRITE',
|
|
CLOUD_OVERWRITE = 'CLOUD_OVERWRITE',
|
|
MERGE_LOCAL = 'MERGE_LOCAL',
|
|
MERGE_CLOUD = 'MERGE_CLOUD'
|
|
}
|
|
|
|
export enum SyncState {
|
|
IDLE = 'IDLE',
|
|
SYNCING = 'SYNCING',
|
|
SUCCESS = 'SUCCESS',
|
|
ERROR = 'ERROR'
|
|
}
|
|
|
|
export interface RegexReplacement {
|
|
id: string;
|
|
pattern: string;
|
|
replacement: string;
|
|
}
|
|
|
|
export enum ScheduleMode {
|
|
DISABLED = 'DISABLED',
|
|
CRON = 'CRON',
|
|
DAILY = 'DAILY',
|
|
WEEKLY = 'WEEKLY'
|
|
}
|
|
|
|
export interface ScheduleSettings {
|
|
mode: ScheduleMode;
|
|
cronExpression: string;
|
|
dailyTime: string;
|
|
weeklyDays: number[]; // 0 = Sunday, 1 = Monday, etc.
|
|
weeklyTime: string;
|
|
autoWatch: boolean;
|
|
}
|
|
|
|
export interface PlexLibrary {
|
|
id: string;
|
|
title: string;
|
|
type: string;
|
|
}
|
|
|
|
export interface PlexServerConnection {
|
|
isConnected: boolean;
|
|
name?: string;
|
|
ip?: string;
|
|
port?: number;
|
|
libraryName?: string;
|
|
libraries?: PlexLibrary[];
|
|
}
|
|
|
|
export interface PlexConnectionSettings {
|
|
protocol: 'http' | 'https';
|
|
address: string;
|
|
port: string;
|
|
token: string;
|
|
username?: string;
|
|
password?: string;
|
|
timeout?: number; // in seconds
|
|
}
|
|
|
|
export interface ApiResponse<T> {
|
|
data: T;
|
|
status: 'success' | 'error';
|
|
message?: string;
|
|
} |