summaryrefslogtreecommitdiffhomepage
path: root/frontend/src/@redux/redux.d.ts
blob: d48d1f221023105f229d5e8736e47ffff233c482 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
interface ReduxStore {
  system: ReduxStore.System;
  series: ReduxStore.Series;
  movie: ReduxStore.Movie;
  site: ReduxStore.Site;
}

namespace ReduxStore {
  interface Notification {
    type: "error" | "warning" | "info";
    message: string;
    timestamp: Date;
  }

  interface Site {
    // Initialization state or error message
    initialized: boolean | string;
    auth: boolean;
    notifications: Notification[];
    sidebar: string;
    badges: Badge;
    offline: boolean;
  }

  interface System {
    languages: AsyncState<Array<Language>>;
    enabledLanguage: AsyncState<Array<Language>>;
    languagesProfiles: AsyncState<Array<Profile.Languages>>;
    status: AsyncState<System.Status | undefined>;
    health: AsyncState<Array<System.Health>>;
    tasks: AsyncState<Array<System.Task>>;
    providers: AsyncState<Array<System.Provider>>;
    logs: AsyncState<Array<System.Log>>;
    releases: AsyncState<Array<ReleaseInfo>>;
    settings: AsyncState<Settings | undefined>;
  }

  interface Series {
    seriesList: AsyncOrderState<Item.Series>;
    wantedEpisodesList: AsyncOrderState<Wanted.Episode>;
    episodeList: AsyncState<Item.Episode[]>;
    historyList: AsyncState<Array<History.Episode>>;
    blacklist: AsyncState<Array<Blacklist.Episode>>;
  }

  interface Movie {
    movieList: AsyncOrderState<Item.Movie>;
    wantedMovieList: AsyncOrderState<Wanted.Movie>;
    historyList: AsyncState<Array<History.Movie>>;
    blacklist: AsyncState<Array<Blacklist.Movie>>;
  }
}