Compare commits
11 Commits
1488862c77
...
653f31e96a
Author | SHA1 | Date | |
---|---|---|---|
653f31e96a | |||
b18fedae8e | |||
31baa2b096 | |||
85cd37f70f | |||
b53aa172fa | |||
df2e534745 | |||
|
ea4980947f | ||
65475bca9b | |||
280f5a66bd | |||
84daf2d136 | |||
6558fb60e9 |
268
src/index.tsx
268
src/index.tsx
@ -245,6 +245,7 @@ export type FilterInput =
|
|||||||
falsePositiveScore?: never;
|
falsePositiveScore?: never;
|
||||||
fargoRating?: never;
|
fargoRating?: never;
|
||||||
intendedPocketType?: never;
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect?: never;
|
isDirect?: never;
|
||||||
isLeft?: never;
|
isLeft?: never;
|
||||||
isLeftMiss?: never;
|
isLeftMiss?: never;
|
||||||
@ -288,6 +289,7 @@ export type FilterInput =
|
|||||||
falsePositiveScore?: never;
|
falsePositiveScore?: never;
|
||||||
fargoRating?: never;
|
fargoRating?: never;
|
||||||
intendedPocketType?: never;
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect?: never;
|
isDirect?: never;
|
||||||
isLeft?: never;
|
isLeft?: never;
|
||||||
isLeftMiss?: never;
|
isLeftMiss?: never;
|
||||||
@ -331,6 +333,7 @@ export type FilterInput =
|
|||||||
falsePositiveScore?: never;
|
falsePositiveScore?: never;
|
||||||
fargoRating?: never;
|
fargoRating?: never;
|
||||||
intendedPocketType?: never;
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect?: never;
|
isDirect?: never;
|
||||||
isLeft?: never;
|
isLeft?: never;
|
||||||
isLeftMiss?: never;
|
isLeftMiss?: never;
|
||||||
@ -374,6 +377,7 @@ export type FilterInput =
|
|||||||
falsePositiveScore?: never;
|
falsePositiveScore?: never;
|
||||||
fargoRating?: never;
|
fargoRating?: never;
|
||||||
intendedPocketType?: never;
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect?: never;
|
isDirect?: never;
|
||||||
isLeft?: never;
|
isLeft?: never;
|
||||||
isLeftMiss?: never;
|
isLeftMiss?: never;
|
||||||
@ -417,6 +421,7 @@ export type FilterInput =
|
|||||||
falsePositiveScore?: never;
|
falsePositiveScore?: never;
|
||||||
fargoRating?: never;
|
fargoRating?: never;
|
||||||
intendedPocketType?: never;
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect?: never;
|
isDirect?: never;
|
||||||
isLeft?: never;
|
isLeft?: never;
|
||||||
isLeftMiss?: never;
|
isLeftMiss?: never;
|
||||||
@ -460,6 +465,7 @@ export type FilterInput =
|
|||||||
falsePositiveScore?: never;
|
falsePositiveScore?: never;
|
||||||
fargoRating?: never;
|
fargoRating?: never;
|
||||||
intendedPocketType?: never;
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect?: never;
|
isDirect?: never;
|
||||||
isLeft?: never;
|
isLeft?: never;
|
||||||
isLeftMiss?: never;
|
isLeftMiss?: never;
|
||||||
@ -503,6 +509,7 @@ export type FilterInput =
|
|||||||
falsePositiveScore?: never;
|
falsePositiveScore?: never;
|
||||||
fargoRating?: never;
|
fargoRating?: never;
|
||||||
intendedPocketType?: never;
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect?: never;
|
isDirect?: never;
|
||||||
isLeft?: never;
|
isLeft?: never;
|
||||||
isLeftMiss?: never;
|
isLeftMiss?: never;
|
||||||
@ -546,6 +553,7 @@ export type FilterInput =
|
|||||||
falsePositiveScore?: never;
|
falsePositiveScore?: never;
|
||||||
fargoRating?: never;
|
fargoRating?: never;
|
||||||
intendedPocketType?: never;
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect?: never;
|
isDirect?: never;
|
||||||
isLeft?: never;
|
isLeft?: never;
|
||||||
isLeftMiss?: never;
|
isLeftMiss?: never;
|
||||||
@ -589,6 +597,7 @@ export type FilterInput =
|
|||||||
falsePositiveScore?: never;
|
falsePositiveScore?: never;
|
||||||
fargoRating?: never;
|
fargoRating?: never;
|
||||||
intendedPocketType?: never;
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect?: never;
|
isDirect?: never;
|
||||||
isLeft?: never;
|
isLeft?: never;
|
||||||
isLeftMiss?: never;
|
isLeftMiss?: never;
|
||||||
@ -632,6 +641,7 @@ export type FilterInput =
|
|||||||
falsePositiveScore?: never;
|
falsePositiveScore?: never;
|
||||||
fargoRating?: never;
|
fargoRating?: never;
|
||||||
intendedPocketType?: never;
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect?: never;
|
isDirect?: never;
|
||||||
isLeft?: never;
|
isLeft?: never;
|
||||||
isLeftMiss?: never;
|
isLeftMiss?: never;
|
||||||
@ -675,6 +685,7 @@ export type FilterInput =
|
|||||||
falsePositiveScore?: never;
|
falsePositiveScore?: never;
|
||||||
fargoRating?: never;
|
fargoRating?: never;
|
||||||
intendedPocketType?: never;
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect?: never;
|
isDirect?: never;
|
||||||
isLeft?: never;
|
isLeft?: never;
|
||||||
isLeftMiss?: never;
|
isLeftMiss?: never;
|
||||||
@ -718,6 +729,7 @@ export type FilterInput =
|
|||||||
falsePositiveScore?: never;
|
falsePositiveScore?: never;
|
||||||
fargoRating?: never;
|
fargoRating?: never;
|
||||||
intendedPocketType?: never;
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect?: never;
|
isDirect?: never;
|
||||||
isLeft?: never;
|
isLeft?: never;
|
||||||
isLeftMiss?: never;
|
isLeftMiss?: never;
|
||||||
@ -761,6 +773,7 @@ export type FilterInput =
|
|||||||
falsePositiveScore: FloatRangeFilter;
|
falsePositiveScore: FloatRangeFilter;
|
||||||
fargoRating?: never;
|
fargoRating?: never;
|
||||||
intendedPocketType?: never;
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect?: never;
|
isDirect?: never;
|
||||||
isLeft?: never;
|
isLeft?: never;
|
||||||
isLeftMiss?: never;
|
isLeftMiss?: never;
|
||||||
@ -804,6 +817,7 @@ export type FilterInput =
|
|||||||
falsePositiveScore?: never;
|
falsePositiveScore?: never;
|
||||||
fargoRating: FloatRangeFilter;
|
fargoRating: FloatRangeFilter;
|
||||||
intendedPocketType?: never;
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect?: never;
|
isDirect?: never;
|
||||||
isLeft?: never;
|
isLeft?: never;
|
||||||
isLeftMiss?: never;
|
isLeftMiss?: never;
|
||||||
@ -847,6 +861,7 @@ export type FilterInput =
|
|||||||
falsePositiveScore?: never;
|
falsePositiveScore?: never;
|
||||||
fargoRating?: never;
|
fargoRating?: never;
|
||||||
intendedPocketType: Array<PocketEnum>;
|
intendedPocketType: Array<PocketEnum>;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect?: never;
|
isDirect?: never;
|
||||||
isLeft?: never;
|
isLeft?: never;
|
||||||
isLeftMiss?: never;
|
isLeftMiss?: never;
|
||||||
@ -890,6 +905,51 @@ export type FilterInput =
|
|||||||
falsePositiveScore?: never;
|
falsePositiveScore?: never;
|
||||||
fargoRating?: never;
|
fargoRating?: never;
|
||||||
intendedPocketType?: never;
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic: Array<Scalars["Boolean"]["input"]>;
|
||||||
|
isDirect?: never;
|
||||||
|
isLeft?: never;
|
||||||
|
isLeftMiss?: never;
|
||||||
|
isRight?: never;
|
||||||
|
isRightMiss?: never;
|
||||||
|
isStraight?: never;
|
||||||
|
kickAngle?: never;
|
||||||
|
kickDistance?: never;
|
||||||
|
make?: never;
|
||||||
|
marginOfErrorInDegrees?: never;
|
||||||
|
missAngleInDegrees?: never;
|
||||||
|
notFilter?: never;
|
||||||
|
orFilters?: never;
|
||||||
|
runId?: never;
|
||||||
|
runLength?: never;
|
||||||
|
shotDirection?: never;
|
||||||
|
spinType?: never;
|
||||||
|
tableSize?: never;
|
||||||
|
tags?: never;
|
||||||
|
targetPocketAngle?: never;
|
||||||
|
targetPocketAngleDirection?: never;
|
||||||
|
targetPocketDistance?: never;
|
||||||
|
totalDistance?: never;
|
||||||
|
userId?: never;
|
||||||
|
username?: never;
|
||||||
|
videoId?: never;
|
||||||
|
}
|
||||||
|
| {
|
||||||
|
andFilters?: never;
|
||||||
|
annotations?: never;
|
||||||
|
backcut?: never;
|
||||||
|
bankAngle?: never;
|
||||||
|
bankDistance?: never;
|
||||||
|
createdAt?: never;
|
||||||
|
cueAngleAfterObject?: never;
|
||||||
|
cueBallSpeed?: never;
|
||||||
|
cueObjectAngle?: never;
|
||||||
|
cueObjectDistance?: never;
|
||||||
|
cueSpeedAfterObject?: never;
|
||||||
|
difficulty?: never;
|
||||||
|
falsePositiveScore?: never;
|
||||||
|
fargoRating?: never;
|
||||||
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect: Array<Scalars["Boolean"]["input"]>;
|
isDirect: Array<Scalars["Boolean"]["input"]>;
|
||||||
isLeft?: never;
|
isLeft?: never;
|
||||||
isLeftMiss?: never;
|
isLeftMiss?: never;
|
||||||
@ -933,6 +993,7 @@ export type FilterInput =
|
|||||||
falsePositiveScore?: never;
|
falsePositiveScore?: never;
|
||||||
fargoRating?: never;
|
fargoRating?: never;
|
||||||
intendedPocketType?: never;
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect?: never;
|
isDirect?: never;
|
||||||
isLeft: Array<Scalars["Boolean"]["input"]>;
|
isLeft: Array<Scalars["Boolean"]["input"]>;
|
||||||
isLeftMiss?: never;
|
isLeftMiss?: never;
|
||||||
@ -976,6 +1037,7 @@ export type FilterInput =
|
|||||||
falsePositiveScore?: never;
|
falsePositiveScore?: never;
|
||||||
fargoRating?: never;
|
fargoRating?: never;
|
||||||
intendedPocketType?: never;
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect?: never;
|
isDirect?: never;
|
||||||
isLeft?: never;
|
isLeft?: never;
|
||||||
isLeftMiss: Array<Scalars["Boolean"]["input"]>;
|
isLeftMiss: Array<Scalars["Boolean"]["input"]>;
|
||||||
@ -1019,6 +1081,7 @@ export type FilterInput =
|
|||||||
falsePositiveScore?: never;
|
falsePositiveScore?: never;
|
||||||
fargoRating?: never;
|
fargoRating?: never;
|
||||||
intendedPocketType?: never;
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect?: never;
|
isDirect?: never;
|
||||||
isLeft?: never;
|
isLeft?: never;
|
||||||
isLeftMiss?: never;
|
isLeftMiss?: never;
|
||||||
@ -1062,6 +1125,7 @@ export type FilterInput =
|
|||||||
falsePositiveScore?: never;
|
falsePositiveScore?: never;
|
||||||
fargoRating?: never;
|
fargoRating?: never;
|
||||||
intendedPocketType?: never;
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect?: never;
|
isDirect?: never;
|
||||||
isLeft?: never;
|
isLeft?: never;
|
||||||
isLeftMiss?: never;
|
isLeftMiss?: never;
|
||||||
@ -1105,6 +1169,7 @@ export type FilterInput =
|
|||||||
falsePositiveScore?: never;
|
falsePositiveScore?: never;
|
||||||
fargoRating?: never;
|
fargoRating?: never;
|
||||||
intendedPocketType?: never;
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect?: never;
|
isDirect?: never;
|
||||||
isLeft?: never;
|
isLeft?: never;
|
||||||
isLeftMiss?: never;
|
isLeftMiss?: never;
|
||||||
@ -1148,6 +1213,7 @@ export type FilterInput =
|
|||||||
falsePositiveScore?: never;
|
falsePositiveScore?: never;
|
||||||
fargoRating?: never;
|
fargoRating?: never;
|
||||||
intendedPocketType?: never;
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect?: never;
|
isDirect?: never;
|
||||||
isLeft?: never;
|
isLeft?: never;
|
||||||
isLeftMiss?: never;
|
isLeftMiss?: never;
|
||||||
@ -1191,6 +1257,7 @@ export type FilterInput =
|
|||||||
falsePositiveScore?: never;
|
falsePositiveScore?: never;
|
||||||
fargoRating?: never;
|
fargoRating?: never;
|
||||||
intendedPocketType?: never;
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect?: never;
|
isDirect?: never;
|
||||||
isLeft?: never;
|
isLeft?: never;
|
||||||
isLeftMiss?: never;
|
isLeftMiss?: never;
|
||||||
@ -1234,6 +1301,7 @@ export type FilterInput =
|
|||||||
falsePositiveScore?: never;
|
falsePositiveScore?: never;
|
||||||
fargoRating?: never;
|
fargoRating?: never;
|
||||||
intendedPocketType?: never;
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect?: never;
|
isDirect?: never;
|
||||||
isLeft?: never;
|
isLeft?: never;
|
||||||
isLeftMiss?: never;
|
isLeftMiss?: never;
|
||||||
@ -1277,6 +1345,7 @@ export type FilterInput =
|
|||||||
falsePositiveScore?: never;
|
falsePositiveScore?: never;
|
||||||
fargoRating?: never;
|
fargoRating?: never;
|
||||||
intendedPocketType?: never;
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect?: never;
|
isDirect?: never;
|
||||||
isLeft?: never;
|
isLeft?: never;
|
||||||
isLeftMiss?: never;
|
isLeftMiss?: never;
|
||||||
@ -1320,6 +1389,7 @@ export type FilterInput =
|
|||||||
falsePositiveScore?: never;
|
falsePositiveScore?: never;
|
||||||
fargoRating?: never;
|
fargoRating?: never;
|
||||||
intendedPocketType?: never;
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect?: never;
|
isDirect?: never;
|
||||||
isLeft?: never;
|
isLeft?: never;
|
||||||
isLeftMiss?: never;
|
isLeftMiss?: never;
|
||||||
@ -1363,6 +1433,7 @@ export type FilterInput =
|
|||||||
falsePositiveScore?: never;
|
falsePositiveScore?: never;
|
||||||
fargoRating?: never;
|
fargoRating?: never;
|
||||||
intendedPocketType?: never;
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect?: never;
|
isDirect?: never;
|
||||||
isLeft?: never;
|
isLeft?: never;
|
||||||
isLeftMiss?: never;
|
isLeftMiss?: never;
|
||||||
@ -1406,6 +1477,7 @@ export type FilterInput =
|
|||||||
falsePositiveScore?: never;
|
falsePositiveScore?: never;
|
||||||
fargoRating?: never;
|
fargoRating?: never;
|
||||||
intendedPocketType?: never;
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect?: never;
|
isDirect?: never;
|
||||||
isLeft?: never;
|
isLeft?: never;
|
||||||
isLeftMiss?: never;
|
isLeftMiss?: never;
|
||||||
@ -1449,6 +1521,7 @@ export type FilterInput =
|
|||||||
falsePositiveScore?: never;
|
falsePositiveScore?: never;
|
||||||
fargoRating?: never;
|
fargoRating?: never;
|
||||||
intendedPocketType?: never;
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect?: never;
|
isDirect?: never;
|
||||||
isLeft?: never;
|
isLeft?: never;
|
||||||
isLeftMiss?: never;
|
isLeftMiss?: never;
|
||||||
@ -1492,6 +1565,7 @@ export type FilterInput =
|
|||||||
falsePositiveScore?: never;
|
falsePositiveScore?: never;
|
||||||
fargoRating?: never;
|
fargoRating?: never;
|
||||||
intendedPocketType?: never;
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect?: never;
|
isDirect?: never;
|
||||||
isLeft?: never;
|
isLeft?: never;
|
||||||
isLeftMiss?: never;
|
isLeftMiss?: never;
|
||||||
@ -1535,6 +1609,7 @@ export type FilterInput =
|
|||||||
falsePositiveScore?: never;
|
falsePositiveScore?: never;
|
||||||
fargoRating?: never;
|
fargoRating?: never;
|
||||||
intendedPocketType?: never;
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect?: never;
|
isDirect?: never;
|
||||||
isLeft?: never;
|
isLeft?: never;
|
||||||
isLeftMiss?: never;
|
isLeftMiss?: never;
|
||||||
@ -1578,6 +1653,7 @@ export type FilterInput =
|
|||||||
falsePositiveScore?: never;
|
falsePositiveScore?: never;
|
||||||
fargoRating?: never;
|
fargoRating?: never;
|
||||||
intendedPocketType?: never;
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect?: never;
|
isDirect?: never;
|
||||||
isLeft?: never;
|
isLeft?: never;
|
||||||
isLeftMiss?: never;
|
isLeftMiss?: never;
|
||||||
@ -1621,6 +1697,7 @@ export type FilterInput =
|
|||||||
falsePositiveScore?: never;
|
falsePositiveScore?: never;
|
||||||
fargoRating?: never;
|
fargoRating?: never;
|
||||||
intendedPocketType?: never;
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect?: never;
|
isDirect?: never;
|
||||||
isLeft?: never;
|
isLeft?: never;
|
||||||
isLeftMiss?: never;
|
isLeftMiss?: never;
|
||||||
@ -1664,6 +1741,7 @@ export type FilterInput =
|
|||||||
falsePositiveScore?: never;
|
falsePositiveScore?: never;
|
||||||
fargoRating?: never;
|
fargoRating?: never;
|
||||||
intendedPocketType?: never;
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect?: never;
|
isDirect?: never;
|
||||||
isLeft?: never;
|
isLeft?: never;
|
||||||
isLeftMiss?: never;
|
isLeftMiss?: never;
|
||||||
@ -1707,6 +1785,7 @@ export type FilterInput =
|
|||||||
falsePositiveScore?: never;
|
falsePositiveScore?: never;
|
||||||
fargoRating?: never;
|
fargoRating?: never;
|
||||||
intendedPocketType?: never;
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect?: never;
|
isDirect?: never;
|
||||||
isLeft?: never;
|
isLeft?: never;
|
||||||
isLeftMiss?: never;
|
isLeftMiss?: never;
|
||||||
@ -1750,6 +1829,7 @@ export type FilterInput =
|
|||||||
falsePositiveScore?: never;
|
falsePositiveScore?: never;
|
||||||
fargoRating?: never;
|
fargoRating?: never;
|
||||||
intendedPocketType?: never;
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect?: never;
|
isDirect?: never;
|
||||||
isLeft?: never;
|
isLeft?: never;
|
||||||
isLeftMiss?: never;
|
isLeftMiss?: never;
|
||||||
@ -1793,6 +1873,7 @@ export type FilterInput =
|
|||||||
falsePositiveScore?: never;
|
falsePositiveScore?: never;
|
||||||
fargoRating?: never;
|
fargoRating?: never;
|
||||||
intendedPocketType?: never;
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect?: never;
|
isDirect?: never;
|
||||||
isLeft?: never;
|
isLeft?: never;
|
||||||
isLeftMiss?: never;
|
isLeftMiss?: never;
|
||||||
@ -1836,6 +1917,7 @@ export type FilterInput =
|
|||||||
falsePositiveScore?: never;
|
falsePositiveScore?: never;
|
||||||
fargoRating?: never;
|
fargoRating?: never;
|
||||||
intendedPocketType?: never;
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect?: never;
|
isDirect?: never;
|
||||||
isLeft?: never;
|
isLeft?: never;
|
||||||
isLeftMiss?: never;
|
isLeftMiss?: never;
|
||||||
@ -1879,6 +1961,7 @@ export type FilterInput =
|
|||||||
falsePositiveScore?: never;
|
falsePositiveScore?: never;
|
||||||
fargoRating?: never;
|
fargoRating?: never;
|
||||||
intendedPocketType?: never;
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect?: never;
|
isDirect?: never;
|
||||||
isLeft?: never;
|
isLeft?: never;
|
||||||
isLeftMiss?: never;
|
isLeftMiss?: never;
|
||||||
@ -1922,6 +2005,7 @@ export type FilterInput =
|
|||||||
falsePositiveScore?: never;
|
falsePositiveScore?: never;
|
||||||
fargoRating?: never;
|
fargoRating?: never;
|
||||||
intendedPocketType?: never;
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect?: never;
|
isDirect?: never;
|
||||||
isLeft?: never;
|
isLeft?: never;
|
||||||
isLeftMiss?: never;
|
isLeftMiss?: never;
|
||||||
@ -1965,6 +2049,7 @@ export type FilterInput =
|
|||||||
falsePositiveScore?: never;
|
falsePositiveScore?: never;
|
||||||
fargoRating?: never;
|
fargoRating?: never;
|
||||||
intendedPocketType?: never;
|
intendedPocketType?: never;
|
||||||
|
isBreakHeuristic?: never;
|
||||||
isDirect?: never;
|
isDirect?: never;
|
||||||
isLeft?: never;
|
isLeft?: never;
|
||||||
isLeftMiss?: never;
|
isLeftMiss?: never;
|
||||||
@ -2167,6 +2252,7 @@ export type Mutation = {
|
|||||||
getHlsInitUploadLink: GetUploadLinkReturn;
|
getHlsInitUploadLink: GetUploadLinkReturn;
|
||||||
getProfileImageUploadLink: GetProfileUploadLinkReturn;
|
getProfileImageUploadLink: GetProfileUploadLinkReturn;
|
||||||
getUploadLink: GetUploadLinkReturn;
|
getUploadLink: GetUploadLinkReturn;
|
||||||
|
reactToVideo: Scalars["Boolean"]["output"];
|
||||||
retireTags: Scalars["Boolean"]["output"];
|
retireTags: Scalars["Boolean"]["output"];
|
||||||
setLoggerLevel: Scalars["Boolean"]["output"];
|
setLoggerLevel: Scalars["Boolean"]["output"];
|
||||||
setSegmentDuration: Scalars["Boolean"]["output"];
|
setSegmentDuration: Scalars["Boolean"]["output"];
|
||||||
@ -2254,6 +2340,11 @@ export type MutationGetUploadLinkArgs = {
|
|||||||
videoId: Scalars["Int"]["input"];
|
videoId: Scalars["Int"]["input"];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export type MutationReactToVideoArgs = {
|
||||||
|
reaction?: InputMaybe<ReactionEnum>;
|
||||||
|
videoId: Scalars["Int"]["input"];
|
||||||
|
};
|
||||||
|
|
||||||
export type MutationRetireTagsArgs = {
|
export type MutationRetireTagsArgs = {
|
||||||
tagIds: Array<Scalars["Int"]["input"]>;
|
tagIds: Array<Scalars["Int"]["input"]>;
|
||||||
};
|
};
|
||||||
@ -2510,6 +2601,22 @@ export type QueryWaitForArgs = {
|
|||||||
duration: Scalars["Float"]["input"];
|
duration: Scalars["Float"]["input"];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export enum ReactionEnum {
|
||||||
|
Bullseye = "BULLSEYE",
|
||||||
|
Heart = "HEART",
|
||||||
|
Hundred = "HUNDRED",
|
||||||
|
Like = "LIKE",
|
||||||
|
}
|
||||||
|
|
||||||
|
export type ReactionGql = {
|
||||||
|
__typename?: "ReactionGQL";
|
||||||
|
createdAt?: Maybe<Scalars["DateTime"]["output"]>;
|
||||||
|
reaction: ReactionEnum;
|
||||||
|
updatedAt?: Maybe<Scalars["DateTime"]["output"]>;
|
||||||
|
user: UserGql;
|
||||||
|
videoId: Scalars["Int"]["output"];
|
||||||
|
};
|
||||||
|
|
||||||
export type RequestedMedalsGql = {
|
export type RequestedMedalsGql = {
|
||||||
__typename?: "RequestedMedalsGQL";
|
__typename?: "RequestedMedalsGQL";
|
||||||
dailyMakes50?: Maybe<MedalGql>;
|
dailyMakes50?: Maybe<MedalGql>;
|
||||||
@ -2946,6 +3053,7 @@ export type VideoGql = {
|
|||||||
owner?: Maybe<UserGql>;
|
owner?: Maybe<UserGql>;
|
||||||
playlist?: Maybe<HlsPlaylistGql>;
|
playlist?: Maybe<HlsPlaylistGql>;
|
||||||
private: Scalars["Boolean"]["output"];
|
private: Scalars["Boolean"]["output"];
|
||||||
|
reactions: Array<ReactionGql>;
|
||||||
screenshotUri?: Maybe<Scalars["String"]["output"]>;
|
screenshotUri?: Maybe<Scalars["String"]["output"]>;
|
||||||
shots: Array<ShotGql>;
|
shots: Array<ShotGql>;
|
||||||
startTime?: Maybe<Scalars["DateTime"]["output"]>;
|
startTime?: Maybe<Scalars["DateTime"]["output"]>;
|
||||||
@ -3133,6 +3241,17 @@ export type GetFeedQuery = {
|
|||||||
status: ProcessingStatusEnum;
|
status: ProcessingStatusEnum;
|
||||||
}>;
|
}>;
|
||||||
} | null;
|
} | null;
|
||||||
|
reactions: Array<{
|
||||||
|
__typename?: "ReactionGQL";
|
||||||
|
videoId: number;
|
||||||
|
reaction: ReactionEnum;
|
||||||
|
user: {
|
||||||
|
__typename?: "UserGQL";
|
||||||
|
id: number;
|
||||||
|
username: string;
|
||||||
|
profileImageUri?: string | null;
|
||||||
|
};
|
||||||
|
}>;
|
||||||
}>;
|
}>;
|
||||||
pageInfo: {
|
pageInfo: {
|
||||||
__typename?: "PageInfoGQL";
|
__typename?: "PageInfoGQL";
|
||||||
@ -3186,6 +3305,17 @@ export type VideoCardFieldsFragment = {
|
|||||||
status: ProcessingStatusEnum;
|
status: ProcessingStatusEnum;
|
||||||
}>;
|
}>;
|
||||||
} | null;
|
} | null;
|
||||||
|
reactions: Array<{
|
||||||
|
__typename?: "ReactionGQL";
|
||||||
|
videoId: number;
|
||||||
|
reaction: ReactionEnum;
|
||||||
|
user: {
|
||||||
|
__typename?: "UserGQL";
|
||||||
|
id: number;
|
||||||
|
username: string;
|
||||||
|
profileImageUri?: string | null;
|
||||||
|
};
|
||||||
|
}>;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type GetVideoFeedQueryVariables = Exact<{
|
export type GetVideoFeedQueryVariables = Exact<{
|
||||||
@ -3248,6 +3378,17 @@ export type GetVideoFeedQuery = {
|
|||||||
status: ProcessingStatusEnum;
|
status: ProcessingStatusEnum;
|
||||||
}>;
|
}>;
|
||||||
} | null;
|
} | null;
|
||||||
|
reactions: Array<{
|
||||||
|
__typename?: "ReactionGQL";
|
||||||
|
videoId: number;
|
||||||
|
reaction: ReactionEnum;
|
||||||
|
user: {
|
||||||
|
__typename?: "UserGQL";
|
||||||
|
id: number;
|
||||||
|
username: string;
|
||||||
|
profileImageUri?: string | null;
|
||||||
|
};
|
||||||
|
}>;
|
||||||
}>;
|
}>;
|
||||||
pageInfo: {
|
pageInfo: {
|
||||||
__typename?: "PageInfoGQL";
|
__typename?: "PageInfoGQL";
|
||||||
@ -3451,6 +3592,16 @@ export type GetMedalsQuery = {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export type ReactToVideoMutationVariables = Exact<{
|
||||||
|
videoId: Scalars["Int"]["input"];
|
||||||
|
reaction?: InputMaybe<ReactionEnum>;
|
||||||
|
}>;
|
||||||
|
|
||||||
|
export type ReactToVideoMutation = {
|
||||||
|
__typename?: "Mutation";
|
||||||
|
reactToVideo: boolean;
|
||||||
|
};
|
||||||
|
|
||||||
export type GetRunsForHighlightsQueryVariables = Exact<{
|
export type GetRunsForHighlightsQueryVariables = Exact<{
|
||||||
filterInput: RunFilterInput;
|
filterInput: RunFilterInput;
|
||||||
runIds?: InputMaybe<Array<Scalars["Int"]["input"]> | Scalars["Int"]["input"]>;
|
runIds?: InputMaybe<Array<Scalars["Int"]["input"]> | Scalars["Int"]["input"]>;
|
||||||
@ -3901,6 +4052,16 @@ export type RetireTagsMutation = {
|
|||||||
retireTags: boolean;
|
retireTags: boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export type DeleteTagsMutationVariables = Exact<{
|
||||||
|
videoId: Scalars["Int"]["input"];
|
||||||
|
tagsToDelete: Array<VideoTagInput> | VideoTagInput;
|
||||||
|
}>;
|
||||||
|
|
||||||
|
export type DeleteTagsMutation = {
|
||||||
|
__typename?: "Mutation";
|
||||||
|
deleteTags: boolean;
|
||||||
|
};
|
||||||
|
|
||||||
export type GetProfileImageUploadLinkMutationVariables = Exact<{
|
export type GetProfileImageUploadLinkMutationVariables = Exact<{
|
||||||
fileExt?: InputMaybe<Scalars["String"]["input"]>;
|
fileExt?: InputMaybe<Scalars["String"]["input"]>;
|
||||||
}>;
|
}>;
|
||||||
@ -4919,6 +5080,15 @@ export const VideoCardFieldsFragmentDoc = gql`
|
|||||||
status
|
status
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
reactions {
|
||||||
|
videoId
|
||||||
|
user {
|
||||||
|
id
|
||||||
|
username
|
||||||
|
profileImageUri
|
||||||
|
}
|
||||||
|
reaction
|
||||||
|
}
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
export const MedalFieldsFragmentDoc = gql`
|
export const MedalFieldsFragmentDoc = gql`
|
||||||
@ -5844,6 +6014,55 @@ export type GetMedalsQueryResult = Apollo.QueryResult<
|
|||||||
GetMedalsQuery,
|
GetMedalsQuery,
|
||||||
GetMedalsQueryVariables
|
GetMedalsQueryVariables
|
||||||
>;
|
>;
|
||||||
|
export const ReactToVideoDocument = gql`
|
||||||
|
mutation ReactToVideo($videoId: Int!, $reaction: ReactionEnum) {
|
||||||
|
reactToVideo(videoId: $videoId, reaction: $reaction)
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
export type ReactToVideoMutationFn = Apollo.MutationFunction<
|
||||||
|
ReactToVideoMutation,
|
||||||
|
ReactToVideoMutationVariables
|
||||||
|
>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* __useReactToVideoMutation__
|
||||||
|
*
|
||||||
|
* To run a mutation, you first call `useReactToVideoMutation` within a React component and pass it any options that fit your needs.
|
||||||
|
* When your component renders, `useReactToVideoMutation` returns a tuple that includes:
|
||||||
|
* - A mutate function that you can call at any time to execute the mutation
|
||||||
|
* - An object with fields that represent the current status of the mutation's execution
|
||||||
|
*
|
||||||
|
* @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
* const [reactToVideoMutation, { data, loading, error }] = useReactToVideoMutation({
|
||||||
|
* variables: {
|
||||||
|
* videoId: // value for 'videoId'
|
||||||
|
* reaction: // value for 'reaction'
|
||||||
|
* },
|
||||||
|
* });
|
||||||
|
*/
|
||||||
|
export function useReactToVideoMutation(
|
||||||
|
baseOptions?: Apollo.MutationHookOptions<
|
||||||
|
ReactToVideoMutation,
|
||||||
|
ReactToVideoMutationVariables
|
||||||
|
>,
|
||||||
|
) {
|
||||||
|
const options = { ...defaultOptions, ...baseOptions };
|
||||||
|
return Apollo.useMutation<
|
||||||
|
ReactToVideoMutation,
|
||||||
|
ReactToVideoMutationVariables
|
||||||
|
>(ReactToVideoDocument, options);
|
||||||
|
}
|
||||||
|
export type ReactToVideoMutationHookResult = ReturnType<
|
||||||
|
typeof useReactToVideoMutation
|
||||||
|
>;
|
||||||
|
export type ReactToVideoMutationResult =
|
||||||
|
Apollo.MutationResult<ReactToVideoMutation>;
|
||||||
|
export type ReactToVideoMutationOptions = Apollo.BaseMutationOptions<
|
||||||
|
ReactToVideoMutation,
|
||||||
|
ReactToVideoMutationVariables
|
||||||
|
>;
|
||||||
export const GetRunsForHighlightsDocument = gql`
|
export const GetRunsForHighlightsDocument = gql`
|
||||||
query GetRunsForHighlights(
|
query GetRunsForHighlights(
|
||||||
$filterInput: RunFilterInput!
|
$filterInput: RunFilterInput!
|
||||||
@ -6699,6 +6918,55 @@ export type RetireTagsMutationOptions = Apollo.BaseMutationOptions<
|
|||||||
RetireTagsMutation,
|
RetireTagsMutation,
|
||||||
RetireTagsMutationVariables
|
RetireTagsMutationVariables
|
||||||
>;
|
>;
|
||||||
|
export const DeleteTagsDocument = gql`
|
||||||
|
mutation DeleteTags($videoId: Int!, $tagsToDelete: [VideoTagInput!]!) {
|
||||||
|
deleteTags(videoId: $videoId, tagsToDelete: $tagsToDelete)
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
export type DeleteTagsMutationFn = Apollo.MutationFunction<
|
||||||
|
DeleteTagsMutation,
|
||||||
|
DeleteTagsMutationVariables
|
||||||
|
>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* __useDeleteTagsMutation__
|
||||||
|
*
|
||||||
|
* To run a mutation, you first call `useDeleteTagsMutation` within a React component and pass it any options that fit your needs.
|
||||||
|
* When your component renders, `useDeleteTagsMutation` returns a tuple that includes:
|
||||||
|
* - A mutate function that you can call at any time to execute the mutation
|
||||||
|
* - An object with fields that represent the current status of the mutation's execution
|
||||||
|
*
|
||||||
|
* @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
* const [deleteTagsMutation, { data, loading, error }] = useDeleteTagsMutation({
|
||||||
|
* variables: {
|
||||||
|
* videoId: // value for 'videoId'
|
||||||
|
* tagsToDelete: // value for 'tagsToDelete'
|
||||||
|
* },
|
||||||
|
* });
|
||||||
|
*/
|
||||||
|
export function useDeleteTagsMutation(
|
||||||
|
baseOptions?: Apollo.MutationHookOptions<
|
||||||
|
DeleteTagsMutation,
|
||||||
|
DeleteTagsMutationVariables
|
||||||
|
>,
|
||||||
|
) {
|
||||||
|
const options = { ...defaultOptions, ...baseOptions };
|
||||||
|
return Apollo.useMutation<DeleteTagsMutation, DeleteTagsMutationVariables>(
|
||||||
|
DeleteTagsDocument,
|
||||||
|
options,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
export type DeleteTagsMutationHookResult = ReturnType<
|
||||||
|
typeof useDeleteTagsMutation
|
||||||
|
>;
|
||||||
|
export type DeleteTagsMutationResult =
|
||||||
|
Apollo.MutationResult<DeleteTagsMutation>;
|
||||||
|
export type DeleteTagsMutationOptions = Apollo.BaseMutationOptions<
|
||||||
|
DeleteTagsMutation,
|
||||||
|
DeleteTagsMutationVariables
|
||||||
|
>;
|
||||||
export const GetProfileImageUploadLinkDocument = gql`
|
export const GetProfileImageUploadLinkDocument = gql`
|
||||||
mutation getProfileImageUploadLink($fileExt: String = ".png") {
|
mutation getProfileImageUploadLink($fileExt: String = ".png") {
|
||||||
getProfileImageUploadLink(fileExt: $fileExt) {
|
getProfileImageUploadLink(fileExt: $fileExt) {
|
||||||
|
@ -58,6 +58,15 @@ fragment VideoCardFields on VideoGQL {
|
|||||||
status
|
status
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
reactions {
|
||||||
|
videoId
|
||||||
|
user {
|
||||||
|
id
|
||||||
|
username
|
||||||
|
profileImageUri
|
||||||
|
}
|
||||||
|
reaction
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
query GetVideoFeed(
|
query GetVideoFeed(
|
||||||
|
3
src/operations/reactions.gql
Normal file
3
src/operations/reactions.gql
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
mutation ReactToVideo($videoId: Int!, $reaction: ReactionEnum) {
|
||||||
|
reactToVideo(videoId: $videoId, reaction: $reaction)
|
||||||
|
}
|
@ -1,3 +1,7 @@
|
|||||||
mutation RetireTags($tagIds: [Int!]!) {
|
mutation RetireTags($tagIds: [Int!]!) {
|
||||||
retireTags(tagIds: $tagIds)
|
retireTags(tagIds: $tagIds)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mutation DeleteTags($videoId: Int!, $tagsToDelete: [VideoTagInput!]!) {
|
||||||
|
deleteTags(videoId: $videoId, tagsToDelete: $tagsToDelete)
|
||||||
|
}
|
||||||
|
@ -195,6 +195,7 @@ input FilterInput @oneOf {
|
|||||||
isLeftMiss: [Boolean!]
|
isLeftMiss: [Boolean!]
|
||||||
isRightMiss: [Boolean!]
|
isRightMiss: [Boolean!]
|
||||||
isDirect: [Boolean!]
|
isDirect: [Boolean!]
|
||||||
|
isBreakHeuristic: [Boolean!]
|
||||||
tableSize: FloatRangeFilter
|
tableSize: FloatRangeFilter
|
||||||
bankAngle: FloatRangeFilter
|
bankAngle: FloatRangeFilter
|
||||||
bankDistance: FloatRangeFilter
|
bankDistance: FloatRangeFilter
|
||||||
@ -478,6 +479,7 @@ type VideoGQL {
|
|||||||
currentHomography: HomographyInfoGQL
|
currentHomography: HomographyInfoGQL
|
||||||
homographyHistory: [HomographyInfoGQL!]!
|
homographyHistory: [HomographyInfoGQL!]!
|
||||||
currentProcessing: VideoProcessingGQL
|
currentProcessing: VideoProcessingGQL
|
||||||
|
reactions: [ReactionGQL!]!
|
||||||
comments: [CommentGQL!]!
|
comments: [CommentGQL!]!
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -612,6 +614,14 @@ type VideoProcessingStatusGQL {
|
|||||||
updatedAt: DateTime
|
updatedAt: DateTime
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ReactionGQL {
|
||||||
|
videoId: Int!
|
||||||
|
user: UserGQL!
|
||||||
|
reaction: ReactionEnum!
|
||||||
|
createdAt: DateTime
|
||||||
|
updatedAt: DateTime
|
||||||
|
}
|
||||||
|
|
||||||
type CommentGQL {
|
type CommentGQL {
|
||||||
id: Int!
|
id: Int!
|
||||||
user: UserGQL!
|
user: UserGQL!
|
||||||
@ -621,6 +631,13 @@ type CommentGQL {
|
|||||||
updatedAt: DateTime
|
updatedAt: DateTime
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum ReactionEnum {
|
||||||
|
LIKE
|
||||||
|
HEART
|
||||||
|
BULLSEYE
|
||||||
|
HUNDRED
|
||||||
|
}
|
||||||
|
|
||||||
type RunFeaturesGQL {
|
type RunFeaturesGQL {
|
||||||
runId: Int!
|
runId: Int!
|
||||||
indexInRun: Int!
|
indexInRun: Int!
|
||||||
@ -810,6 +827,7 @@ type Mutation {
|
|||||||
editUploadStream(videoId: Int!, videoMetadata: VideoMetadataInput!): Boolean!
|
editUploadStream(videoId: Int!, videoMetadata: VideoMetadataInput!): Boolean!
|
||||||
deleteVideo(videoId: Int!): Boolean!
|
deleteVideo(videoId: Int!): Boolean!
|
||||||
deleteTags(videoId: Int!, tagsToDelete: [VideoTagInput!]!): Boolean!
|
deleteTags(videoId: Int!, tagsToDelete: [VideoTagInput!]!): Boolean!
|
||||||
|
reactToVideo(videoId: Int!, reaction: ReactionEnum): Boolean!
|
||||||
commentOnVideo(
|
commentOnVideo(
|
||||||
videoId: Int!
|
videoId: Int!
|
||||||
message: String!
|
message: String!
|
||||||
@ -851,7 +869,7 @@ type AddShotAnnotationReturn {
|
|||||||
}
|
}
|
||||||
|
|
||||||
union SuccessfulAddAddShotAnnotationErrors =
|
union SuccessfulAddAddShotAnnotationErrors =
|
||||||
SuccessfulAdd
|
| SuccessfulAdd
|
||||||
| AddShotAnnotationErrors
|
| AddShotAnnotationErrors
|
||||||
|
|
||||||
type SuccessfulAdd {
|
type SuccessfulAdd {
|
||||||
@ -863,7 +881,7 @@ type AddShotAnnotationErrors {
|
|||||||
}
|
}
|
||||||
|
|
||||||
union DoesNotOwnShotErrOtherErrorNeedsNote =
|
union DoesNotOwnShotErrOtherErrorNeedsNote =
|
||||||
DoesNotOwnShotErr
|
| DoesNotOwnShotErr
|
||||||
| OtherErrorNeedsNote
|
| OtherErrorNeedsNote
|
||||||
|
|
||||||
type OtherErrorNeedsNote {
|
type OtherErrorNeedsNote {
|
||||||
@ -885,7 +903,7 @@ type GetProfileUploadLinkReturn {
|
|||||||
}
|
}
|
||||||
|
|
||||||
union UploadLinkGetProfileUploadLinkErrors =
|
union UploadLinkGetProfileUploadLinkErrors =
|
||||||
UploadLink
|
| UploadLink
|
||||||
| GetProfileUploadLinkErrors
|
| GetProfileUploadLinkErrors
|
||||||
|
|
||||||
type UploadLink {
|
type UploadLink {
|
||||||
@ -954,7 +972,7 @@ type GetUploadLinkErrors {
|
|||||||
}
|
}
|
||||||
|
|
||||||
union MustHaveSetForUploadLinkErrSegmentAlreadyUploadedErrProcessingFailedErrNoInitForChunkedUploadErrTooManyProfileImageUploadsErrInitUploadAlreadyCompletedErrTooManyInitUploadsErr =
|
union MustHaveSetForUploadLinkErrSegmentAlreadyUploadedErrProcessingFailedErrNoInitForChunkedUploadErrTooManyProfileImageUploadsErrInitUploadAlreadyCompletedErrTooManyInitUploadsErr =
|
||||||
MustHaveSetForUploadLinkErr
|
| MustHaveSetForUploadLinkErr
|
||||||
| SegmentAlreadyUploadedErr
|
| SegmentAlreadyUploadedErr
|
||||||
| ProcessingFailedErr
|
| ProcessingFailedErr
|
||||||
| NoInitForChunkedUploadErr
|
| NoInitForChunkedUploadErr
|
||||||
|
Loading…
x
Reference in New Issue
Block a user