Compare commits

..

1 Commits

Author SHA1 Message Date
c73e66cbe8 notifications schema 2025-11-05 11:46:27 -08:00
2 changed files with 96 additions and 0 deletions

View File

@@ -2286,6 +2286,7 @@ export type Mutation = {
createSubscription: CreateSubscriptionResultGql; createSubscription: CreateSubscriptionResultGql;
createUploadStream: CreateUploadStreamReturn; createUploadStream: CreateUploadStreamReturn;
deleteComment: Scalars["Boolean"]["output"]; deleteComment: Scalars["Boolean"]["output"];
deleteNotification: Scalars["Boolean"]["output"];
deleteTags: Scalars["Boolean"]["output"]; deleteTags: Scalars["Boolean"]["output"];
deleteUser: Scalars["Boolean"]["output"]; deleteUser: Scalars["Boolean"]["output"];
deleteVideo: Scalars["Boolean"]["output"]; deleteVideo: Scalars["Boolean"]["output"];
@@ -2300,6 +2301,9 @@ export type Mutation = {
getHlsInitUploadLink: GetUploadLinkReturn; getHlsInitUploadLink: GetUploadLinkReturn;
getProfileImageUploadLink: GetProfileUploadLinkReturn; getProfileImageUploadLink: GetProfileUploadLinkReturn;
getUploadLink: GetUploadLinkReturn; getUploadLink: GetUploadLinkReturn;
markAllNotificationsAsRead: Scalars["Boolean"]["output"];
markNotificationAsRead: Scalars["Boolean"]["output"];
markNotificationsAsRead: Scalars["Boolean"]["output"];
reactToVideo: Scalars["Boolean"]["output"]; reactToVideo: Scalars["Boolean"]["output"];
reportContent: Scalars["Boolean"]["output"]; reportContent: Scalars["Boolean"]["output"];
retireTags: Scalars["Boolean"]["output"]; retireTags: Scalars["Boolean"]["output"];
@@ -2346,6 +2350,10 @@ export type MutationDeleteCommentArgs = {
videoId: Scalars["Int"]["input"]; videoId: Scalars["Int"]["input"];
}; };
export type MutationDeleteNotificationArgs = {
notificationId: Scalars["Int"]["input"];
};
export type MutationDeleteTagsArgs = { export type MutationDeleteTagsArgs = {
tagsToDelete: Array<VideoTagInput>; tagsToDelete: Array<VideoTagInput>;
videoId: Scalars["Int"]["input"]; videoId: Scalars["Int"]["input"];
@@ -2401,6 +2409,14 @@ export type MutationGetUploadLinkArgs = {
videoId: Scalars["Int"]["input"]; videoId: Scalars["Int"]["input"];
}; };
export type MutationMarkNotificationAsReadArgs = {
notificationId: Scalars["Int"]["input"];
};
export type MutationMarkNotificationsAsReadArgs = {
notificationIds: Array<Scalars["Int"]["input"]>;
};
export type MutationReactToVideoArgs = { export type MutationReactToVideoArgs = {
reaction?: InputMaybe<ReactionEnum>; reaction?: InputMaybe<ReactionEnum>;
videoId: Scalars["Int"]["input"]; videoId: Scalars["Int"]["input"];
@@ -2441,6 +2457,38 @@ export type NoInitForChunkedUploadErr = {
segmentType: StreamSegmentTypeEnum; segmentType: StreamSegmentTypeEnum;
}; };
export type NotificationConnection = {
__typename?: "NotificationConnection";
hasMore: Scalars["Boolean"]["output"];
notifications: Array<NotificationGql>;
totalCount: Scalars["Int"]["output"];
unreadCount: Scalars["Int"]["output"];
};
export type NotificationFilters = {
isRead?: InputMaybe<Scalars["Boolean"]["input"]>;
notificationTypes?: InputMaybe<Array<NotificationTypeEnum>>;
};
export type NotificationGql = {
__typename?: "NotificationGQL";
actor: UserGql;
comment?: Maybe<CommentGql>;
createdAt: Scalars["DateTime"]["output"];
id: Scalars["Int"]["output"];
isRead: Scalars["Boolean"]["output"];
notificationType: NotificationTypeEnum;
reactionType?: Maybe<Scalars["String"]["output"]>;
readAt?: Maybe<Scalars["DateTime"]["output"]>;
videoId?: Maybe<Scalars["Int"]["output"]>;
};
export enum NotificationTypeEnum {
Comment = "COMMENT",
CommentReply = "COMMENT_REPLY",
Reaction = "REACTION",
}
export type OtherErrorNeedsNote = { export type OtherErrorNeedsNote = {
__typename?: "OtherErrorNeedsNote"; __typename?: "OtherErrorNeedsNote";
msg?: Maybe<Scalars["String"]["output"]>; msg?: Maybe<Scalars["String"]["output"]>;
@@ -2550,6 +2598,8 @@ export type Query = {
getVideo: VideoGql; getVideo: VideoGql;
getVideoMakePercentageIntervals: Array<MakePercentageIntervalGql>; getVideoMakePercentageIntervals: Array<MakePercentageIntervalGql>;
getVideos: Array<VideoGql>; getVideos: Array<VideoGql>;
notifications: NotificationConnection;
unreadNotificationCount: Scalars["Int"]["output"];
waitFor: Scalars["Float"]["output"]; waitFor: Scalars["Float"]["output"];
}; };
@@ -2689,6 +2739,12 @@ export type QueryGetVideosArgs = {
videoIds: Array<Scalars["Int"]["input"]>; videoIds: Array<Scalars["Int"]["input"]>;
}; };
export type QueryNotificationsArgs = {
filters?: InputMaybe<NotificationFilters>;
limit?: Scalars["Int"]["input"];
offset?: Scalars["Int"]["input"];
};
export type QueryWaitForArgs = { export type QueryWaitForArgs = {
duration: Scalars["Float"]["input"]; duration: Scalars["Float"]["input"];
}; };

View File

@@ -28,6 +28,12 @@ type Query {
when: DateTime = null when: DateTime = null
): CountLeaderboardGQL! ): CountLeaderboardGQL!
getMedals(scope: MedalScope!, userId: Int = null): RequestedMedalsGQL! getMedals(scope: MedalScope!, userId: Int = null): RequestedMedalsGQL!
notifications(
limit: Int! = 20
offset: Int! = 0
filters: NotificationFilters = null
): NotificationConnection!
unreadNotificationCount: Int!
getRuns( getRuns(
filterInput: RunFilterInput! filterInput: RunFilterInput!
runIds: [Int!] = null runIds: [Int!] = null
@@ -714,6 +720,36 @@ input MedalScope @oneOf {
datetimeRange: DatetimeRangeAggregationInput datetimeRange: DatetimeRangeAggregationInput
} }
type NotificationConnection {
notifications: [NotificationGQL!]!
totalCount: Int!
unreadCount: Int!
hasMore: Boolean!
}
type NotificationGQL {
id: Int!
notificationType: NotificationTypeEnum!
actor: UserGQL!
videoId: Int
comment: CommentGQL
reactionType: String
isRead: Boolean!
createdAt: DateTime!
readAt: DateTime
}
enum NotificationTypeEnum {
COMMENT
COMMENT_REPLY
REACTION
}
input NotificationFilters {
isRead: Boolean = null
notificationTypes: [NotificationTypeEnum!] = null
}
type GetRunsResult { type GetRunsResult {
runs: [RunGQL!]! runs: [RunGQL!]!
count: Int count: Int
@@ -915,6 +951,10 @@ type Mutation {
reason: ReportReasonEnum! reason: ReportReasonEnum!
customReason: String = null customReason: String = null
): Boolean! ): Boolean!
markNotificationAsRead(notificationId: Int!): Boolean!
markAllNotificationsAsRead: Boolean!
markNotificationsAsRead(notificationIds: [Int!]!): Boolean!
deleteNotification(notificationId: Int!): Boolean!
addAnnotationToShot( addAnnotationToShot(
shotId: Int! shotId: Int!
annotationName: String! annotationName: String!