Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | 39x 39x 39x 39x | import { z } from "zod";
import { SIGNUP_MESSAGE_LENGTH } from "shared/constants/validation";
import { ApiError, ApiResult } from "shared/types/api/errors";
import { DirectSignup, LotterySignup } from "shared/types/models/user";
// POST lottery signup
export const PostLotterySignupRequestSchema = z.object({
programItemId: z.string(),
priority: z.number(),
});
export type PostLotterySignupRequest = z.infer<
typeof PostLotterySignupRequestSchema
>;
export interface PostLotterySignupResult extends ApiResult {
lotterySignups: readonly LotterySignup[];
}
export interface PostLotterySignupError extends ApiError {
errorId:
| "unknown"
| "signupEnded"
| "samePriority"
| "invalidPriority"
| "programItemNotFound"
| "signupNotOpenYet"
| "cancelled"
| "noKonstiSignup"
| "groupMember"
| "hidden";
}
export type PostLotterySignupResponse =
| PostLotterySignupResult
| PostLotterySignupError;
// DELETE lottery signup
export const DeleteLotterySignupRequestSchema = z.object({
lotterySignupProgramItemId: z.string(),
});
export type DeleteLotterySignupRequest = z.infer<
typeof DeleteLotterySignupRequestSchema
>;
type DeleteLotterySignupResult = ApiResult;
export interface DeleteLotterySignupError extends ApiError {
errorId: "unknown" | "signupEnded" | "programItemNotFound";
}
export type DeleteLotterySignupResponse =
| DeleteLotterySignupResult
| DeleteLotterySignupError;
// POST direct signup
export const PostDirectSignupRequestSchema = z.object({
directSignupProgramItemId: z.string(),
message: z.string().max(SIGNUP_MESSAGE_LENGTH, "Message too long"),
// priority is not part of the request: user-made direct signups are always
// first-come-first-served, so the backend sets DIRECT_SIGNUP_PRIORITY itself
});
export type PostDirectSignupRequest = z.infer<
typeof PostDirectSignupRequestSchema
>;
export interface PostDirectSignupResult extends ApiResult {
allSignups: {
programItemId: string;
userSignups: { username: string; message: string }[];
};
directSignup?: DirectSignup;
// True when a direct signup made the user leave or close their group
leftGroup: boolean;
}
export interface PostDirectSignupError extends ApiError {
errorId:
| "unknown"
| "signupEnded"
| "signupNotOpenYet"
| "noKonstiSignup"
| "cancelled"
| "hidden";
}
export type PostDirectSignupResponse =
| PostDirectSignupResult
| PostDirectSignupError;
// DELETE direct signup
export const DeleteDirectSignupRequestSchema = z.object({
directSignupProgramItemId: z.string(),
});
export type DeleteDirectSignupRequest = z.infer<
typeof DeleteDirectSignupRequestSchema
>;
interface DeleteDirectSignupResult extends ApiResult {
allSignups: {
programItemId: string;
userSignups: { username: string; message: string }[];
};
}
interface DeleteDirectSignupError extends ApiError {
errorId: "unknown" | "signupEnded";
}
export type DeleteDirectSignupResponse =
| DeleteDirectSignupResult
| DeleteDirectSignupError;
|