Files
PlexPlaylistSync/types.ts
T
Koha9 06e49be1f9 Squashed 'sample-front-end/' changes from 552f9c4..99ea3a6
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
2025-11-29 08:23:31 +09:00

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;
}