Add sync settings

This commit is contained in:
schroda
2026-06-30 15:08:17 +02:00
parent 43fef26b89
commit 816409fcb8
14 changed files with 612 additions and 24 deletions

View File

@@ -922,6 +922,7 @@ export type MutationKeySpecifier = (
| 'setSourceMeta'
| 'setSourceMetas'
| 'startDownloader'
| 'startSync'
| 'stopDownloader'
| 'trackProgress'
| 'unbindTrack'
@@ -1000,6 +1001,7 @@ export type MutationFieldPolicy = {
setSourceMeta?: FieldPolicy<any> | FieldReadFunction<any>;
setSourceMetas?: FieldPolicy<any> | FieldReadFunction<any>;
startDownloader?: FieldPolicy<any> | FieldReadFunction<any>;
startSync?: FieldPolicy<any> | FieldReadFunction<any>;
stopDownloader?: FieldPolicy<any> | FieldReadFunction<any>;
trackProgress?: FieldPolicy<any> | FieldReadFunction<any>;
unbindTrack?: FieldPolicy<any> | FieldReadFunction<any>;
@@ -1122,6 +1124,15 @@ export type PartialSettingsTypeKeySpecifier = (
| 'socksProxyPort'
| 'socksProxyUsername'
| 'socksProxyVersion'
| 'syncDataCategories'
| 'syncDataChapters'
| 'syncDataHistory'
| 'syncDataManga'
| 'syncDataTracking'
| 'syncInterval'
| 'syncYomiApiKey'
| 'syncYomiEnabled'
| 'syncYomiHost'
| 'systemTrayEnabled'
| 'updateMangas'
| 'useHikariConnectionPool'
@@ -1211,6 +1222,15 @@ export type PartialSettingsTypeFieldPolicy = {
socksProxyPort?: FieldPolicy<any> | FieldReadFunction<any>;
socksProxyUsername?: FieldPolicy<any> | FieldReadFunction<any>;
socksProxyVersion?: FieldPolicy<any> | FieldReadFunction<any>;
syncDataCategories?: FieldPolicy<any> | FieldReadFunction<any>;
syncDataChapters?: FieldPolicy<any> | FieldReadFunction<any>;
syncDataHistory?: FieldPolicy<any> | FieldReadFunction<any>;
syncDataManga?: FieldPolicy<any> | FieldReadFunction<any>;
syncDataTracking?: FieldPolicy<any> | FieldReadFunction<any>;
syncInterval?: FieldPolicy<any> | FieldReadFunction<any>;
syncYomiApiKey?: FieldPolicy<any> | FieldReadFunction<any>;
syncYomiEnabled?: FieldPolicy<any> | FieldReadFunction<any>;
syncYomiHost?: FieldPolicy<any> | FieldReadFunction<any>;
systemTrayEnabled?: FieldPolicy<any> | FieldReadFunction<any>;
updateMangas?: FieldPolicy<any> | FieldReadFunction<any>;
useHikariConnectionPool?: FieldPolicy<any> | FieldReadFunction<any>;
@@ -1255,6 +1275,7 @@ export type QueryKeySpecifier = (
| 'extensions'
| 'getWebUIUpdateStatus'
| 'koSyncStatus'
| 'lastSyncStatus'
| 'lastUpdateTimestamp'
| 'libraryUpdateStatus'
| 'manga'
@@ -1288,6 +1309,7 @@ export type QueryFieldPolicy = {
extensions?: FieldPolicy<any> | FieldReadFunction<any>;
getWebUIUpdateStatus?: FieldPolicy<any> | FieldReadFunction<any>;
koSyncStatus?: FieldPolicy<any> | FieldReadFunction<any>;
lastSyncStatus?: FieldPolicy<any> | FieldReadFunction<any>;
lastUpdateTimestamp?: FieldPolicy<any> | FieldReadFunction<any>;
libraryUpdateStatus?: FieldPolicy<any> | FieldReadFunction<any>;
manga?: FieldPolicy<any> | FieldReadFunction<any>;
@@ -1509,6 +1531,15 @@ export type SettingsKeySpecifier = (
| 'socksProxyPort'
| 'socksProxyUsername'
| 'socksProxyVersion'
| 'syncDataCategories'
| 'syncDataChapters'
| 'syncDataHistory'
| 'syncDataManga'
| 'syncDataTracking'
| 'syncInterval'
| 'syncYomiApiKey'
| 'syncYomiEnabled'
| 'syncYomiHost'
| 'systemTrayEnabled'
| 'updateMangas'
| 'useHikariConnectionPool'
@@ -1598,6 +1629,15 @@ export type SettingsFieldPolicy = {
socksProxyPort?: FieldPolicy<any> | FieldReadFunction<any>;
socksProxyUsername?: FieldPolicy<any> | FieldReadFunction<any>;
socksProxyVersion?: FieldPolicy<any> | FieldReadFunction<any>;
syncDataCategories?: FieldPolicy<any> | FieldReadFunction<any>;
syncDataChapters?: FieldPolicy<any> | FieldReadFunction<any>;
syncDataHistory?: FieldPolicy<any> | FieldReadFunction<any>;
syncDataManga?: FieldPolicy<any> | FieldReadFunction<any>;
syncDataTracking?: FieldPolicy<any> | FieldReadFunction<any>;
syncInterval?: FieldPolicy<any> | FieldReadFunction<any>;
syncYomiApiKey?: FieldPolicy<any> | FieldReadFunction<any>;
syncYomiEnabled?: FieldPolicy<any> | FieldReadFunction<any>;
syncYomiHost?: FieldPolicy<any> | FieldReadFunction<any>;
systemTrayEnabled?: FieldPolicy<any> | FieldReadFunction<any>;
updateMangas?: FieldPolicy<any> | FieldReadFunction<any>;
useHikariConnectionPool?: FieldPolicy<any> | FieldReadFunction<any>;
@@ -1738,6 +1778,15 @@ export type SettingsTypeKeySpecifier = (
| 'socksProxyPort'
| 'socksProxyUsername'
| 'socksProxyVersion'
| 'syncDataCategories'
| 'syncDataChapters'
| 'syncDataHistory'
| 'syncDataManga'
| 'syncDataTracking'
| 'syncInterval'
| 'syncYomiApiKey'
| 'syncYomiEnabled'
| 'syncYomiHost'
| 'systemTrayEnabled'
| 'updateMangas'
| 'useHikariConnectionPool'
@@ -1827,6 +1876,15 @@ export type SettingsTypeFieldPolicy = {
socksProxyPort?: FieldPolicy<any> | FieldReadFunction<any>;
socksProxyUsername?: FieldPolicy<any> | FieldReadFunction<any>;
socksProxyVersion?: FieldPolicy<any> | FieldReadFunction<any>;
syncDataCategories?: FieldPolicy<any> | FieldReadFunction<any>;
syncDataChapters?: FieldPolicy<any> | FieldReadFunction<any>;
syncDataHistory?: FieldPolicy<any> | FieldReadFunction<any>;
syncDataManga?: FieldPolicy<any> | FieldReadFunction<any>;
syncDataTracking?: FieldPolicy<any> | FieldReadFunction<any>;
syncInterval?: FieldPolicy<any> | FieldReadFunction<any>;
syncYomiApiKey?: FieldPolicy<any> | FieldReadFunction<any>;
syncYomiEnabled?: FieldPolicy<any> | FieldReadFunction<any>;
syncYomiHost?: FieldPolicy<any> | FieldReadFunction<any>;
systemTrayEnabled?: FieldPolicy<any> | FieldReadFunction<any>;
updateMangas?: FieldPolicy<any> | FieldReadFunction<any>;
useHikariConnectionPool?: FieldPolicy<any> | FieldReadFunction<any>;
@@ -1907,6 +1965,11 @@ export type StartDownloaderPayloadFieldPolicy = {
clientMutationId?: FieldPolicy<any> | FieldReadFunction<any>;
downloadStatus?: FieldPolicy<any> | FieldReadFunction<any>;
};
export type StartSyncPayloadKeySpecifier = ('clientMutationId' | 'result' | StartSyncPayloadKeySpecifier)[];
export type StartSyncPayloadFieldPolicy = {
clientMutationId?: FieldPolicy<any> | FieldReadFunction<any>;
result?: FieldPolicy<any> | FieldReadFunction<any>;
};
export type StopDownloaderPayloadKeySpecifier = (
| 'clientMutationId'
| 'downloadStatus'
@@ -1920,6 +1983,7 @@ export type SubscriptionKeySpecifier = (
| 'downloadChanged'
| 'downloadStatusChanged'
| 'libraryUpdateStatusChanged'
| 'syncStatusChanged'
| 'updateStatusChanged'
| 'webUIUpdateStatusChange'
| SubscriptionKeySpecifier
@@ -1928,6 +1992,7 @@ export type SubscriptionFieldPolicy = {
downloadChanged?: FieldPolicy<any> | FieldReadFunction<any>;
downloadStatusChanged?: FieldPolicy<any> | FieldReadFunction<any>;
libraryUpdateStatusChanged?: FieldPolicy<any> | FieldReadFunction<any>;
syncStatusChanged?: FieldPolicy<any> | FieldReadFunction<any>;
updateStatusChanged?: FieldPolicy<any> | FieldReadFunction<any>;
webUIUpdateStatusChange?: FieldPolicy<any> | FieldReadFunction<any>;
};
@@ -1955,6 +2020,21 @@ export type SyncConflictInfoTypeFieldPolicy = {
deviceName?: FieldPolicy<any> | FieldReadFunction<any>;
remotePage?: FieldPolicy<any> | FieldReadFunction<any>;
};
export type SyncStatusKeySpecifier = (
| 'backupRestoreId'
| 'endDate'
| 'errorMessage'
| 'startDate'
| 'state'
| SyncStatusKeySpecifier
)[];
export type SyncStatusFieldPolicy = {
backupRestoreId?: FieldPolicy<any> | FieldReadFunction<any>;
endDate?: FieldPolicy<any> | FieldReadFunction<any>;
errorMessage?: FieldPolicy<any> | FieldReadFunction<any>;
startDate?: FieldPolicy<any> | FieldReadFunction<any>;
state?: FieldPolicy<any> | FieldReadFunction<any>;
};
export type TextFilterKeySpecifier = ('default' | 'name' | TextFilterKeySpecifier)[];
export type TextFilterFieldPolicy = {
default?: FieldPolicy<any> | FieldReadFunction<any>;
@@ -2918,6 +2998,10 @@ export type StrictTypedTypePolicies = {
keyFields?: false | StartDownloaderPayloadKeySpecifier | (() => undefined | StartDownloaderPayloadKeySpecifier);
fields?: StartDownloaderPayloadFieldPolicy;
};
StartSyncPayload?: Omit<TypePolicy, 'fields' | 'keyFields'> & {
keyFields?: false | StartSyncPayloadKeySpecifier | (() => undefined | StartSyncPayloadKeySpecifier);
fields?: StartSyncPayloadFieldPolicy;
};
StopDownloaderPayload?: Omit<TypePolicy, 'fields' | 'keyFields'> & {
keyFields?: false | StopDownloaderPayloadKeySpecifier | (() => undefined | StopDownloaderPayloadKeySpecifier);
fields?: StopDownloaderPayloadFieldPolicy;
@@ -2934,6 +3018,10 @@ export type StrictTypedTypePolicies = {
keyFields?: false | SyncConflictInfoTypeKeySpecifier | (() => undefined | SyncConflictInfoTypeKeySpecifier);
fields?: SyncConflictInfoTypeFieldPolicy;
};
SyncStatus?: Omit<TypePolicy, 'fields' | 'keyFields'> & {
keyFields?: false | SyncStatusKeySpecifier | (() => undefined | SyncStatusKeySpecifier);
fields?: SyncStatusFieldPolicy;
};
TextFilter?: Omit<TypePolicy, 'fields' | 'keyFields'> & {
keyFields?: false | TextFilterKeySpecifier | (() => undefined | TextFilterKeySpecifier);
fields?: TextFilterFieldPolicy;

View File

@@ -1363,6 +1363,7 @@ export type Mutation = {
setSourceMeta?: Maybe<SetSourceMetaPayload>;
setSourceMetas?: Maybe<SetSourceMetasPayload>;
startDownloader?: Maybe<StartDownloaderPayload>;
startSync: StartSyncPayload;
stopDownloader?: Maybe<StopDownloaderPayload>;
trackProgress?: Maybe<TrackProgressPayload>;
unbindTrack: UnbindTrackPayload;
@@ -1598,6 +1599,10 @@ export type MutationStartDownloaderArgs = {
input: StartDownloaderInput;
};
export type MutationStartSyncArgs = {
input: StartSyncInput;
};
export type MutationStopDownloaderArgs = {
input: StopDownloaderInput;
};
@@ -1824,6 +1829,15 @@ export type PartialSettingsType = Settings & {
socksProxyPort?: Maybe<Scalars['String']['output']>;
socksProxyUsername?: Maybe<Scalars['String']['output']>;
socksProxyVersion?: Maybe<Scalars['Int']['output']>;
syncDataCategories?: Maybe<Scalars['Boolean']['output']>;
syncDataChapters?: Maybe<Scalars['Boolean']['output']>;
syncDataHistory?: Maybe<Scalars['Boolean']['output']>;
syncDataManga?: Maybe<Scalars['Boolean']['output']>;
syncDataTracking?: Maybe<Scalars['Boolean']['output']>;
syncInterval?: Maybe<Scalars['Duration']['output']>;
syncYomiApiKey?: Maybe<Scalars['String']['output']>;
syncYomiEnabled?: Maybe<Scalars['Boolean']['output']>;
syncYomiHost?: Maybe<Scalars['String']['output']>;
systemTrayEnabled?: Maybe<Scalars['Boolean']['output']>;
updateMangas?: Maybe<Scalars['Boolean']['output']>;
useHikariConnectionPool?: Maybe<Scalars['Boolean']['output']>;
@@ -1903,6 +1917,15 @@ export type PartialSettingsTypeInput = {
socksProxyPort?: InputMaybe<Scalars['String']['input']>;
socksProxyUsername?: InputMaybe<Scalars['String']['input']>;
socksProxyVersion?: InputMaybe<Scalars['Int']['input']>;
syncDataCategories?: InputMaybe<Scalars['Boolean']['input']>;
syncDataChapters?: InputMaybe<Scalars['Boolean']['input']>;
syncDataHistory?: InputMaybe<Scalars['Boolean']['input']>;
syncDataManga?: InputMaybe<Scalars['Boolean']['input']>;
syncDataTracking?: InputMaybe<Scalars['Boolean']['input']>;
syncInterval?: InputMaybe<Scalars['Duration']['input']>;
syncYomiApiKey?: InputMaybe<Scalars['String']['input']>;
syncYomiEnabled?: InputMaybe<Scalars['Boolean']['input']>;
syncYomiHost?: InputMaybe<Scalars['String']['input']>;
systemTrayEnabled?: InputMaybe<Scalars['Boolean']['input']>;
updateMangas?: InputMaybe<Scalars['Boolean']['input']>;
useHikariConnectionPool?: InputMaybe<Scalars['Boolean']['input']>;
@@ -1958,6 +1981,7 @@ export type Query = {
extensions: ExtensionNodeList;
getWebUIUpdateStatus: WebUiUpdateStatus;
koSyncStatus: KoSyncStatusPayload;
lastSyncStatus?: Maybe<SyncStatus>;
lastUpdateTimestamp: LastUpdateTimestampPayload;
libraryUpdateStatus: LibraryUpdateStatus;
manga: MangaType;
@@ -2412,6 +2436,15 @@ export type Settings = {
socksProxyPort?: Maybe<Scalars['String']['output']>;
socksProxyUsername?: Maybe<Scalars['String']['output']>;
socksProxyVersion?: Maybe<Scalars['Int']['output']>;
syncDataCategories?: Maybe<Scalars['Boolean']['output']>;
syncDataChapters?: Maybe<Scalars['Boolean']['output']>;
syncDataHistory?: Maybe<Scalars['Boolean']['output']>;
syncDataManga?: Maybe<Scalars['Boolean']['output']>;
syncDataTracking?: Maybe<Scalars['Boolean']['output']>;
syncInterval?: Maybe<Scalars['Duration']['output']>;
syncYomiApiKey?: Maybe<Scalars['String']['output']>;
syncYomiEnabled?: Maybe<Scalars['Boolean']['output']>;
syncYomiHost?: Maybe<Scalars['String']['output']>;
systemTrayEnabled?: Maybe<Scalars['Boolean']['output']>;
updateMangas?: Maybe<Scalars['Boolean']['output']>;
useHikariConnectionPool?: Maybe<Scalars['Boolean']['output']>;
@@ -2556,6 +2589,15 @@ export type SettingsType = Settings & {
socksProxyPort: Scalars['String']['output'];
socksProxyUsername: Scalars['String']['output'];
socksProxyVersion: Scalars['Int']['output'];
syncDataCategories: Scalars['Boolean']['output'];
syncDataChapters: Scalars['Boolean']['output'];
syncDataHistory: Scalars['Boolean']['output'];
syncDataManga: Scalars['Boolean']['output'];
syncDataTracking: Scalars['Boolean']['output'];
syncInterval: Scalars['Duration']['output'];
syncYomiApiKey: Scalars['String']['output'];
syncYomiEnabled: Scalars['Boolean']['output'];
syncYomiHost: Scalars['String']['output'];
systemTrayEnabled: Scalars['Boolean']['output'];
updateMangas: Scalars['Boolean']['output'];
useHikariConnectionPool: Scalars['Boolean']['output'];
@@ -2685,6 +2727,22 @@ export type StartDownloaderPayload = {
downloadStatus: DownloadStatus;
};
export type StartSyncInput = {
clientMutationId?: InputMaybe<Scalars['String']['input']>;
};
export type StartSyncPayload = {
__typename?: 'StartSyncPayload';
clientMutationId?: Maybe<Scalars['String']['output']>;
result: StartSyncResult;
};
export enum StartSyncResult {
Success = 'SUCCESS',
SyncDisabled = 'SYNC_DISABLED',
SyncInProgress = 'SYNC_IN_PROGRESS',
}
export type StopDownloaderInput = {
clientMutationId?: InputMaybe<Scalars['String']['input']>;
};
@@ -2777,6 +2835,7 @@ export type Subscription = {
downloadChanged: DownloadStatus;
downloadStatusChanged: DownloadUpdates;
libraryUpdateStatusChanged: UpdaterUpdates;
syncStatusChanged: SyncStatus;
/** @deprecated Replaced with updates, replace with updates(input) */
updateStatusChanged: UpdateStatus;
webUIUpdateStatusChange: WebUiUpdateStatus;
@@ -2807,6 +2866,26 @@ export type SyncConflictInfoType = {
remotePage: Scalars['Int']['output'];
};
export enum SyncState {
CreatingBackup = 'CREATING_BACKUP',
Downloading = 'DOWNLOADING',
Error = 'ERROR',
Merging = 'MERGING',
Restoring = 'RESTORING',
Started = 'STARTED',
Success = 'SUCCESS',
Uploading = 'UPLOADING',
}
export type SyncStatus = {
__typename?: 'SyncStatus';
backupRestoreId?: Maybe<Scalars['String']['output']>;
endDate?: Maybe<Scalars['LongString']['output']>;
errorMessage?: Maybe<Scalars['String']['output']>;
startDate: Scalars['LongString']['output'];
state: SyncState;
};
export type TextFilter = {
__typename?: 'TextFilter';
default: Scalars['String']['output'];

View File

@@ -2795,6 +2795,15 @@ export type ServerSettingsFragment = {
databasePassword: string;
useHikariConnectionPool: boolean;
kcefEnabled: boolean;
syncDataCategories: boolean;
syncDataChapters: boolean;
syncDataHistory: boolean;
syncDataManga: boolean;
syncDataTracking: boolean;
syncInterval: string;
syncYomiApiKey: string;
syncYomiEnabled: boolean;
syncYomiHost: string;
downloadConversions: Array<{
__typename: 'SettingsDownloadConversionType';
mimeType: string;
@@ -2899,6 +2908,15 @@ export type ResetServerSettingsMutation = {
databasePassword: string;
useHikariConnectionPool: boolean;
kcefEnabled: boolean;
syncDataCategories: boolean;
syncDataChapters: boolean;
syncDataHistory: boolean;
syncDataManga: boolean;
syncDataTracking: boolean;
syncInterval: string;
syncYomiApiKey: string;
syncYomiEnabled: boolean;
syncYomiHost: string;
downloadConversions: Array<{
__typename: 'SettingsDownloadConversionType';
mimeType: string;
@@ -3013,6 +3031,15 @@ export type UpdateServerSettingsMutation = {
databasePassword: string;
useHikariConnectionPool: boolean;
kcefEnabled: boolean;
syncDataCategories: boolean;
syncDataChapters: boolean;
syncDataHistory: boolean;
syncDataManga: boolean;
syncDataTracking: boolean;
syncInterval: string;
syncYomiApiKey: string;
syncYomiEnabled: boolean;
syncYomiHost: string;
downloadConversions: Array<{
__typename: 'SettingsDownloadConversionType';
mimeType: string;
@@ -3123,6 +3150,15 @@ export type GetServerSettingsQuery = {
databasePassword: string;
useHikariConnectionPool: boolean;
kcefEnabled: boolean;
syncDataCategories: boolean;
syncDataChapters: boolean;
syncDataHistory: boolean;
syncDataManga: boolean;
syncDataTracking: boolean;
syncInterval: string;
syncYomiApiKey: string;
syncYomiEnabled: boolean;
syncYomiHost: string;
downloadConversions: Array<{
__typename: 'SettingsDownloadConversionType';
mimeType: string;
@@ -3689,6 +3725,52 @@ export type GetMigratableSourcesQuery = {
};
};
export type SyncStatusFieldsFragment = {
__typename: 'SyncStatus';
backupRestoreId: string | null;
endDate: string | null;
errorMessage: string | null;
startDate: string;
state: Types.SyncState;
};
export type StartSyncMutationVariables = Exact<{
input?: Types.StartSyncInput | null | undefined;
}>;
export type StartSyncMutation = {
__typename: 'Mutation';
startSync: { __typename: 'StartSyncPayload'; result: Types.StartSyncResult };
};
export type GetSyncStatusQueryVariables = Exact<{ [key: string]: never }>;
export type GetSyncStatusQuery = {
__typename: 'Query';
lastSyncStatus: {
__typename: 'SyncStatus';
backupRestoreId: string | null;
endDate: string | null;
errorMessage: string | null;
startDate: string;
state: Types.SyncState;
} | null;
};
export type SyncSubscriptionVariables = Exact<{ [key: string]: never }>;
export type SyncSubscription = {
__typename: 'Subscription';
syncStatusChanged: {
__typename: 'SyncStatus';
backupRestoreId: string | null;
endDate: string | null;
errorMessage: string | null;
startDate: string;
state: Types.SyncState;
};
};
export type TrackerBaseFieldsFragment = {
__typename: 'TrackerType';
id: number;

View File

@@ -138,5 +138,16 @@ export const SERVER_SETTINGS = gql`
# WebView
kcefEnabled
# Sync
syncDataCategories
syncDataChapters
syncDataHistory
syncDataManga
syncDataTracking
syncInterval
syncYomiApiKey
syncYomiEnabled
syncYomiHost
}
`;

View File

@@ -0,0 +1,19 @@
/*
* Copyright (C) Contributors to the Suwayomi project
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
import gql from 'graphql-tag';
export const SYNC_STATUS_FIELDS = gql`
fragment SYNC_STATUS_FIELDS on SyncStatus {
backupRestoreId
endDate
errorMessage
startDate
state
}
`;

View File

@@ -0,0 +1,17 @@
/*
* Copyright (C) Contributors to the Suwayomi project
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
import gql from 'graphql-tag';
export const START_SYNC = gql`
mutation START_SYNC($input: StartSyncInput = {}) {
startSync(input: $input) {
result
}
}
`;

View File

@@ -0,0 +1,20 @@
/*
* Copyright (C) Contributors to the Suwayomi project
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
import gql from 'graphql-tag';
import { SYNC_STATUS_FIELDS } from '@/lib/graphql/sync/SyncFragments.ts';
export const GET_SYNC_STATUS = gql`
${SYNC_STATUS_FIELDS}
query GET_SYNC_STATUS {
lastSyncStatus {
...SYNC_STATUS_FIELDS
}
}
`;

View File

@@ -0,0 +1,20 @@
/*
* Copyright (C) Contributors to the Suwayomi project
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
import gql from 'graphql-tag';
import { SYNC_STATUS_FIELDS } from '@/lib/graphql/sync/SyncFragments.ts';
export const SYNC_SUBSCRIPTION = gql`
${SYNC_STATUS_FIELDS}
subscription SYNC_SUBSCRIPTION {
syncStatusChanged {
...SYNC_STATUS_FIELDS
}
}
`;