Feature/update backup restore to server changes (#438)
* [Codegen] Update back query/mutation * Update backup restore * [VersionMapping] Require server version "r1410" for preview
This commit is contained in:
@@ -454,8 +454,9 @@ export type PageInfoFieldPolicy = {
|
|||||||
hasPreviousPage?: FieldPolicy<any> | FieldReadFunction<any>,
|
hasPreviousPage?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
startCursor?: FieldPolicy<any> | FieldReadFunction<any>
|
startCursor?: FieldPolicy<any> | FieldReadFunction<any>
|
||||||
};
|
};
|
||||||
export type PartialSettingsTypeKeySpecifier = ('autoDownloadNewChapters' | 'backupInterval' | 'backupPath' | 'backupTTL' | 'backupTime' | 'basicAuthEnabled' | 'basicAuthPassword' | 'basicAuthUsername' | 'debugLogsEnabled' | 'downloadAsCbz' | 'downloadsPath' | 'electronPath' | 'excludeCompleted' | 'excludeNotStarted' | 'excludeUnreadChapters' | 'globalUpdateInterval' | 'initialOpenInBrowserEnabled' | 'ip' | 'localSourcePath' | 'maxSourcesInParallel' | 'port' | 'socksProxyEnabled' | 'socksProxyHost' | 'socksProxyPort' | 'systemTrayEnabled' | 'webUIChannel' | 'webUIFlavor' | 'webUIInterface' | 'webUIUpdateCheckInterval' | PartialSettingsTypeKeySpecifier)[];
|
export type PartialSettingsTypeKeySpecifier = ('autoDownloadAheadLimit' | 'autoDownloadNewChapters' | 'backupInterval' | 'backupPath' | 'backupTTL' | 'backupTime' | 'basicAuthEnabled' | 'basicAuthPassword' | 'basicAuthUsername' | 'debugLogsEnabled' | 'downloadAsCbz' | 'downloadsPath' | 'electronPath' | 'excludeCompleted' | 'excludeEntryWithUnreadChapters' | 'excludeNotStarted' | 'excludeUnreadChapters' | 'globalUpdateInterval' | 'gqlDebugLogsEnabled' | 'initialOpenInBrowserEnabled' | 'ip' | 'localSourcePath' | 'maxSourcesInParallel' | 'port' | 'socksProxyEnabled' | 'socksProxyHost' | 'socksProxyPort' | 'systemTrayEnabled' | 'updateMangas' | 'webUIChannel' | 'webUIFlavor' | 'webUIInterface' | 'webUIUpdateCheckInterval' | PartialSettingsTypeKeySpecifier)[];
|
||||||
export type PartialSettingsTypeFieldPolicy = {
|
export type PartialSettingsTypeFieldPolicy = {
|
||||||
|
autoDownloadAheadLimit?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
autoDownloadNewChapters?: FieldPolicy<any> | FieldReadFunction<any>,
|
autoDownloadNewChapters?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
backupInterval?: FieldPolicy<any> | FieldReadFunction<any>,
|
backupInterval?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
backupPath?: FieldPolicy<any> | FieldReadFunction<any>,
|
backupPath?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
@@ -469,9 +470,11 @@ export type PartialSettingsTypeFieldPolicy = {
|
|||||||
downloadsPath?: FieldPolicy<any> | FieldReadFunction<any>,
|
downloadsPath?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
electronPath?: FieldPolicy<any> | FieldReadFunction<any>,
|
electronPath?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
excludeCompleted?: FieldPolicy<any> | FieldReadFunction<any>,
|
excludeCompleted?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
|
excludeEntryWithUnreadChapters?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
excludeNotStarted?: FieldPolicy<any> | FieldReadFunction<any>,
|
excludeNotStarted?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
excludeUnreadChapters?: FieldPolicy<any> | FieldReadFunction<any>,
|
excludeUnreadChapters?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
globalUpdateInterval?: FieldPolicy<any> | FieldReadFunction<any>,
|
globalUpdateInterval?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
|
gqlDebugLogsEnabled?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
initialOpenInBrowserEnabled?: FieldPolicy<any> | FieldReadFunction<any>,
|
initialOpenInBrowserEnabled?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
ip?: FieldPolicy<any> | FieldReadFunction<any>,
|
ip?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
localSourcePath?: FieldPolicy<any> | FieldReadFunction<any>,
|
localSourcePath?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
@@ -481,6 +484,7 @@ export type PartialSettingsTypeFieldPolicy = {
|
|||||||
socksProxyHost?: FieldPolicy<any> | FieldReadFunction<any>,
|
socksProxyHost?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
socksProxyPort?: FieldPolicy<any> | FieldReadFunction<any>,
|
socksProxyPort?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
systemTrayEnabled?: FieldPolicy<any> | FieldReadFunction<any>,
|
systemTrayEnabled?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
|
updateMangas?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
webUIChannel?: FieldPolicy<any> | FieldReadFunction<any>,
|
webUIChannel?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
webUIFlavor?: FieldPolicy<any> | FieldReadFunction<any>,
|
webUIFlavor?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
webUIInterface?: FieldPolicy<any> | FieldReadFunction<any>,
|
webUIInterface?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
@@ -521,9 +525,10 @@ export type ResetSettingsPayloadFieldPolicy = {
|
|||||||
clientMutationId?: FieldPolicy<any> | FieldReadFunction<any>,
|
clientMutationId?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
settings?: FieldPolicy<any> | FieldReadFunction<any>
|
settings?: FieldPolicy<any> | FieldReadFunction<any>
|
||||||
};
|
};
|
||||||
export type RestoreBackupPayloadKeySpecifier = ('clientMutationId' | 'status' | RestoreBackupPayloadKeySpecifier)[];
|
export type RestoreBackupPayloadKeySpecifier = ('clientMutationId' | 'id' | 'status' | RestoreBackupPayloadKeySpecifier)[];
|
||||||
export type RestoreBackupPayloadFieldPolicy = {
|
export type RestoreBackupPayloadFieldPolicy = {
|
||||||
clientMutationId?: FieldPolicy<any> | FieldReadFunction<any>,
|
clientMutationId?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
|
id?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
status?: FieldPolicy<any> | FieldReadFunction<any>
|
status?: FieldPolicy<any> | FieldReadFunction<any>
|
||||||
};
|
};
|
||||||
export type SelectFilterKeySpecifier = ('default' | 'name' | 'values' | SelectFilterKeySpecifier)[];
|
export type SelectFilterKeySpecifier = ('default' | 'name' | 'values' | SelectFilterKeySpecifier)[];
|
||||||
@@ -561,8 +566,9 @@ export type SetSettingsPayloadFieldPolicy = {
|
|||||||
clientMutationId?: FieldPolicy<any> | FieldReadFunction<any>,
|
clientMutationId?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
settings?: FieldPolicy<any> | FieldReadFunction<any>
|
settings?: FieldPolicy<any> | FieldReadFunction<any>
|
||||||
};
|
};
|
||||||
export type SettingsKeySpecifier = ('autoDownloadNewChapters' | 'backupInterval' | 'backupPath' | 'backupTTL' | 'backupTime' | 'basicAuthEnabled' | 'basicAuthPassword' | 'basicAuthUsername' | 'debugLogsEnabled' | 'downloadAsCbz' | 'downloadsPath' | 'electronPath' | 'excludeCompleted' | 'excludeNotStarted' | 'excludeUnreadChapters' | 'globalUpdateInterval' | 'initialOpenInBrowserEnabled' | 'ip' | 'localSourcePath' | 'maxSourcesInParallel' | 'port' | 'socksProxyEnabled' | 'socksProxyHost' | 'socksProxyPort' | 'systemTrayEnabled' | 'webUIChannel' | 'webUIFlavor' | 'webUIInterface' | 'webUIUpdateCheckInterval' | SettingsKeySpecifier)[];
|
export type SettingsKeySpecifier = ('autoDownloadAheadLimit' | 'autoDownloadNewChapters' | 'backupInterval' | 'backupPath' | 'backupTTL' | 'backupTime' | 'basicAuthEnabled' | 'basicAuthPassword' | 'basicAuthUsername' | 'debugLogsEnabled' | 'downloadAsCbz' | 'downloadsPath' | 'electronPath' | 'excludeCompleted' | 'excludeEntryWithUnreadChapters' | 'excludeNotStarted' | 'excludeUnreadChapters' | 'globalUpdateInterval' | 'gqlDebugLogsEnabled' | 'initialOpenInBrowserEnabled' | 'ip' | 'localSourcePath' | 'maxSourcesInParallel' | 'port' | 'socksProxyEnabled' | 'socksProxyHost' | 'socksProxyPort' | 'systemTrayEnabled' | 'updateMangas' | 'webUIChannel' | 'webUIFlavor' | 'webUIInterface' | 'webUIUpdateCheckInterval' | SettingsKeySpecifier)[];
|
||||||
export type SettingsFieldPolicy = {
|
export type SettingsFieldPolicy = {
|
||||||
|
autoDownloadAheadLimit?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
autoDownloadNewChapters?: FieldPolicy<any> | FieldReadFunction<any>,
|
autoDownloadNewChapters?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
backupInterval?: FieldPolicy<any> | FieldReadFunction<any>,
|
backupInterval?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
backupPath?: FieldPolicy<any> | FieldReadFunction<any>,
|
backupPath?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
@@ -576,9 +582,11 @@ export type SettingsFieldPolicy = {
|
|||||||
downloadsPath?: FieldPolicy<any> | FieldReadFunction<any>,
|
downloadsPath?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
electronPath?: FieldPolicy<any> | FieldReadFunction<any>,
|
electronPath?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
excludeCompleted?: FieldPolicy<any> | FieldReadFunction<any>,
|
excludeCompleted?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
|
excludeEntryWithUnreadChapters?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
excludeNotStarted?: FieldPolicy<any> | FieldReadFunction<any>,
|
excludeNotStarted?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
excludeUnreadChapters?: FieldPolicy<any> | FieldReadFunction<any>,
|
excludeUnreadChapters?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
globalUpdateInterval?: FieldPolicy<any> | FieldReadFunction<any>,
|
globalUpdateInterval?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
|
gqlDebugLogsEnabled?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
initialOpenInBrowserEnabled?: FieldPolicy<any> | FieldReadFunction<any>,
|
initialOpenInBrowserEnabled?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
ip?: FieldPolicy<any> | FieldReadFunction<any>,
|
ip?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
localSourcePath?: FieldPolicy<any> | FieldReadFunction<any>,
|
localSourcePath?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
@@ -588,13 +596,15 @@ export type SettingsFieldPolicy = {
|
|||||||
socksProxyHost?: FieldPolicy<any> | FieldReadFunction<any>,
|
socksProxyHost?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
socksProxyPort?: FieldPolicy<any> | FieldReadFunction<any>,
|
socksProxyPort?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
systemTrayEnabled?: FieldPolicy<any> | FieldReadFunction<any>,
|
systemTrayEnabled?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
|
updateMangas?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
webUIChannel?: FieldPolicy<any> | FieldReadFunction<any>,
|
webUIChannel?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
webUIFlavor?: FieldPolicy<any> | FieldReadFunction<any>,
|
webUIFlavor?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
webUIInterface?: FieldPolicy<any> | FieldReadFunction<any>,
|
webUIInterface?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
webUIUpdateCheckInterval?: FieldPolicy<any> | FieldReadFunction<any>
|
webUIUpdateCheckInterval?: FieldPolicy<any> | FieldReadFunction<any>
|
||||||
};
|
};
|
||||||
export type SettingsTypeKeySpecifier = ('autoDownloadNewChapters' | 'backupInterval' | 'backupPath' | 'backupTTL' | 'backupTime' | 'basicAuthEnabled' | 'basicAuthPassword' | 'basicAuthUsername' | 'debugLogsEnabled' | 'downloadAsCbz' | 'downloadsPath' | 'electronPath' | 'excludeCompleted' | 'excludeNotStarted' | 'excludeUnreadChapters' | 'globalUpdateInterval' | 'initialOpenInBrowserEnabled' | 'ip' | 'localSourcePath' | 'maxSourcesInParallel' | 'port' | 'socksProxyEnabled' | 'socksProxyHost' | 'socksProxyPort' | 'systemTrayEnabled' | 'webUIChannel' | 'webUIFlavor' | 'webUIInterface' | 'webUIUpdateCheckInterval' | SettingsTypeKeySpecifier)[];
|
export type SettingsTypeKeySpecifier = ('autoDownloadAheadLimit' | 'autoDownloadNewChapters' | 'backupInterval' | 'backupPath' | 'backupTTL' | 'backupTime' | 'basicAuthEnabled' | 'basicAuthPassword' | 'basicAuthUsername' | 'debugLogsEnabled' | 'downloadAsCbz' | 'downloadsPath' | 'electronPath' | 'excludeCompleted' | 'excludeEntryWithUnreadChapters' | 'excludeNotStarted' | 'excludeUnreadChapters' | 'globalUpdateInterval' | 'gqlDebugLogsEnabled' | 'initialOpenInBrowserEnabled' | 'ip' | 'localSourcePath' | 'maxSourcesInParallel' | 'port' | 'socksProxyEnabled' | 'socksProxyHost' | 'socksProxyPort' | 'systemTrayEnabled' | 'updateMangas' | 'webUIChannel' | 'webUIFlavor' | 'webUIInterface' | 'webUIUpdateCheckInterval' | SettingsTypeKeySpecifier)[];
|
||||||
export type SettingsTypeFieldPolicy = {
|
export type SettingsTypeFieldPolicy = {
|
||||||
|
autoDownloadAheadLimit?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
autoDownloadNewChapters?: FieldPolicy<any> | FieldReadFunction<any>,
|
autoDownloadNewChapters?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
backupInterval?: FieldPolicy<any> | FieldReadFunction<any>,
|
backupInterval?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
backupPath?: FieldPolicy<any> | FieldReadFunction<any>,
|
backupPath?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
@@ -608,9 +618,11 @@ export type SettingsTypeFieldPolicy = {
|
|||||||
downloadsPath?: FieldPolicy<any> | FieldReadFunction<any>,
|
downloadsPath?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
electronPath?: FieldPolicy<any> | FieldReadFunction<any>,
|
electronPath?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
excludeCompleted?: FieldPolicy<any> | FieldReadFunction<any>,
|
excludeCompleted?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
|
excludeEntryWithUnreadChapters?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
excludeNotStarted?: FieldPolicy<any> | FieldReadFunction<any>,
|
excludeNotStarted?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
excludeUnreadChapters?: FieldPolicy<any> | FieldReadFunction<any>,
|
excludeUnreadChapters?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
globalUpdateInterval?: FieldPolicy<any> | FieldReadFunction<any>,
|
globalUpdateInterval?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
|
gqlDebugLogsEnabled?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
initialOpenInBrowserEnabled?: FieldPolicy<any> | FieldReadFunction<any>,
|
initialOpenInBrowserEnabled?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
ip?: FieldPolicy<any> | FieldReadFunction<any>,
|
ip?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
localSourcePath?: FieldPolicy<any> | FieldReadFunction<any>,
|
localSourcePath?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
@@ -620,6 +632,7 @@ export type SettingsTypeFieldPolicy = {
|
|||||||
socksProxyHost?: FieldPolicy<any> | FieldReadFunction<any>,
|
socksProxyHost?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
socksProxyPort?: FieldPolicy<any> | FieldReadFunction<any>,
|
socksProxyPort?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
systemTrayEnabled?: FieldPolicy<any> | FieldReadFunction<any>,
|
systemTrayEnabled?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
|
updateMangas?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
webUIChannel?: FieldPolicy<any> | FieldReadFunction<any>,
|
webUIChannel?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
webUIFlavor?: FieldPolicy<any> | FieldReadFunction<any>,
|
webUIFlavor?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
webUIInterface?: FieldPolicy<any> | FieldReadFunction<any>,
|
webUIInterface?: FieldPolicy<any> | FieldReadFunction<any>,
|
||||||
|
|||||||
@@ -29,9 +29,11 @@ export type AboutPayload = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export enum BackupRestoreState {
|
export enum BackupRestoreState {
|
||||||
|
Failure = 'FAILURE',
|
||||||
Idle = 'IDLE',
|
Idle = 'IDLE',
|
||||||
RestoringCategories = 'RESTORING_CATEGORIES',
|
RestoringCategories = 'RESTORING_CATEGORIES',
|
||||||
RestoringManga = 'RESTORING_MANGA'
|
RestoringManga = 'RESTORING_MANGA',
|
||||||
|
Success = 'SUCCESS'
|
||||||
}
|
}
|
||||||
|
|
||||||
export type BackupRestoreStatus = {
|
export type BackupRestoreStatus = {
|
||||||
@@ -1216,6 +1218,7 @@ export type PageInfo = {
|
|||||||
|
|
||||||
export type PartialSettingsType = Settings & {
|
export type PartialSettingsType = Settings & {
|
||||||
__typename?: 'PartialSettingsType';
|
__typename?: 'PartialSettingsType';
|
||||||
|
autoDownloadAheadLimit?: Maybe<Scalars['Int']['output']>;
|
||||||
autoDownloadNewChapters?: Maybe<Scalars['Boolean']['output']>;
|
autoDownloadNewChapters?: Maybe<Scalars['Boolean']['output']>;
|
||||||
backupInterval?: Maybe<Scalars['Int']['output']>;
|
backupInterval?: Maybe<Scalars['Int']['output']>;
|
||||||
backupPath?: Maybe<Scalars['String']['output']>;
|
backupPath?: Maybe<Scalars['String']['output']>;
|
||||||
@@ -1229,9 +1232,11 @@ export type PartialSettingsType = Settings & {
|
|||||||
downloadsPath?: Maybe<Scalars['String']['output']>;
|
downloadsPath?: Maybe<Scalars['String']['output']>;
|
||||||
electronPath?: Maybe<Scalars['String']['output']>;
|
electronPath?: Maybe<Scalars['String']['output']>;
|
||||||
excludeCompleted?: Maybe<Scalars['Boolean']['output']>;
|
excludeCompleted?: Maybe<Scalars['Boolean']['output']>;
|
||||||
|
excludeEntryWithUnreadChapters?: Maybe<Scalars['Boolean']['output']>;
|
||||||
excludeNotStarted?: Maybe<Scalars['Boolean']['output']>;
|
excludeNotStarted?: Maybe<Scalars['Boolean']['output']>;
|
||||||
excludeUnreadChapters?: Maybe<Scalars['Boolean']['output']>;
|
excludeUnreadChapters?: Maybe<Scalars['Boolean']['output']>;
|
||||||
globalUpdateInterval?: Maybe<Scalars['Float']['output']>;
|
globalUpdateInterval?: Maybe<Scalars['Float']['output']>;
|
||||||
|
gqlDebugLogsEnabled?: Maybe<Scalars['Boolean']['output']>;
|
||||||
initialOpenInBrowserEnabled?: Maybe<Scalars['Boolean']['output']>;
|
initialOpenInBrowserEnabled?: Maybe<Scalars['Boolean']['output']>;
|
||||||
ip?: Maybe<Scalars['String']['output']>;
|
ip?: Maybe<Scalars['String']['output']>;
|
||||||
localSourcePath?: Maybe<Scalars['String']['output']>;
|
localSourcePath?: Maybe<Scalars['String']['output']>;
|
||||||
@@ -1241,6 +1246,7 @@ export type PartialSettingsType = Settings & {
|
|||||||
socksProxyHost?: Maybe<Scalars['String']['output']>;
|
socksProxyHost?: Maybe<Scalars['String']['output']>;
|
||||||
socksProxyPort?: Maybe<Scalars['String']['output']>;
|
socksProxyPort?: Maybe<Scalars['String']['output']>;
|
||||||
systemTrayEnabled?: Maybe<Scalars['Boolean']['output']>;
|
systemTrayEnabled?: Maybe<Scalars['Boolean']['output']>;
|
||||||
|
updateMangas?: Maybe<Scalars['Boolean']['output']>;
|
||||||
webUIChannel?: Maybe<WebUiChannel>;
|
webUIChannel?: Maybe<WebUiChannel>;
|
||||||
webUIFlavor?: Maybe<WebUiFlavor>;
|
webUIFlavor?: Maybe<WebUiFlavor>;
|
||||||
webUIInterface?: Maybe<WebUiInterface>;
|
webUIInterface?: Maybe<WebUiInterface>;
|
||||||
@@ -1248,6 +1254,7 @@ export type PartialSettingsType = Settings & {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export type PartialSettingsTypeInput = {
|
export type PartialSettingsTypeInput = {
|
||||||
|
autoDownloadAheadLimit?: InputMaybe<Scalars['Int']['input']>;
|
||||||
autoDownloadNewChapters?: InputMaybe<Scalars['Boolean']['input']>;
|
autoDownloadNewChapters?: InputMaybe<Scalars['Boolean']['input']>;
|
||||||
backupInterval?: InputMaybe<Scalars['Int']['input']>;
|
backupInterval?: InputMaybe<Scalars['Int']['input']>;
|
||||||
backupPath?: InputMaybe<Scalars['String']['input']>;
|
backupPath?: InputMaybe<Scalars['String']['input']>;
|
||||||
@@ -1261,9 +1268,11 @@ export type PartialSettingsTypeInput = {
|
|||||||
downloadsPath?: InputMaybe<Scalars['String']['input']>;
|
downloadsPath?: InputMaybe<Scalars['String']['input']>;
|
||||||
electronPath?: InputMaybe<Scalars['String']['input']>;
|
electronPath?: InputMaybe<Scalars['String']['input']>;
|
||||||
excludeCompleted?: InputMaybe<Scalars['Boolean']['input']>;
|
excludeCompleted?: InputMaybe<Scalars['Boolean']['input']>;
|
||||||
|
excludeEntryWithUnreadChapters?: InputMaybe<Scalars['Boolean']['input']>;
|
||||||
excludeNotStarted?: InputMaybe<Scalars['Boolean']['input']>;
|
excludeNotStarted?: InputMaybe<Scalars['Boolean']['input']>;
|
||||||
excludeUnreadChapters?: InputMaybe<Scalars['Boolean']['input']>;
|
excludeUnreadChapters?: InputMaybe<Scalars['Boolean']['input']>;
|
||||||
globalUpdateInterval?: InputMaybe<Scalars['Float']['input']>;
|
globalUpdateInterval?: InputMaybe<Scalars['Float']['input']>;
|
||||||
|
gqlDebugLogsEnabled?: InputMaybe<Scalars['Boolean']['input']>;
|
||||||
initialOpenInBrowserEnabled?: InputMaybe<Scalars['Boolean']['input']>;
|
initialOpenInBrowserEnabled?: InputMaybe<Scalars['Boolean']['input']>;
|
||||||
ip?: InputMaybe<Scalars['String']['input']>;
|
ip?: InputMaybe<Scalars['String']['input']>;
|
||||||
localSourcePath?: InputMaybe<Scalars['String']['input']>;
|
localSourcePath?: InputMaybe<Scalars['String']['input']>;
|
||||||
@@ -1273,6 +1282,7 @@ export type PartialSettingsTypeInput = {
|
|||||||
socksProxyHost?: InputMaybe<Scalars['String']['input']>;
|
socksProxyHost?: InputMaybe<Scalars['String']['input']>;
|
||||||
socksProxyPort?: InputMaybe<Scalars['String']['input']>;
|
socksProxyPort?: InputMaybe<Scalars['String']['input']>;
|
||||||
systemTrayEnabled?: InputMaybe<Scalars['Boolean']['input']>;
|
systemTrayEnabled?: InputMaybe<Scalars['Boolean']['input']>;
|
||||||
|
updateMangas?: InputMaybe<Scalars['Boolean']['input']>;
|
||||||
webUIChannel?: InputMaybe<WebUiChannel>;
|
webUIChannel?: InputMaybe<WebUiChannel>;
|
||||||
webUIFlavor?: InputMaybe<WebUiFlavor>;
|
webUIFlavor?: InputMaybe<WebUiFlavor>;
|
||||||
webUIInterface?: InputMaybe<WebUiInterface>;
|
webUIInterface?: InputMaybe<WebUiInterface>;
|
||||||
@@ -1299,7 +1309,7 @@ export type Query = {
|
|||||||
mangas: MangaNodeList;
|
mangas: MangaNodeList;
|
||||||
meta: GlobalMetaType;
|
meta: GlobalMetaType;
|
||||||
metas: GlobalMetaNodeList;
|
metas: GlobalMetaNodeList;
|
||||||
restoreStatus: BackupRestoreStatus;
|
restoreStatus?: Maybe<BackupRestoreStatus>;
|
||||||
settings: SettingsType;
|
settings: SettingsType;
|
||||||
source: SourceType;
|
source: SourceType;
|
||||||
sources: SourceNodeList;
|
sources: SourceNodeList;
|
||||||
@@ -1398,6 +1408,11 @@ export type QueryMetasArgs = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
export type QueryRestoreStatusArgs = {
|
||||||
|
id: Scalars['String']['input'];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
export type QuerySourceArgs = {
|
export type QuerySourceArgs = {
|
||||||
id: Scalars['LongString']['input'];
|
id: Scalars['LongString']['input'];
|
||||||
};
|
};
|
||||||
@@ -1450,7 +1465,8 @@ export type RestoreBackupInput = {
|
|||||||
export type RestoreBackupPayload = {
|
export type RestoreBackupPayload = {
|
||||||
__typename?: 'RestoreBackupPayload';
|
__typename?: 'RestoreBackupPayload';
|
||||||
clientMutationId?: Maybe<Scalars['String']['output']>;
|
clientMutationId?: Maybe<Scalars['String']['output']>;
|
||||||
status: BackupRestoreStatus;
|
id: Scalars['String']['output'];
|
||||||
|
status?: Maybe<BackupRestoreStatus>;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type SelectFilter = {
|
export type SelectFilter = {
|
||||||
@@ -1521,6 +1537,7 @@ export type SetSettingsPayload = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export type Settings = {
|
export type Settings = {
|
||||||
|
autoDownloadAheadLimit?: Maybe<Scalars['Int']['output']>;
|
||||||
autoDownloadNewChapters?: Maybe<Scalars['Boolean']['output']>;
|
autoDownloadNewChapters?: Maybe<Scalars['Boolean']['output']>;
|
||||||
backupInterval?: Maybe<Scalars['Int']['output']>;
|
backupInterval?: Maybe<Scalars['Int']['output']>;
|
||||||
backupPath?: Maybe<Scalars['String']['output']>;
|
backupPath?: Maybe<Scalars['String']['output']>;
|
||||||
@@ -1534,9 +1551,11 @@ export type Settings = {
|
|||||||
downloadsPath?: Maybe<Scalars['String']['output']>;
|
downloadsPath?: Maybe<Scalars['String']['output']>;
|
||||||
electronPath?: Maybe<Scalars['String']['output']>;
|
electronPath?: Maybe<Scalars['String']['output']>;
|
||||||
excludeCompleted?: Maybe<Scalars['Boolean']['output']>;
|
excludeCompleted?: Maybe<Scalars['Boolean']['output']>;
|
||||||
|
excludeEntryWithUnreadChapters?: Maybe<Scalars['Boolean']['output']>;
|
||||||
excludeNotStarted?: Maybe<Scalars['Boolean']['output']>;
|
excludeNotStarted?: Maybe<Scalars['Boolean']['output']>;
|
||||||
excludeUnreadChapters?: Maybe<Scalars['Boolean']['output']>;
|
excludeUnreadChapters?: Maybe<Scalars['Boolean']['output']>;
|
||||||
globalUpdateInterval?: Maybe<Scalars['Float']['output']>;
|
globalUpdateInterval?: Maybe<Scalars['Float']['output']>;
|
||||||
|
gqlDebugLogsEnabled?: Maybe<Scalars['Boolean']['output']>;
|
||||||
initialOpenInBrowserEnabled?: Maybe<Scalars['Boolean']['output']>;
|
initialOpenInBrowserEnabled?: Maybe<Scalars['Boolean']['output']>;
|
||||||
ip?: Maybe<Scalars['String']['output']>;
|
ip?: Maybe<Scalars['String']['output']>;
|
||||||
localSourcePath?: Maybe<Scalars['String']['output']>;
|
localSourcePath?: Maybe<Scalars['String']['output']>;
|
||||||
@@ -1546,6 +1565,7 @@ export type Settings = {
|
|||||||
socksProxyHost?: Maybe<Scalars['String']['output']>;
|
socksProxyHost?: Maybe<Scalars['String']['output']>;
|
||||||
socksProxyPort?: Maybe<Scalars['String']['output']>;
|
socksProxyPort?: Maybe<Scalars['String']['output']>;
|
||||||
systemTrayEnabled?: Maybe<Scalars['Boolean']['output']>;
|
systemTrayEnabled?: Maybe<Scalars['Boolean']['output']>;
|
||||||
|
updateMangas?: Maybe<Scalars['Boolean']['output']>;
|
||||||
webUIChannel?: Maybe<WebUiChannel>;
|
webUIChannel?: Maybe<WebUiChannel>;
|
||||||
webUIFlavor?: Maybe<WebUiFlavor>;
|
webUIFlavor?: Maybe<WebUiFlavor>;
|
||||||
webUIInterface?: Maybe<WebUiInterface>;
|
webUIInterface?: Maybe<WebUiInterface>;
|
||||||
@@ -1554,6 +1574,7 @@ export type Settings = {
|
|||||||
|
|
||||||
export type SettingsType = Settings & {
|
export type SettingsType = Settings & {
|
||||||
__typename?: 'SettingsType';
|
__typename?: 'SettingsType';
|
||||||
|
autoDownloadAheadLimit: Scalars['Int']['output'];
|
||||||
autoDownloadNewChapters: Scalars['Boolean']['output'];
|
autoDownloadNewChapters: Scalars['Boolean']['output'];
|
||||||
backupInterval: Scalars['Int']['output'];
|
backupInterval: Scalars['Int']['output'];
|
||||||
backupPath: Scalars['String']['output'];
|
backupPath: Scalars['String']['output'];
|
||||||
@@ -1567,9 +1588,11 @@ export type SettingsType = Settings & {
|
|||||||
downloadsPath: Scalars['String']['output'];
|
downloadsPath: Scalars['String']['output'];
|
||||||
electronPath: Scalars['String']['output'];
|
electronPath: Scalars['String']['output'];
|
||||||
excludeCompleted: Scalars['Boolean']['output'];
|
excludeCompleted: Scalars['Boolean']['output'];
|
||||||
|
excludeEntryWithUnreadChapters: Scalars['Boolean']['output'];
|
||||||
excludeNotStarted: Scalars['Boolean']['output'];
|
excludeNotStarted: Scalars['Boolean']['output'];
|
||||||
excludeUnreadChapters: Scalars['Boolean']['output'];
|
excludeUnreadChapters: Scalars['Boolean']['output'];
|
||||||
globalUpdateInterval: Scalars['Float']['output'];
|
globalUpdateInterval: Scalars['Float']['output'];
|
||||||
|
gqlDebugLogsEnabled: Scalars['Boolean']['output'];
|
||||||
initialOpenInBrowserEnabled: Scalars['Boolean']['output'];
|
initialOpenInBrowserEnabled: Scalars['Boolean']['output'];
|
||||||
ip: Scalars['String']['output'];
|
ip: Scalars['String']['output'];
|
||||||
localSourcePath: Scalars['String']['output'];
|
localSourcePath: Scalars['String']['output'];
|
||||||
@@ -1579,6 +1602,7 @@ export type SettingsType = Settings & {
|
|||||||
socksProxyHost: Scalars['String']['output'];
|
socksProxyHost: Scalars['String']['output'];
|
||||||
socksProxyPort: Scalars['String']['output'];
|
socksProxyPort: Scalars['String']['output'];
|
||||||
systemTrayEnabled: Scalars['Boolean']['output'];
|
systemTrayEnabled: Scalars['Boolean']['output'];
|
||||||
|
updateMangas: Scalars['Boolean']['output'];
|
||||||
webUIChannel: WebUiChannel;
|
webUIChannel: WebUiChannel;
|
||||||
webUIFlavor: WebUiFlavor;
|
webUIFlavor: WebUiFlavor;
|
||||||
webUIInterface: WebUiInterface;
|
webUIInterface: WebUiInterface;
|
||||||
@@ -2098,7 +2122,7 @@ export type RestoreBackupMutationVariables = Exact<{
|
|||||||
}>;
|
}>;
|
||||||
|
|
||||||
|
|
||||||
export type RestoreBackupMutation = { __typename?: 'Mutation', restoreBackup: { __typename?: 'RestoreBackupPayload', clientMutationId?: string | null, status: { __typename?: 'BackupRestoreStatus', mangaProgress: number, state: BackupRestoreState, totalManga: number } } };
|
export type RestoreBackupMutation = { __typename?: 'Mutation', restoreBackup: { __typename?: 'RestoreBackupPayload', clientMutationId?: string | null, id: string, status?: { __typename?: 'BackupRestoreStatus', mangaProgress: number, state: BackupRestoreState, totalManga: number } | null } };
|
||||||
|
|
||||||
export type CreateCategoryMutationVariables = Exact<{
|
export type CreateCategoryMutationVariables = Exact<{
|
||||||
input: CreateCategoryInput;
|
input: CreateCategoryInput;
|
||||||
@@ -2415,10 +2439,12 @@ export type ValidateBackupQueryVariables = Exact<{
|
|||||||
|
|
||||||
export type ValidateBackupQuery = { __typename?: 'Query', validateBackup: { __typename?: 'ValidateBackupResult', missingSources: Array<{ __typename?: 'ValidateBackupSource', id: any, name: string }> } };
|
export type ValidateBackupQuery = { __typename?: 'Query', validateBackup: { __typename?: 'ValidateBackupResult', missingSources: Array<{ __typename?: 'ValidateBackupSource', id: any, name: string }> } };
|
||||||
|
|
||||||
export type GetRestoreStatusQueryVariables = Exact<{ [key: string]: never; }>;
|
export type GetRestoreStatusQueryVariables = Exact<{
|
||||||
|
id: Scalars['String']['input'];
|
||||||
|
}>;
|
||||||
|
|
||||||
|
|
||||||
export type GetRestoreStatusQuery = { __typename?: 'Query', restoreStatus: { __typename?: 'BackupRestoreStatus', mangaProgress: number, state: BackupRestoreState, totalManga: number } };
|
export type GetRestoreStatusQuery = { __typename?: 'Query', restoreStatus?: { __typename?: 'BackupRestoreStatus', mangaProgress: number, state: BackupRestoreState, totalManga: number } | null };
|
||||||
|
|
||||||
export type GetCategoriesQueryVariables = Exact<{
|
export type GetCategoriesQueryVariables = Exact<{
|
||||||
after?: InputMaybe<Scalars['Cursor']['input']>;
|
after?: InputMaybe<Scalars['Cursor']['input']>;
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ export const RESTORE_BACKUP = gql`
|
|||||||
mutation RESTORE_BACKUP($backup: Upload!) {
|
mutation RESTORE_BACKUP($backup: Upload!) {
|
||||||
restoreBackup(input: { backup: $backup }) {
|
restoreBackup(input: { backup: $backup }) {
|
||||||
clientMutationId
|
clientMutationId
|
||||||
|
id
|
||||||
status {
|
status {
|
||||||
mangaProgress
|
mangaProgress
|
||||||
state
|
state
|
||||||
|
|||||||
@@ -20,8 +20,8 @@ export const VALIDATE_BACKUP = gql`
|
|||||||
`;
|
`;
|
||||||
|
|
||||||
export const GET_RESTORE_STATUS = gql`
|
export const GET_RESTORE_STATUS = gql`
|
||||||
query GET_RESTORE_STATUS {
|
query GET_RESTORE_STATUS($id: String!) {
|
||||||
restoreStatus {
|
restoreStatus(id: $id) {
|
||||||
mangaProgress
|
mangaProgress
|
||||||
state
|
state
|
||||||
totalManga
|
totalManga
|
||||||
|
|||||||
@@ -1596,9 +1596,10 @@ export class RequestManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public useGetBackupRestoreStatus(
|
public useGetBackupRestoreStatus(
|
||||||
|
id: string,
|
||||||
options?: QueryHookOptions<GetRestoreStatusQuery, GetRestoreStatusQueryVariables>,
|
options?: QueryHookOptions<GetRestoreStatusQuery, GetRestoreStatusQueryVariables>,
|
||||||
): AbortableApolloUseQueryResponse<GetRestoreStatusQuery, GetRestoreStatusQueryVariables> {
|
): AbortableApolloUseQueryResponse<GetRestoreStatusQuery, GetRestoreStatusQueryVariables> {
|
||||||
return this.doRequest(GQLMethod.USE_QUERY, GET_RESTORE_STATUS, undefined, options);
|
return this.doRequest(GQLMethod.USE_QUERY, GET_RESTORE_STATUS, { id }, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
public getExportBackupUrl(): string {
|
public getExportBackupUrl(): string {
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { useContext, useEffect, useRef, useState } from 'react';
|
import { useContext, useEffect, useState } from 'react';
|
||||||
import List from '@mui/material/List';
|
import List from '@mui/material/List';
|
||||||
import ListItemText from '@mui/material/ListItemText';
|
import ListItemText from '@mui/material/ListItemText';
|
||||||
import { fromEvent } from 'file-selector';
|
import { fromEvent } from 'file-selector';
|
||||||
@@ -17,9 +17,11 @@ import { requestManager } from '@/lib/requests/RequestManager.ts';
|
|||||||
import { makeToast } from '@/components/util/Toast';
|
import { makeToast } from '@/components/util/Toast';
|
||||||
import { ListItemLink } from '@/components/util/ListItemLink';
|
import { ListItemLink } from '@/components/util/ListItemLink';
|
||||||
import { NavBarContext, useSetDefaultBackTo } from '@/components/context/NavbarContext';
|
import { NavBarContext, useSetDefaultBackTo } from '@/components/context/NavbarContext';
|
||||||
import { BackupRestoreState, GetRestoreStatusQuery } from '@/lib/graphql/generated/graphql.ts';
|
import { BackupRestoreState } from '@/lib/graphql/generated/graphql.ts';
|
||||||
import { Progress } from '@/components/util/Progress.tsx';
|
import { Progress } from '@/components/util/Progress.tsx';
|
||||||
|
|
||||||
|
let backupRestoreId: string | undefined;
|
||||||
|
|
||||||
export function Backup() {
|
export function Backup() {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
const { setTitle, setAction } = useContext(NavBarContext);
|
const { setTitle, setAction } = useContext(NavBarContext);
|
||||||
@@ -30,15 +32,15 @@ export function Backup() {
|
|||||||
|
|
||||||
useSetDefaultBackTo('settings');
|
useSetDefaultBackTo('settings');
|
||||||
|
|
||||||
const [isRestoring, setIsRestoring] = useState<boolean | null>(null);
|
const { data } = requestManager.useGetBackupRestoreStatus(backupRestoreId ?? '', {
|
||||||
const { data } = requestManager.useGetBackupRestoreStatus({
|
skip: !backupRestoreId,
|
||||||
skip: isRestoring !== null ? !isRestoring : false,
|
|
||||||
pollInterval: 1000,
|
pollInterval: 1000,
|
||||||
});
|
});
|
||||||
const prevRestoreStatusRef = useRef<GetRestoreStatusQuery['restoreStatus'] | null>(null);
|
|
||||||
|
const [, setTriggerReRender] = useState(0);
|
||||||
|
|
||||||
const restoreProgress = (() => {
|
const restoreProgress = (() => {
|
||||||
if (!isRestoring || !data) {
|
if (!data?.restoreStatus) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -47,37 +49,36 @@ export function Backup() {
|
|||||||
})();
|
})();
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!data || isRestoring !== null) {
|
if (!data?.restoreStatus) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const isRestoreInProgress = data?.restoreStatus.state !== BackupRestoreState.Idle;
|
const isSuccess = data.restoreStatus.state === BackupRestoreState.Success;
|
||||||
setIsRestoring(isRestoreInProgress);
|
const isFailure = data.restoreStatus.state === BackupRestoreState.Failure;
|
||||||
}, [data?.restoreStatus.state]);
|
|
||||||
|
|
||||||
useEffect(() => {
|
const isRestoreFinished = isSuccess || isFailure;
|
||||||
if (!data) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const isRestoreFinished =
|
|
||||||
isRestoring &&
|
|
||||||
data.restoreStatus.mangaProgress === data.restoreStatus.totalManga &&
|
|
||||||
prevRestoreStatusRef.current?.state !== BackupRestoreState.Idle;
|
|
||||||
if (isRestoreFinished) {
|
if (isRestoreFinished) {
|
||||||
setIsRestoring(false);
|
if (isSuccess) {
|
||||||
makeToast(t('settings.backup.label.restored_backup'), 'success');
|
makeToast(t('settings.backup.label.restored_backup'), 'success');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isFailure) {
|
||||||
|
makeToast(t('settings.backup.label.backup_restore_failed'), 'error');
|
||||||
|
}
|
||||||
|
|
||||||
|
backupRestoreId = undefined;
|
||||||
|
setTriggerReRender(Date.now());
|
||||||
}
|
}
|
||||||
prevRestoreStatusRef.current = data.restoreStatus;
|
}, [data?.restoreStatus?.state]);
|
||||||
}, [data?.restoreStatus.state]);
|
|
||||||
|
|
||||||
const submitBackup = async (file: File) => {
|
const submitBackup = async (file: File) => {
|
||||||
if (file.name.toLowerCase().match(/proto\.gz$|tachibk$/g)) {
|
if (file.name.toLowerCase().match(/proto\.gz$|tachibk$/g)) {
|
||||||
makeToast(t('settings.backup.label.restoring_backup'), 'info');
|
makeToast(t('settings.backup.label.restoring_backup'), 'info');
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await requestManager.restoreBackupFile(file).response;
|
const response = await requestManager.restoreBackupFile(file).response;
|
||||||
setIsRestoring(true);
|
backupRestoreId = response.data?.restoreBackup.id;
|
||||||
|
setTriggerReRender(Date.now());
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
makeToast(t('settings.backup.label.backup_restore_failed'), 'error');
|
makeToast(t('settings.backup.label.backup_restore_failed'), 'error');
|
||||||
}
|
}
|
||||||
@@ -129,13 +130,13 @@ export function Backup() {
|
|||||||
</ListItemLink>
|
</ListItemLink>
|
||||||
<ListItemButton
|
<ListItemButton
|
||||||
onClick={() => document.getElementById('backup-file')?.click()}
|
onClick={() => document.getElementById('backup-file')?.click()}
|
||||||
disabled={!!isRestoring}
|
disabled={!!backupRestoreId}
|
||||||
>
|
>
|
||||||
<ListItemText
|
<ListItemText
|
||||||
primary={t('settings.backup.label.restore_backup')}
|
primary={t('settings.backup.label.restore_backup')}
|
||||||
secondary={t('settings.backup.label.restore_backup_info')}
|
secondary={t('settings.backup.label.restore_backup_info')}
|
||||||
/>
|
/>
|
||||||
{isRestoring ? (
|
{backupRestoreId ? (
|
||||||
<ListItemIcon>
|
<ListItemIcon>
|
||||||
<Progress progress={restoreProgress} />
|
<Progress progress={restoreProgress} />
|
||||||
</ListItemIcon>
|
</ListItemIcon>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"uiVersion": "PREVIEW",
|
"uiVersion": "PREVIEW",
|
||||||
"serverVersion": "r1353"
|
"serverVersion": "r1410"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
Reference in New Issue
Block a user