From cbb1ed2b16d5b9e390d82d5d0c1dc42c6205c9f3 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Sun, 29 Oct 2023 18:00:10 +0200 Subject: [PATCH] Add typings for Queue and Tracks --- frontend/src/App/State/AppState.ts | 6 +++ .../src/App/State/CustomFiltersAppState.ts | 10 ++++ frontend/src/App/State/QueueAppState.ts | 49 +++++++++++++++++++ frontend/src/App/State/TrackFilesAppState.ts | 10 ++++ frontend/src/App/State/TracksAppState.ts | 6 +++ frontend/src/Track/Track.ts | 19 +++++++ frontend/src/TrackFile/TrackFile.ts | 18 +++++++ frontend/src/typings/MediaInfo.ts | 9 ++++ 8 files changed, 127 insertions(+) create mode 100644 frontend/src/App/State/CustomFiltersAppState.ts create mode 100644 frontend/src/App/State/QueueAppState.ts create mode 100644 frontend/src/App/State/TrackFilesAppState.ts create mode 100644 frontend/src/App/State/TracksAppState.ts create mode 100644 frontend/src/Track/Track.ts create mode 100644 frontend/src/TrackFile/TrackFile.ts create mode 100644 frontend/src/typings/MediaInfo.ts diff --git a/frontend/src/App/State/AppState.ts b/frontend/src/App/State/AppState.ts index d1de99887..5b7b01252 100644 --- a/frontend/src/App/State/AppState.ts +++ b/frontend/src/App/State/AppState.ts @@ -1,7 +1,10 @@ import AlbumAppState from './AlbumAppState'; import ArtistAppState, { ArtistIndexAppState } from './ArtistAppState'; +import QueueAppState from './QueueAppState'; import SettingsAppState from './SettingsAppState'; import TagsAppState from './TagsAppState'; +import TrackFilesAppState from './TrackFilesAppState'; +import TracksAppState from './TracksAppState'; interface FilterBuilderPropOption { id: string; @@ -39,8 +42,11 @@ interface AppState { albums: AlbumAppState; artist: ArtistAppState; artistIndex: ArtistIndexAppState; + queue: QueueAppState; settings: SettingsAppState; tags: TagsAppState; + trackFiles: TrackFilesAppState; + tracksSelection: TracksAppState; } export default AppState; diff --git a/frontend/src/App/State/CustomFiltersAppState.ts b/frontend/src/App/State/CustomFiltersAppState.ts new file mode 100644 index 000000000..6ac4820c7 --- /dev/null +++ b/frontend/src/App/State/CustomFiltersAppState.ts @@ -0,0 +1,10 @@ +import AppSectionState, { + AppSectionDeleteState, +} from 'App/State/AppSectionState'; +import { CustomFilter } from './AppState'; + +interface CustomFiltersAppState + extends AppSectionState, + AppSectionDeleteState {} + +export default CustomFiltersAppState; diff --git a/frontend/src/App/State/QueueAppState.ts b/frontend/src/App/State/QueueAppState.ts new file mode 100644 index 000000000..50c566283 --- /dev/null +++ b/frontend/src/App/State/QueueAppState.ts @@ -0,0 +1,49 @@ +import ModelBase from 'App/ModelBase'; +import { QualityModel } from 'Quality/Quality'; +import CustomFormat from 'typings/CustomFormat'; +import AppSectionState, { AppSectionItemState, Error } from './AppSectionState'; + +export interface StatusMessage { + title: string; + messages: string[]; +} + +export interface Queue extends ModelBase { + quality: QualityModel; + customFormats: CustomFormat[]; + size: number; + title: string; + sizeleft: number; + timeleft: string; + estimatedCompletionTime: string; + status: string; + trackedDownloadStatus: string; + trackedDownloadState: string; + statusMessages: StatusMessage[]; + errorMessage: string; + downloadId: string; + protocol: string; + downloadClient: string; + outputPath: string; + artistId?: number; + albumId?: number; +} + +export interface QueueDetailsAppState extends AppSectionState { + params: unknown; +} + +export interface QueuePagedAppState extends AppSectionState { + isGrabbing: boolean; + grabError: Error; + isRemoving: boolean; + removeError: Error; +} + +interface QueueAppState { + status: AppSectionItemState; + details: QueueDetailsAppState; + paged: QueuePagedAppState; +} + +export default QueueAppState; diff --git a/frontend/src/App/State/TrackFilesAppState.ts b/frontend/src/App/State/TrackFilesAppState.ts new file mode 100644 index 000000000..403ba904d --- /dev/null +++ b/frontend/src/App/State/TrackFilesAppState.ts @@ -0,0 +1,10 @@ +import AppSectionState, { + AppSectionDeleteState, +} from 'App/State/AppSectionState'; +import { TrackFile } from 'TrackFile/TrackFile'; + +interface TrackFilesAppState + extends AppSectionState, + AppSectionDeleteState {} + +export default TrackFilesAppState; diff --git a/frontend/src/App/State/TracksAppState.ts b/frontend/src/App/State/TracksAppState.ts new file mode 100644 index 000000000..22aaabed9 --- /dev/null +++ b/frontend/src/App/State/TracksAppState.ts @@ -0,0 +1,6 @@ +import AppSectionState from 'App/State/AppSectionState'; +import Track from 'Track/Track'; + +type TracksAppState = AppSectionState; + +export default TracksAppState; diff --git a/frontend/src/Track/Track.ts b/frontend/src/Track/Track.ts new file mode 100644 index 000000000..7c080290a --- /dev/null +++ b/frontend/src/Track/Track.ts @@ -0,0 +1,19 @@ +import ModelBase from 'App/ModelBase'; + +interface Track extends ModelBase { + artistId: number; + foreignTrackId: string; + foreignRecordingId: string; + trackFileId: number; + albumId: number; + explicit: boolean; + absoluteTrackNumber: number; + trackNumber: string; + title: string; + duration: number; + trackFile?: object; + mediumNumber: number; + hasFile: boolean; +} + +export default Track; diff --git a/frontend/src/TrackFile/TrackFile.ts b/frontend/src/TrackFile/TrackFile.ts new file mode 100644 index 000000000..ce9379816 --- /dev/null +++ b/frontend/src/TrackFile/TrackFile.ts @@ -0,0 +1,18 @@ +import ModelBase from 'App/ModelBase'; +import { QualityModel } from 'Quality/Quality'; +import CustomFormat from 'typings/CustomFormat'; +import MediaInfo from 'typings/MediaInfo'; + +export interface TrackFile extends ModelBase { + artistId: number; + albumId: number; + path: string; + size: number; + dateAdded: string; + sceneName: string; + releaseGroup: string; + quality: QualityModel; + customFormats: CustomFormat[]; + mediaInfo: MediaInfo; + qualityCutoffNotMet: boolean; +} diff --git a/frontend/src/typings/MediaInfo.ts b/frontend/src/typings/MediaInfo.ts new file mode 100644 index 000000000..ddcbf2569 --- /dev/null +++ b/frontend/src/typings/MediaInfo.ts @@ -0,0 +1,9 @@ +interface MediaInfo { + audioBitRate: string; + audioChannels: number; + audioCodec: string; + audioBits: string; + audioSampleRate: string; +} + +export default MediaInfo;