chore(release): 0.4.0
This commit is contained in:
@@ -16,14 +16,24 @@ export function AcceptTermsForm() {
|
|||||||
async function handleAccept() {
|
async function handleAccept() {
|
||||||
setError("");
|
setError("");
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
const result = await acceptTermsAction();
|
const result = await acceptTermsAction({ accepted: checked });
|
||||||
if (result.error) {
|
if (result.error) {
|
||||||
setError(result.error);
|
setError(result.error);
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Refresh JWT supaya middleware lihat acceptedTermsAndPrivacy=true
|
// Refresh JWT supaya middleware lihat acceptedTermsAndPrivacy=true.
|
||||||
|
// Kalau update() gagal (network), JWT callback di server akan re-fetch
|
||||||
|
// DB pada request berikutnya karena cookie token masih `false`.
|
||||||
|
try {
|
||||||
await update();
|
await update();
|
||||||
|
} catch {
|
||||||
|
setError(
|
||||||
|
"Persetujuan tersimpan, tapi sesi belum ter-refresh. Coba refresh halaman atau klik lagi."
|
||||||
|
);
|
||||||
|
setLoading(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
router.replace("/");
|
router.replace("/");
|
||||||
router.refresh();
|
router.refresh();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,11 +44,6 @@ export type StringNullableFilter<$PrismaModel = never> = {
|
|||||||
not?: Prisma.NestedStringNullableFilter<$PrismaModel> | string | null
|
not?: Prisma.NestedStringNullableFilter<$PrismaModel> | string | null
|
||||||
}
|
}
|
||||||
|
|
||||||
export type BoolFilter<$PrismaModel = never> = {
|
|
||||||
equals?: boolean | Prisma.BooleanFieldRefInput<$PrismaModel>
|
|
||||||
not?: Prisma.NestedBoolFilter<$PrismaModel> | boolean
|
|
||||||
}
|
|
||||||
|
|
||||||
export type DateTimeNullableFilter<$PrismaModel = never> = {
|
export type DateTimeNullableFilter<$PrismaModel = never> = {
|
||||||
equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> | null
|
equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> | null
|
||||||
in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> | null
|
in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> | null
|
||||||
@@ -60,6 +55,11 @@ export type DateTimeNullableFilter<$PrismaModel = never> = {
|
|||||||
not?: Prisma.NestedDateTimeNullableFilter<$PrismaModel> | Date | string | null
|
not?: Prisma.NestedDateTimeNullableFilter<$PrismaModel> | Date | string | null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type BoolFilter<$PrismaModel = never> = {
|
||||||
|
equals?: boolean | Prisma.BooleanFieldRefInput<$PrismaModel>
|
||||||
|
not?: Prisma.NestedBoolFilter<$PrismaModel> | boolean
|
||||||
|
}
|
||||||
|
|
||||||
export type DateTimeFilter<$PrismaModel = never> = {
|
export type DateTimeFilter<$PrismaModel = never> = {
|
||||||
equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>
|
equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>
|
||||||
in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel>
|
in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel>
|
||||||
@@ -112,14 +112,6 @@ export type StringNullableWithAggregatesFilter<$PrismaModel = never> = {
|
|||||||
_max?: Prisma.NestedStringNullableFilter<$PrismaModel>
|
_max?: Prisma.NestedStringNullableFilter<$PrismaModel>
|
||||||
}
|
}
|
||||||
|
|
||||||
export type BoolWithAggregatesFilter<$PrismaModel = never> = {
|
|
||||||
equals?: boolean | Prisma.BooleanFieldRefInput<$PrismaModel>
|
|
||||||
not?: Prisma.NestedBoolWithAggregatesFilter<$PrismaModel> | boolean
|
|
||||||
_count?: Prisma.NestedIntFilter<$PrismaModel>
|
|
||||||
_min?: Prisma.NestedBoolFilter<$PrismaModel>
|
|
||||||
_max?: Prisma.NestedBoolFilter<$PrismaModel>
|
|
||||||
}
|
|
||||||
|
|
||||||
export type DateTimeNullableWithAggregatesFilter<$PrismaModel = never> = {
|
export type DateTimeNullableWithAggregatesFilter<$PrismaModel = never> = {
|
||||||
equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> | null
|
equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> | null
|
||||||
in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> | null
|
in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> | null
|
||||||
@@ -134,6 +126,14 @@ export type DateTimeNullableWithAggregatesFilter<$PrismaModel = never> = {
|
|||||||
_max?: Prisma.NestedDateTimeNullableFilter<$PrismaModel>
|
_max?: Prisma.NestedDateTimeNullableFilter<$PrismaModel>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type BoolWithAggregatesFilter<$PrismaModel = never> = {
|
||||||
|
equals?: boolean | Prisma.BooleanFieldRefInput<$PrismaModel>
|
||||||
|
not?: Prisma.NestedBoolWithAggregatesFilter<$PrismaModel> | boolean
|
||||||
|
_count?: Prisma.NestedIntFilter<$PrismaModel>
|
||||||
|
_min?: Prisma.NestedBoolFilter<$PrismaModel>
|
||||||
|
_max?: Prisma.NestedBoolFilter<$PrismaModel>
|
||||||
|
}
|
||||||
|
|
||||||
export type DateTimeWithAggregatesFilter<$PrismaModel = never> = {
|
export type DateTimeWithAggregatesFilter<$PrismaModel = never> = {
|
||||||
equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>
|
equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>
|
||||||
in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel>
|
in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel>
|
||||||
@@ -281,11 +281,6 @@ export type NestedStringNullableFilter<$PrismaModel = never> = {
|
|||||||
not?: Prisma.NestedStringNullableFilter<$PrismaModel> | string | null
|
not?: Prisma.NestedStringNullableFilter<$PrismaModel> | string | null
|
||||||
}
|
}
|
||||||
|
|
||||||
export type NestedBoolFilter<$PrismaModel = never> = {
|
|
||||||
equals?: boolean | Prisma.BooleanFieldRefInput<$PrismaModel>
|
|
||||||
not?: Prisma.NestedBoolFilter<$PrismaModel> | boolean
|
|
||||||
}
|
|
||||||
|
|
||||||
export type NestedDateTimeNullableFilter<$PrismaModel = never> = {
|
export type NestedDateTimeNullableFilter<$PrismaModel = never> = {
|
||||||
equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> | null
|
equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> | null
|
||||||
in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> | null
|
in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> | null
|
||||||
@@ -297,6 +292,11 @@ export type NestedDateTimeNullableFilter<$PrismaModel = never> = {
|
|||||||
not?: Prisma.NestedDateTimeNullableFilter<$PrismaModel> | Date | string | null
|
not?: Prisma.NestedDateTimeNullableFilter<$PrismaModel> | Date | string | null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type NestedBoolFilter<$PrismaModel = never> = {
|
||||||
|
equals?: boolean | Prisma.BooleanFieldRefInput<$PrismaModel>
|
||||||
|
not?: Prisma.NestedBoolFilter<$PrismaModel> | boolean
|
||||||
|
}
|
||||||
|
|
||||||
export type NestedDateTimeFilter<$PrismaModel = never> = {
|
export type NestedDateTimeFilter<$PrismaModel = never> = {
|
||||||
equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>
|
equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>
|
||||||
in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel>
|
in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel>
|
||||||
@@ -364,14 +364,6 @@ export type NestedIntNullableFilter<$PrismaModel = never> = {
|
|||||||
not?: Prisma.NestedIntNullableFilter<$PrismaModel> | number | null
|
not?: Prisma.NestedIntNullableFilter<$PrismaModel> | number | null
|
||||||
}
|
}
|
||||||
|
|
||||||
export type NestedBoolWithAggregatesFilter<$PrismaModel = never> = {
|
|
||||||
equals?: boolean | Prisma.BooleanFieldRefInput<$PrismaModel>
|
|
||||||
not?: Prisma.NestedBoolWithAggregatesFilter<$PrismaModel> | boolean
|
|
||||||
_count?: Prisma.NestedIntFilter<$PrismaModel>
|
|
||||||
_min?: Prisma.NestedBoolFilter<$PrismaModel>
|
|
||||||
_max?: Prisma.NestedBoolFilter<$PrismaModel>
|
|
||||||
}
|
|
||||||
|
|
||||||
export type NestedDateTimeNullableWithAggregatesFilter<$PrismaModel = never> = {
|
export type NestedDateTimeNullableWithAggregatesFilter<$PrismaModel = never> = {
|
||||||
equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> | null
|
equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> | null
|
||||||
in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> | null
|
in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> | null
|
||||||
@@ -386,6 +378,14 @@ export type NestedDateTimeNullableWithAggregatesFilter<$PrismaModel = never> = {
|
|||||||
_max?: Prisma.NestedDateTimeNullableFilter<$PrismaModel>
|
_max?: Prisma.NestedDateTimeNullableFilter<$PrismaModel>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type NestedBoolWithAggregatesFilter<$PrismaModel = never> = {
|
||||||
|
equals?: boolean | Prisma.BooleanFieldRefInput<$PrismaModel>
|
||||||
|
not?: Prisma.NestedBoolWithAggregatesFilter<$PrismaModel> | boolean
|
||||||
|
_count?: Prisma.NestedIntFilter<$PrismaModel>
|
||||||
|
_min?: Prisma.NestedBoolFilter<$PrismaModel>
|
||||||
|
_max?: Prisma.NestedBoolFilter<$PrismaModel>
|
||||||
|
}
|
||||||
|
|
||||||
export type NestedDateTimeWithAggregatesFilter<$PrismaModel = never> = {
|
export type NestedDateTimeWithAggregatesFilter<$PrismaModel = never> = {
|
||||||
equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>
|
equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>
|
||||||
in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel>
|
in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel>
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -973,6 +973,7 @@ export const UserScalarFieldEnum = {
|
|||||||
email: 'email',
|
email: 'email',
|
||||||
password: 'password',
|
password: 'password',
|
||||||
image: 'image',
|
image: 'image',
|
||||||
|
emailVerified: 'emailVerified',
|
||||||
acceptedTermsAndPrivacy: 'acceptedTermsAndPrivacy',
|
acceptedTermsAndPrivacy: 'acceptedTermsAndPrivacy',
|
||||||
acceptedAt: 'acceptedAt',
|
acceptedAt: 'acceptedAt',
|
||||||
createdAt: 'createdAt',
|
createdAt: 'createdAt',
|
||||||
@@ -1129,13 +1130,6 @@ export type ListStringFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaMod
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reference to a field of type 'Boolean'
|
|
||||||
*/
|
|
||||||
export type BooleanFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Boolean'>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reference to a field of type 'DateTime'
|
* Reference to a field of type 'DateTime'
|
||||||
*/
|
*/
|
||||||
@@ -1150,6 +1144,13 @@ export type ListDateTimeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaM
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reference to a field of type 'Boolean'
|
||||||
|
*/
|
||||||
|
export type BooleanFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Boolean'>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reference to a field of type 'Int'
|
* Reference to a field of type 'Int'
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -82,6 +82,7 @@ export const UserScalarFieldEnum = {
|
|||||||
email: 'email',
|
email: 'email',
|
||||||
password: 'password',
|
password: 'password',
|
||||||
image: 'image',
|
image: 'image',
|
||||||
|
emailVerified: 'emailVerified',
|
||||||
acceptedTermsAndPrivacy: 'acceptedTermsAndPrivacy',
|
acceptedTermsAndPrivacy: 'acceptedTermsAndPrivacy',
|
||||||
acceptedAt: 'acceptedAt',
|
acceptedAt: 'acceptedAt',
|
||||||
createdAt: 'createdAt',
|
createdAt: 'createdAt',
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ export type UserMinAggregateOutputType = {
|
|||||||
email: string | null
|
email: string | null
|
||||||
password: string | null
|
password: string | null
|
||||||
image: string | null
|
image: string | null
|
||||||
|
emailVerified: Date | null
|
||||||
acceptedTermsAndPrivacy: boolean | null
|
acceptedTermsAndPrivacy: boolean | null
|
||||||
acceptedAt: Date | null
|
acceptedAt: Date | null
|
||||||
createdAt: Date | null
|
createdAt: Date | null
|
||||||
@@ -42,6 +43,7 @@ export type UserMaxAggregateOutputType = {
|
|||||||
email: string | null
|
email: string | null
|
||||||
password: string | null
|
password: string | null
|
||||||
image: string | null
|
image: string | null
|
||||||
|
emailVerified: Date | null
|
||||||
acceptedTermsAndPrivacy: boolean | null
|
acceptedTermsAndPrivacy: boolean | null
|
||||||
acceptedAt: Date | null
|
acceptedAt: Date | null
|
||||||
createdAt: Date | null
|
createdAt: Date | null
|
||||||
@@ -54,6 +56,7 @@ export type UserCountAggregateOutputType = {
|
|||||||
email: number
|
email: number
|
||||||
password: number
|
password: number
|
||||||
image: number
|
image: number
|
||||||
|
emailVerified: number
|
||||||
acceptedTermsAndPrivacy: number
|
acceptedTermsAndPrivacy: number
|
||||||
acceptedAt: number
|
acceptedAt: number
|
||||||
createdAt: number
|
createdAt: number
|
||||||
@@ -68,6 +71,7 @@ export type UserMinAggregateInputType = {
|
|||||||
email?: true
|
email?: true
|
||||||
password?: true
|
password?: true
|
||||||
image?: true
|
image?: true
|
||||||
|
emailVerified?: true
|
||||||
acceptedTermsAndPrivacy?: true
|
acceptedTermsAndPrivacy?: true
|
||||||
acceptedAt?: true
|
acceptedAt?: true
|
||||||
createdAt?: true
|
createdAt?: true
|
||||||
@@ -80,6 +84,7 @@ export type UserMaxAggregateInputType = {
|
|||||||
email?: true
|
email?: true
|
||||||
password?: true
|
password?: true
|
||||||
image?: true
|
image?: true
|
||||||
|
emailVerified?: true
|
||||||
acceptedTermsAndPrivacy?: true
|
acceptedTermsAndPrivacy?: true
|
||||||
acceptedAt?: true
|
acceptedAt?: true
|
||||||
createdAt?: true
|
createdAt?: true
|
||||||
@@ -92,6 +97,7 @@ export type UserCountAggregateInputType = {
|
|||||||
email?: true
|
email?: true
|
||||||
password?: true
|
password?: true
|
||||||
image?: true
|
image?: true
|
||||||
|
emailVerified?: true
|
||||||
acceptedTermsAndPrivacy?: true
|
acceptedTermsAndPrivacy?: true
|
||||||
acceptedAt?: true
|
acceptedAt?: true
|
||||||
createdAt?: true
|
createdAt?: true
|
||||||
@@ -177,6 +183,7 @@ export type UserGroupByOutputType = {
|
|||||||
email: string
|
email: string
|
||||||
password: string | null
|
password: string | null
|
||||||
image: string | null
|
image: string | null
|
||||||
|
emailVerified: Date | null
|
||||||
acceptedTermsAndPrivacy: boolean
|
acceptedTermsAndPrivacy: boolean
|
||||||
acceptedAt: Date | null
|
acceptedAt: Date | null
|
||||||
createdAt: Date
|
createdAt: Date
|
||||||
@@ -210,6 +217,7 @@ export type UserWhereInput = {
|
|||||||
email?: Prisma.StringFilter<"User"> | string
|
email?: Prisma.StringFilter<"User"> | string
|
||||||
password?: Prisma.StringNullableFilter<"User"> | string | null
|
password?: Prisma.StringNullableFilter<"User"> | string | null
|
||||||
image?: Prisma.StringNullableFilter<"User"> | string | null
|
image?: Prisma.StringNullableFilter<"User"> | string | null
|
||||||
|
emailVerified?: Prisma.DateTimeNullableFilter<"User"> | Date | string | null
|
||||||
acceptedTermsAndPrivacy?: Prisma.BoolFilter<"User"> | boolean
|
acceptedTermsAndPrivacy?: Prisma.BoolFilter<"User"> | boolean
|
||||||
acceptedAt?: Prisma.DateTimeNullableFilter<"User"> | Date | string | null
|
acceptedAt?: Prisma.DateTimeNullableFilter<"User"> | Date | string | null
|
||||||
createdAt?: Prisma.DateTimeFilter<"User"> | Date | string
|
createdAt?: Prisma.DateTimeFilter<"User"> | Date | string
|
||||||
@@ -228,6 +236,7 @@ export type UserOrderByWithRelationInput = {
|
|||||||
email?: Prisma.SortOrder
|
email?: Prisma.SortOrder
|
||||||
password?: Prisma.SortOrderInput | Prisma.SortOrder
|
password?: Prisma.SortOrderInput | Prisma.SortOrder
|
||||||
image?: Prisma.SortOrderInput | Prisma.SortOrder
|
image?: Prisma.SortOrderInput | Prisma.SortOrder
|
||||||
|
emailVerified?: Prisma.SortOrderInput | Prisma.SortOrder
|
||||||
acceptedTermsAndPrivacy?: Prisma.SortOrder
|
acceptedTermsAndPrivacy?: Prisma.SortOrder
|
||||||
acceptedAt?: Prisma.SortOrderInput | Prisma.SortOrder
|
acceptedAt?: Prisma.SortOrderInput | Prisma.SortOrder
|
||||||
createdAt?: Prisma.SortOrder
|
createdAt?: Prisma.SortOrder
|
||||||
@@ -249,6 +258,7 @@ export type UserWhereUniqueInput = Prisma.AtLeast<{
|
|||||||
name?: Prisma.StringFilter<"User"> | string
|
name?: Prisma.StringFilter<"User"> | string
|
||||||
password?: Prisma.StringNullableFilter<"User"> | string | null
|
password?: Prisma.StringNullableFilter<"User"> | string | null
|
||||||
image?: Prisma.StringNullableFilter<"User"> | string | null
|
image?: Prisma.StringNullableFilter<"User"> | string | null
|
||||||
|
emailVerified?: Prisma.DateTimeNullableFilter<"User"> | Date | string | null
|
||||||
acceptedTermsAndPrivacy?: Prisma.BoolFilter<"User"> | boolean
|
acceptedTermsAndPrivacy?: Prisma.BoolFilter<"User"> | boolean
|
||||||
acceptedAt?: Prisma.DateTimeNullableFilter<"User"> | Date | string | null
|
acceptedAt?: Prisma.DateTimeNullableFilter<"User"> | Date | string | null
|
||||||
createdAt?: Prisma.DateTimeFilter<"User"> | Date | string
|
createdAt?: Prisma.DateTimeFilter<"User"> | Date | string
|
||||||
@@ -267,6 +277,7 @@ export type UserOrderByWithAggregationInput = {
|
|||||||
email?: Prisma.SortOrder
|
email?: Prisma.SortOrder
|
||||||
password?: Prisma.SortOrderInput | Prisma.SortOrder
|
password?: Prisma.SortOrderInput | Prisma.SortOrder
|
||||||
image?: Prisma.SortOrderInput | Prisma.SortOrder
|
image?: Prisma.SortOrderInput | Prisma.SortOrder
|
||||||
|
emailVerified?: Prisma.SortOrderInput | Prisma.SortOrder
|
||||||
acceptedTermsAndPrivacy?: Prisma.SortOrder
|
acceptedTermsAndPrivacy?: Prisma.SortOrder
|
||||||
acceptedAt?: Prisma.SortOrderInput | Prisma.SortOrder
|
acceptedAt?: Prisma.SortOrderInput | Prisma.SortOrder
|
||||||
createdAt?: Prisma.SortOrder
|
createdAt?: Prisma.SortOrder
|
||||||
@@ -285,6 +296,7 @@ export type UserScalarWhereWithAggregatesInput = {
|
|||||||
email?: Prisma.StringWithAggregatesFilter<"User"> | string
|
email?: Prisma.StringWithAggregatesFilter<"User"> | string
|
||||||
password?: Prisma.StringNullableWithAggregatesFilter<"User"> | string | null
|
password?: Prisma.StringNullableWithAggregatesFilter<"User"> | string | null
|
||||||
image?: Prisma.StringNullableWithAggregatesFilter<"User"> | string | null
|
image?: Prisma.StringNullableWithAggregatesFilter<"User"> | string | null
|
||||||
|
emailVerified?: Prisma.DateTimeNullableWithAggregatesFilter<"User"> | Date | string | null
|
||||||
acceptedTermsAndPrivacy?: Prisma.BoolWithAggregatesFilter<"User"> | boolean
|
acceptedTermsAndPrivacy?: Prisma.BoolWithAggregatesFilter<"User"> | boolean
|
||||||
acceptedAt?: Prisma.DateTimeNullableWithAggregatesFilter<"User"> | Date | string | null
|
acceptedAt?: Prisma.DateTimeNullableWithAggregatesFilter<"User"> | Date | string | null
|
||||||
createdAt?: Prisma.DateTimeWithAggregatesFilter<"User"> | Date | string
|
createdAt?: Prisma.DateTimeWithAggregatesFilter<"User"> | Date | string
|
||||||
@@ -297,6 +309,7 @@ export type UserCreateInput = {
|
|||||||
email: string
|
email: string
|
||||||
password?: string | null
|
password?: string | null
|
||||||
image?: string | null
|
image?: string | null
|
||||||
|
emailVerified?: Date | string | null
|
||||||
acceptedTermsAndPrivacy?: boolean
|
acceptedTermsAndPrivacy?: boolean
|
||||||
acceptedAt?: Date | string | null
|
acceptedAt?: Date | string | null
|
||||||
createdAt?: Date | string
|
createdAt?: Date | string
|
||||||
@@ -315,6 +328,7 @@ export type UserUncheckedCreateInput = {
|
|||||||
email: string
|
email: string
|
||||||
password?: string | null
|
password?: string | null
|
||||||
image?: string | null
|
image?: string | null
|
||||||
|
emailVerified?: Date | string | null
|
||||||
acceptedTermsAndPrivacy?: boolean
|
acceptedTermsAndPrivacy?: boolean
|
||||||
acceptedAt?: Date | string | null
|
acceptedAt?: Date | string | null
|
||||||
createdAt?: Date | string
|
createdAt?: Date | string
|
||||||
@@ -333,6 +347,7 @@ export type UserUpdateInput = {
|
|||||||
email?: Prisma.StringFieldUpdateOperationsInput | string
|
email?: Prisma.StringFieldUpdateOperationsInput | string
|
||||||
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
||||||
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
||||||
|
emailVerified?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
||||||
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
||||||
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
||||||
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
||||||
@@ -351,6 +366,7 @@ export type UserUncheckedUpdateInput = {
|
|||||||
email?: Prisma.StringFieldUpdateOperationsInput | string
|
email?: Prisma.StringFieldUpdateOperationsInput | string
|
||||||
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
||||||
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
||||||
|
emailVerified?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
||||||
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
||||||
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
||||||
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
||||||
@@ -369,6 +385,7 @@ export type UserCreateManyInput = {
|
|||||||
email: string
|
email: string
|
||||||
password?: string | null
|
password?: string | null
|
||||||
image?: string | null
|
image?: string | null
|
||||||
|
emailVerified?: Date | string | null
|
||||||
acceptedTermsAndPrivacy?: boolean
|
acceptedTermsAndPrivacy?: boolean
|
||||||
acceptedAt?: Date | string | null
|
acceptedAt?: Date | string | null
|
||||||
createdAt?: Date | string
|
createdAt?: Date | string
|
||||||
@@ -381,6 +398,7 @@ export type UserUpdateManyMutationInput = {
|
|||||||
email?: Prisma.StringFieldUpdateOperationsInput | string
|
email?: Prisma.StringFieldUpdateOperationsInput | string
|
||||||
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
||||||
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
||||||
|
emailVerified?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
||||||
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
||||||
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
||||||
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
||||||
@@ -393,6 +411,7 @@ export type UserUncheckedUpdateManyInput = {
|
|||||||
email?: Prisma.StringFieldUpdateOperationsInput | string
|
email?: Prisma.StringFieldUpdateOperationsInput | string
|
||||||
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
||||||
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
||||||
|
emailVerified?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
||||||
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
||||||
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
||||||
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
||||||
@@ -405,6 +424,7 @@ export type UserCountOrderByAggregateInput = {
|
|||||||
email?: Prisma.SortOrder
|
email?: Prisma.SortOrder
|
||||||
password?: Prisma.SortOrder
|
password?: Prisma.SortOrder
|
||||||
image?: Prisma.SortOrder
|
image?: Prisma.SortOrder
|
||||||
|
emailVerified?: Prisma.SortOrder
|
||||||
acceptedTermsAndPrivacy?: Prisma.SortOrder
|
acceptedTermsAndPrivacy?: Prisma.SortOrder
|
||||||
acceptedAt?: Prisma.SortOrder
|
acceptedAt?: Prisma.SortOrder
|
||||||
createdAt?: Prisma.SortOrder
|
createdAt?: Prisma.SortOrder
|
||||||
@@ -417,6 +437,7 @@ export type UserMaxOrderByAggregateInput = {
|
|||||||
email?: Prisma.SortOrder
|
email?: Prisma.SortOrder
|
||||||
password?: Prisma.SortOrder
|
password?: Prisma.SortOrder
|
||||||
image?: Prisma.SortOrder
|
image?: Prisma.SortOrder
|
||||||
|
emailVerified?: Prisma.SortOrder
|
||||||
acceptedTermsAndPrivacy?: Prisma.SortOrder
|
acceptedTermsAndPrivacy?: Prisma.SortOrder
|
||||||
acceptedAt?: Prisma.SortOrder
|
acceptedAt?: Prisma.SortOrder
|
||||||
createdAt?: Prisma.SortOrder
|
createdAt?: Prisma.SortOrder
|
||||||
@@ -429,6 +450,7 @@ export type UserMinOrderByAggregateInput = {
|
|||||||
email?: Prisma.SortOrder
|
email?: Prisma.SortOrder
|
||||||
password?: Prisma.SortOrder
|
password?: Prisma.SortOrder
|
||||||
image?: Prisma.SortOrder
|
image?: Prisma.SortOrder
|
||||||
|
emailVerified?: Prisma.SortOrder
|
||||||
acceptedTermsAndPrivacy?: Prisma.SortOrder
|
acceptedTermsAndPrivacy?: Prisma.SortOrder
|
||||||
acceptedAt?: Prisma.SortOrder
|
acceptedAt?: Prisma.SortOrder
|
||||||
createdAt?: Prisma.SortOrder
|
createdAt?: Prisma.SortOrder
|
||||||
@@ -453,14 +475,14 @@ export type NullableStringFieldUpdateOperationsInput = {
|
|||||||
set?: string | null
|
set?: string | null
|
||||||
}
|
}
|
||||||
|
|
||||||
export type BoolFieldUpdateOperationsInput = {
|
|
||||||
set?: boolean
|
|
||||||
}
|
|
||||||
|
|
||||||
export type NullableDateTimeFieldUpdateOperationsInput = {
|
export type NullableDateTimeFieldUpdateOperationsInput = {
|
||||||
set?: Date | string | null
|
set?: Date | string | null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type BoolFieldUpdateOperationsInput = {
|
||||||
|
set?: boolean
|
||||||
|
}
|
||||||
|
|
||||||
export type DateTimeFieldUpdateOperationsInput = {
|
export type DateTimeFieldUpdateOperationsInput = {
|
||||||
set?: Date | string
|
set?: Date | string
|
||||||
}
|
}
|
||||||
@@ -557,6 +579,7 @@ export type UserCreateWithoutAccountsInput = {
|
|||||||
email: string
|
email: string
|
||||||
password?: string | null
|
password?: string | null
|
||||||
image?: string | null
|
image?: string | null
|
||||||
|
emailVerified?: Date | string | null
|
||||||
acceptedTermsAndPrivacy?: boolean
|
acceptedTermsAndPrivacy?: boolean
|
||||||
acceptedAt?: Date | string | null
|
acceptedAt?: Date | string | null
|
||||||
createdAt?: Date | string
|
createdAt?: Date | string
|
||||||
@@ -574,6 +597,7 @@ export type UserUncheckedCreateWithoutAccountsInput = {
|
|||||||
email: string
|
email: string
|
||||||
password?: string | null
|
password?: string | null
|
||||||
image?: string | null
|
image?: string | null
|
||||||
|
emailVerified?: Date | string | null
|
||||||
acceptedTermsAndPrivacy?: boolean
|
acceptedTermsAndPrivacy?: boolean
|
||||||
acceptedAt?: Date | string | null
|
acceptedAt?: Date | string | null
|
||||||
createdAt?: Date | string
|
createdAt?: Date | string
|
||||||
@@ -607,6 +631,7 @@ export type UserUpdateWithoutAccountsInput = {
|
|||||||
email?: Prisma.StringFieldUpdateOperationsInput | string
|
email?: Prisma.StringFieldUpdateOperationsInput | string
|
||||||
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
||||||
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
||||||
|
emailVerified?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
||||||
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
||||||
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
||||||
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
||||||
@@ -624,6 +649,7 @@ export type UserUncheckedUpdateWithoutAccountsInput = {
|
|||||||
email?: Prisma.StringFieldUpdateOperationsInput | string
|
email?: Prisma.StringFieldUpdateOperationsInput | string
|
||||||
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
||||||
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
||||||
|
emailVerified?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
||||||
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
||||||
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
||||||
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
||||||
@@ -641,6 +667,7 @@ export type UserCreateWithoutOrganizerVerificationInput = {
|
|||||||
email: string
|
email: string
|
||||||
password?: string | null
|
password?: string | null
|
||||||
image?: string | null
|
image?: string | null
|
||||||
|
emailVerified?: Date | string | null
|
||||||
acceptedTermsAndPrivacy?: boolean
|
acceptedTermsAndPrivacy?: boolean
|
||||||
acceptedAt?: Date | string | null
|
acceptedAt?: Date | string | null
|
||||||
createdAt?: Date | string
|
createdAt?: Date | string
|
||||||
@@ -658,6 +685,7 @@ export type UserUncheckedCreateWithoutOrganizerVerificationInput = {
|
|||||||
email: string
|
email: string
|
||||||
password?: string | null
|
password?: string | null
|
||||||
image?: string | null
|
image?: string | null
|
||||||
|
emailVerified?: Date | string | null
|
||||||
acceptedTermsAndPrivacy?: boolean
|
acceptedTermsAndPrivacy?: boolean
|
||||||
acceptedAt?: Date | string | null
|
acceptedAt?: Date | string | null
|
||||||
createdAt?: Date | string
|
createdAt?: Date | string
|
||||||
@@ -680,6 +708,7 @@ export type UserCreateWithoutReviewedVerificationsInput = {
|
|||||||
email: string
|
email: string
|
||||||
password?: string | null
|
password?: string | null
|
||||||
image?: string | null
|
image?: string | null
|
||||||
|
emailVerified?: Date | string | null
|
||||||
acceptedTermsAndPrivacy?: boolean
|
acceptedTermsAndPrivacy?: boolean
|
||||||
acceptedAt?: Date | string | null
|
acceptedAt?: Date | string | null
|
||||||
createdAt?: Date | string
|
createdAt?: Date | string
|
||||||
@@ -697,6 +726,7 @@ export type UserUncheckedCreateWithoutReviewedVerificationsInput = {
|
|||||||
email: string
|
email: string
|
||||||
password?: string | null
|
password?: string | null
|
||||||
image?: string | null
|
image?: string | null
|
||||||
|
emailVerified?: Date | string | null
|
||||||
acceptedTermsAndPrivacy?: boolean
|
acceptedTermsAndPrivacy?: boolean
|
||||||
acceptedAt?: Date | string | null
|
acceptedAt?: Date | string | null
|
||||||
createdAt?: Date | string
|
createdAt?: Date | string
|
||||||
@@ -730,6 +760,7 @@ export type UserUpdateWithoutOrganizerVerificationInput = {
|
|||||||
email?: Prisma.StringFieldUpdateOperationsInput | string
|
email?: Prisma.StringFieldUpdateOperationsInput | string
|
||||||
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
||||||
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
||||||
|
emailVerified?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
||||||
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
||||||
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
||||||
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
||||||
@@ -747,6 +778,7 @@ export type UserUncheckedUpdateWithoutOrganizerVerificationInput = {
|
|||||||
email?: Prisma.StringFieldUpdateOperationsInput | string
|
email?: Prisma.StringFieldUpdateOperationsInput | string
|
||||||
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
||||||
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
||||||
|
emailVerified?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
||||||
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
||||||
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
||||||
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
||||||
@@ -775,6 +807,7 @@ export type UserUpdateWithoutReviewedVerificationsInput = {
|
|||||||
email?: Prisma.StringFieldUpdateOperationsInput | string
|
email?: Prisma.StringFieldUpdateOperationsInput | string
|
||||||
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
||||||
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
||||||
|
emailVerified?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
||||||
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
||||||
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
||||||
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
||||||
@@ -792,6 +825,7 @@ export type UserUncheckedUpdateWithoutReviewedVerificationsInput = {
|
|||||||
email?: Prisma.StringFieldUpdateOperationsInput | string
|
email?: Prisma.StringFieldUpdateOperationsInput | string
|
||||||
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
||||||
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
||||||
|
emailVerified?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
||||||
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
||||||
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
||||||
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
||||||
@@ -809,6 +843,7 @@ export type UserCreateWithoutTripsInput = {
|
|||||||
email: string
|
email: string
|
||||||
password?: string | null
|
password?: string | null
|
||||||
image?: string | null
|
image?: string | null
|
||||||
|
emailVerified?: Date | string | null
|
||||||
acceptedTermsAndPrivacy?: boolean
|
acceptedTermsAndPrivacy?: boolean
|
||||||
acceptedAt?: Date | string | null
|
acceptedAt?: Date | string | null
|
||||||
createdAt?: Date | string
|
createdAt?: Date | string
|
||||||
@@ -826,6 +861,7 @@ export type UserUncheckedCreateWithoutTripsInput = {
|
|||||||
email: string
|
email: string
|
||||||
password?: string | null
|
password?: string | null
|
||||||
image?: string | null
|
image?: string | null
|
||||||
|
emailVerified?: Date | string | null
|
||||||
acceptedTermsAndPrivacy?: boolean
|
acceptedTermsAndPrivacy?: boolean
|
||||||
acceptedAt?: Date | string | null
|
acceptedAt?: Date | string | null
|
||||||
createdAt?: Date | string
|
createdAt?: Date | string
|
||||||
@@ -859,6 +895,7 @@ export type UserUpdateWithoutTripsInput = {
|
|||||||
email?: Prisma.StringFieldUpdateOperationsInput | string
|
email?: Prisma.StringFieldUpdateOperationsInput | string
|
||||||
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
||||||
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
||||||
|
emailVerified?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
||||||
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
||||||
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
||||||
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
||||||
@@ -876,6 +913,7 @@ export type UserUncheckedUpdateWithoutTripsInput = {
|
|||||||
email?: Prisma.StringFieldUpdateOperationsInput | string
|
email?: Prisma.StringFieldUpdateOperationsInput | string
|
||||||
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
||||||
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
||||||
|
emailVerified?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
||||||
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
||||||
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
||||||
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
||||||
@@ -893,6 +931,7 @@ export type UserCreateWithoutTripReviewsInput = {
|
|||||||
email: string
|
email: string
|
||||||
password?: string | null
|
password?: string | null
|
||||||
image?: string | null
|
image?: string | null
|
||||||
|
emailVerified?: Date | string | null
|
||||||
acceptedTermsAndPrivacy?: boolean
|
acceptedTermsAndPrivacy?: boolean
|
||||||
acceptedAt?: Date | string | null
|
acceptedAt?: Date | string | null
|
||||||
createdAt?: Date | string
|
createdAt?: Date | string
|
||||||
@@ -910,6 +949,7 @@ export type UserUncheckedCreateWithoutTripReviewsInput = {
|
|||||||
email: string
|
email: string
|
||||||
password?: string | null
|
password?: string | null
|
||||||
image?: string | null
|
image?: string | null
|
||||||
|
emailVerified?: Date | string | null
|
||||||
acceptedTermsAndPrivacy?: boolean
|
acceptedTermsAndPrivacy?: boolean
|
||||||
acceptedAt?: Date | string | null
|
acceptedAt?: Date | string | null
|
||||||
createdAt?: Date | string
|
createdAt?: Date | string
|
||||||
@@ -943,6 +983,7 @@ export type UserUpdateWithoutTripReviewsInput = {
|
|||||||
email?: Prisma.StringFieldUpdateOperationsInput | string
|
email?: Prisma.StringFieldUpdateOperationsInput | string
|
||||||
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
||||||
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
||||||
|
emailVerified?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
||||||
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
||||||
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
||||||
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
||||||
@@ -960,6 +1001,7 @@ export type UserUncheckedUpdateWithoutTripReviewsInput = {
|
|||||||
email?: Prisma.StringFieldUpdateOperationsInput | string
|
email?: Prisma.StringFieldUpdateOperationsInput | string
|
||||||
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
||||||
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
||||||
|
emailVerified?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
||||||
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
||||||
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
||||||
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
||||||
@@ -977,6 +1019,7 @@ export type UserCreateWithoutParticipationsInput = {
|
|||||||
email: string
|
email: string
|
||||||
password?: string | null
|
password?: string | null
|
||||||
image?: string | null
|
image?: string | null
|
||||||
|
emailVerified?: Date | string | null
|
||||||
acceptedTermsAndPrivacy?: boolean
|
acceptedTermsAndPrivacy?: boolean
|
||||||
acceptedAt?: Date | string | null
|
acceptedAt?: Date | string | null
|
||||||
createdAt?: Date | string
|
createdAt?: Date | string
|
||||||
@@ -994,6 +1037,7 @@ export type UserUncheckedCreateWithoutParticipationsInput = {
|
|||||||
email: string
|
email: string
|
||||||
password?: string | null
|
password?: string | null
|
||||||
image?: string | null
|
image?: string | null
|
||||||
|
emailVerified?: Date | string | null
|
||||||
acceptedTermsAndPrivacy?: boolean
|
acceptedTermsAndPrivacy?: boolean
|
||||||
acceptedAt?: Date | string | null
|
acceptedAt?: Date | string | null
|
||||||
createdAt?: Date | string
|
createdAt?: Date | string
|
||||||
@@ -1027,6 +1071,7 @@ export type UserUpdateWithoutParticipationsInput = {
|
|||||||
email?: Prisma.StringFieldUpdateOperationsInput | string
|
email?: Prisma.StringFieldUpdateOperationsInput | string
|
||||||
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
||||||
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
||||||
|
emailVerified?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
||||||
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
||||||
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
||||||
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
||||||
@@ -1044,6 +1089,7 @@ export type UserUncheckedUpdateWithoutParticipationsInput = {
|
|||||||
email?: Prisma.StringFieldUpdateOperationsInput | string
|
email?: Prisma.StringFieldUpdateOperationsInput | string
|
||||||
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
||||||
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
||||||
|
emailVerified?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
||||||
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
||||||
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
||||||
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
||||||
@@ -1128,6 +1174,7 @@ export type UserSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs = r
|
|||||||
email?: boolean
|
email?: boolean
|
||||||
password?: boolean
|
password?: boolean
|
||||||
image?: boolean
|
image?: boolean
|
||||||
|
emailVerified?: boolean
|
||||||
acceptedTermsAndPrivacy?: boolean
|
acceptedTermsAndPrivacy?: boolean
|
||||||
acceptedAt?: boolean
|
acceptedAt?: boolean
|
||||||
createdAt?: boolean
|
createdAt?: boolean
|
||||||
@@ -1147,6 +1194,7 @@ export type UserSelectCreateManyAndReturn<ExtArgs extends runtime.Types.Extensio
|
|||||||
email?: boolean
|
email?: boolean
|
||||||
password?: boolean
|
password?: boolean
|
||||||
image?: boolean
|
image?: boolean
|
||||||
|
emailVerified?: boolean
|
||||||
acceptedTermsAndPrivacy?: boolean
|
acceptedTermsAndPrivacy?: boolean
|
||||||
acceptedAt?: boolean
|
acceptedAt?: boolean
|
||||||
createdAt?: boolean
|
createdAt?: boolean
|
||||||
@@ -1159,6 +1207,7 @@ export type UserSelectUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensio
|
|||||||
email?: boolean
|
email?: boolean
|
||||||
password?: boolean
|
password?: boolean
|
||||||
image?: boolean
|
image?: boolean
|
||||||
|
emailVerified?: boolean
|
||||||
acceptedTermsAndPrivacy?: boolean
|
acceptedTermsAndPrivacy?: boolean
|
||||||
acceptedAt?: boolean
|
acceptedAt?: boolean
|
||||||
createdAt?: boolean
|
createdAt?: boolean
|
||||||
@@ -1171,13 +1220,14 @@ export type UserSelectScalar = {
|
|||||||
email?: boolean
|
email?: boolean
|
||||||
password?: boolean
|
password?: boolean
|
||||||
image?: boolean
|
image?: boolean
|
||||||
|
emailVerified?: boolean
|
||||||
acceptedTermsAndPrivacy?: boolean
|
acceptedTermsAndPrivacy?: boolean
|
||||||
acceptedAt?: boolean
|
acceptedAt?: boolean
|
||||||
createdAt?: boolean
|
createdAt?: boolean
|
||||||
updatedAt?: boolean
|
updatedAt?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
export type UserOmit<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetOmit<"id" | "name" | "email" | "password" | "image" | "acceptedTermsAndPrivacy" | "acceptedAt" | "createdAt" | "updatedAt", ExtArgs["result"]["user"]>
|
export type UserOmit<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetOmit<"id" | "name" | "email" | "password" | "image" | "emailVerified" | "acceptedTermsAndPrivacy" | "acceptedAt" | "createdAt" | "updatedAt", ExtArgs["result"]["user"]>
|
||||||
export type UserInclude<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
|
export type UserInclude<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
|
||||||
accounts?: boolean | Prisma.User$accountsArgs<ExtArgs>
|
accounts?: boolean | Prisma.User$accountsArgs<ExtArgs>
|
||||||
trips?: boolean | Prisma.User$tripsArgs<ExtArgs>
|
trips?: boolean | Prisma.User$tripsArgs<ExtArgs>
|
||||||
@@ -1209,6 +1259,10 @@ export type $UserPayload<ExtArgs extends runtime.Types.Extensions.InternalArgs =
|
|||||||
*/
|
*/
|
||||||
password: string | null
|
password: string | null
|
||||||
image: string | null
|
image: string | null
|
||||||
|
/**
|
||||||
|
* Diisi PrismaAdapter NextAuth saat email diverifikasi provider OAuth (Google selalu sudah verified).
|
||||||
|
*/
|
||||||
|
emailVerified: Date | null
|
||||||
/**
|
/**
|
||||||
* Apakah user telah menyetujui Syarat & Ketentuan dan Kebijakan Privasi
|
* Apakah user telah menyetujui Syarat & Ketentuan dan Kebijakan Privasi
|
||||||
*/
|
*/
|
||||||
@@ -1653,6 +1707,7 @@ export interface UserFieldRefs {
|
|||||||
readonly email: Prisma.FieldRef<"User", 'String'>
|
readonly email: Prisma.FieldRef<"User", 'String'>
|
||||||
readonly password: Prisma.FieldRef<"User", 'String'>
|
readonly password: Prisma.FieldRef<"User", 'String'>
|
||||||
readonly image: Prisma.FieldRef<"User", 'String'>
|
readonly image: Prisma.FieldRef<"User", 'String'>
|
||||||
|
readonly emailVerified: Prisma.FieldRef<"User", 'DateTime'>
|
||||||
readonly acceptedTermsAndPrivacy: Prisma.FieldRef<"User", 'Boolean'>
|
readonly acceptedTermsAndPrivacy: Prisma.FieldRef<"User", 'Boolean'>
|
||||||
readonly acceptedAt: Prisma.FieldRef<"User", 'DateTime'>
|
readonly acceptedAt: Prisma.FieldRef<"User", 'DateTime'>
|
||||||
readonly createdAt: Prisma.FieldRef<"User", 'DateTime'>
|
readonly createdAt: Prisma.FieldRef<"User", 'DateTime'>
|
||||||
|
|||||||
+3
-3
@@ -18,7 +18,7 @@ const geistMono = Geist_Mono({
|
|||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
metadataBase: new URL(siteUrl),
|
metadataBase: new URL(siteUrl),
|
||||||
title: {
|
title: {
|
||||||
default: `${siteConfig.name} — Open Trip Pendakian Gunung`,
|
default: `${siteConfig.name} — Cari Teman Pendakian, Pergi Bareng`,
|
||||||
template: `%s · ${siteConfig.name}`,
|
template: `%s · ${siteConfig.name}`,
|
||||||
},
|
},
|
||||||
description: siteConfig.description,
|
description: siteConfig.description,
|
||||||
@@ -33,7 +33,7 @@ export const metadata: Metadata = {
|
|||||||
locale: "id_ID",
|
locale: "id_ID",
|
||||||
url: "/",
|
url: "/",
|
||||||
siteName: siteConfig.name,
|
siteName: siteConfig.name,
|
||||||
title: `${siteConfig.name} — Open Trip Pendakian Gunung`,
|
title: `${siteConfig.name} — Cari Teman Pendakian, Pergi Bareng`,
|
||||||
description: siteConfig.description,
|
description: siteConfig.description,
|
||||||
images: [
|
images: [
|
||||||
{
|
{
|
||||||
@@ -46,7 +46,7 @@ export const metadata: Metadata = {
|
|||||||
},
|
},
|
||||||
twitter: {
|
twitter: {
|
||||||
card: "summary_large_image",
|
card: "summary_large_image",
|
||||||
title: `${siteConfig.name} — Open Trip Pendakian Gunung`,
|
title: `${siteConfig.name} — Cari Teman Pendakian, Pergi Bareng`,
|
||||||
description: siteConfig.description,
|
description: siteConfig.description,
|
||||||
images: ["/images/SeTrip.png"],
|
images: ["/images/SeTrip.png"],
|
||||||
},
|
},
|
||||||
|
|||||||
+25
-15
@@ -6,11 +6,11 @@ import { TripCard } from "@/features/trip/components/trip-card";
|
|||||||
import { siteConfig, siteUrl, absoluteUrl } from "@/lib/site";
|
import { siteConfig, siteUrl, absoluteUrl } from "@/lib/site";
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
title: "Cari Open Trip Pendakian Gunung Bareng",
|
title: "Cari Teman Pendakian — Pergi Bareng, Bukan Sendiri",
|
||||||
description: `${siteConfig.slogan} ${siteConfig.description}`,
|
description: `${siteConfig.slogan} ${siteConfig.description}`,
|
||||||
alternates: { canonical: "/" },
|
alternates: { canonical: "/" },
|
||||||
openGraph: {
|
openGraph: {
|
||||||
title: `${siteConfig.name} — Open Trip Pendakian Gunung Bareng`,
|
title: `${siteConfig.name} — Cari Teman Pendakian, Gabung Trip Bareng`,
|
||||||
description: siteConfig.slogan,
|
description: siteConfig.slogan,
|
||||||
url: "/",
|
url: "/",
|
||||||
},
|
},
|
||||||
@@ -88,30 +88,31 @@ export default async function HomePage() {
|
|||||||
<div className="relative mx-auto max-w-4xl px-4 pb-10 pt-8 text-center sm:pb-14 sm:pt-12 lg:pb-16 lg:pt-14">
|
<div className="relative mx-auto max-w-4xl px-4 pb-10 pt-8 text-center sm:pb-14 sm:pt-12 lg:pb-16 lg:pt-14">
|
||||||
{/* Brand badge */}
|
{/* Brand badge */}
|
||||||
<div className="mb-4 inline-flex items-center gap-1.5 rounded-full border border-primary-400/30 bg-primary-600/20 px-3 py-1 sm:mb-6 sm:gap-2 sm:px-4 sm:py-1.5">
|
<div className="mb-4 inline-flex items-center gap-1.5 rounded-full border border-primary-400/30 bg-primary-600/20 px-3 py-1 sm:mb-6 sm:gap-2 sm:px-4 sm:py-1.5">
|
||||||
<span className="text-xs sm:text-sm">🏔️</span>
|
<span className="text-xs sm:text-sm">🤝</span>
|
||||||
<span className="text-xs font-medium text-primary-300 sm:text-sm">
|
<span className="text-xs font-medium text-primary-300 sm:text-sm">
|
||||||
Open Trip Pendakian Gunung
|
Cari teman pendakian
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<h1 className="mb-3 text-3xl font-extrabold leading-tight tracking-tight text-white sm:mb-4 sm:text-4xl lg:text-5xl">
|
<h1 className="mb-3 text-3xl font-extrabold leading-tight tracking-tight text-white sm:mb-4 sm:text-4xl lg:text-5xl">
|
||||||
Se<span className="text-primary-400">Trip</span>
|
Pergi bareng,{" "}
|
||||||
|
<span className="text-primary-400">bukan sendiri</span>
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
<p className="mx-auto mb-2 max-w-sm text-base font-medium text-neutral-300 sm:mb-3 sm:max-w-lg sm:text-lg">
|
<p className="mx-auto mb-2 max-w-sm text-base font-medium text-neutral-300 sm:mb-3 sm:max-w-lg sm:text-lg">
|
||||||
Masa cowok sejati, cewek seimut nggak{" "}
|
Lagi pengen hiking tapi gak punya teman?{" "}
|
||||||
<span className="text-primary-400">SeTrip</span> bareng?
|
<span className="text-primary-400">SeTrip</span> tempatnya.
|
||||||
</p>
|
</p>
|
||||||
<p className="mx-auto mb-6 max-w-xs text-sm text-neutral-400 sm:mb-8 sm:max-w-md sm:text-base">
|
<p className="mx-auto mb-6 max-w-xs text-sm text-neutral-400 sm:mb-8 sm:max-w-md sm:text-base">
|
||||||
Yuk mulai dari sini. Cari open trip pendakian, gabung bareng, nikmati
|
Gabung open trip pendakian, ketemu orang baru, dari stranger jadi
|
||||||
petualangan ke gunung-gunung Jawa Barat.
|
travel buddies. Grup kecil, organizer terverifikasi.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<Link
|
<Link
|
||||||
href="/trips"
|
href="/trips"
|
||||||
className="inline-block rounded-xl bg-primary-600 px-6 py-2.5 text-sm font-semibold text-white shadow-lg shadow-primary-600/25 transition-all hover:bg-primary-500 hover:scale-105 active:scale-95 sm:px-8 sm:py-3 sm:text-base"
|
className="inline-block rounded-xl bg-primary-600 px-6 py-2.5 text-sm font-semibold text-white shadow-lg shadow-primary-600/25 transition-all hover:bg-primary-500 hover:scale-105 active:scale-95 sm:px-8 sm:py-3 sm:text-base"
|
||||||
>
|
>
|
||||||
Cari Trip Sekarang
|
Cari Teman Trip
|
||||||
</Link>
|
</Link>
|
||||||
|
|
||||||
{/* Stats */}
|
{/* Stats */}
|
||||||
@@ -170,6 +171,9 @@ export default async function HomePage() {
|
|||||||
organizerName={trip.organizer.name}
|
organizerName={trip.organizer.name}
|
||||||
status={trip.status}
|
status={trip.status}
|
||||||
coverImage={trip.images[0]?.url}
|
coverImage={trip.images[0]?.url}
|
||||||
|
isVerifiedOrganizer={
|
||||||
|
trip.organizer.organizerVerification?.status === "APPROVED"
|
||||||
|
}
|
||||||
priority={i === 0}
|
priority={i === 0}
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
@@ -189,7 +193,7 @@ export default async function HomePage() {
|
|||||||
Open Trip
|
Open Trip
|
||||||
</h2>
|
</h2>
|
||||||
<p className="hidden text-xs text-neutral-500 sm:block">
|
<p className="hidden text-xs text-neutral-500 sm:block">
|
||||||
Pendakian gunung bareng teman baru
|
Pilih trip, ketemu teman baru
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -236,6 +240,9 @@ export default async function HomePage() {
|
|||||||
organizerName={trip.organizer.name}
|
organizerName={trip.organizer.name}
|
||||||
status={trip.status}
|
status={trip.status}
|
||||||
coverImage={trip.images[0]?.url}
|
coverImage={trip.images[0]?.url}
|
||||||
|
isVerifiedOrganizer={
|
||||||
|
trip.organizer.organizerVerification?.status === "APPROVED"
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
@@ -274,6 +281,9 @@ export default async function HomePage() {
|
|||||||
organizerName={trip.organizer.name}
|
organizerName={trip.organizer.name}
|
||||||
status={trip.status}
|
status={trip.status}
|
||||||
coverImage={trip.images[0]?.url}
|
coverImage={trip.images[0]?.url}
|
||||||
|
isVerifiedOrganizer={
|
||||||
|
trip.organizer.organizerVerification?.status === "APPROVED"
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
@@ -283,11 +293,11 @@ export default async function HomePage() {
|
|||||||
{/* CTA Bottom */}
|
{/* CTA Bottom */}
|
||||||
<section className="overflow-hidden rounded-2xl bg-neutral-800 p-6 text-center sm:p-8 lg:p-12">
|
<section className="overflow-hidden rounded-2xl bg-neutral-800 p-6 text-center sm:p-8 lg:p-12">
|
||||||
<h2 className="mb-2 text-xl font-bold text-white sm:text-2xl">
|
<h2 className="mb-2 text-xl font-bold text-white sm:text-2xl">
|
||||||
Siap naik gunung?
|
Dari stranger, jadi travel buddies.
|
||||||
</h2>
|
</h2>
|
||||||
<p className="mx-auto mb-5 max-w-xs text-sm text-neutral-400 sm:mb-6 sm:max-w-sm sm:text-base">
|
<p className="mx-auto mb-5 max-w-xs text-sm text-neutral-400 sm:mb-6 sm:max-w-sm sm:text-base">
|
||||||
Buat trip sendiri atau gabung trip yang sudah ada. Seru bareng teman
|
Buat trip dan kumpulin grup sendiri, atau gabung trip yang sudah
|
||||||
baru!
|
jalan. Kenalan baru menunggu di puncak.
|
||||||
</p>
|
</p>
|
||||||
<div className="flex flex-col justify-center gap-2 sm:flex-row sm:gap-3">
|
<div className="flex flex-col justify-center gap-2 sm:flex-row sm:gap-3">
|
||||||
<Link
|
<Link
|
||||||
@@ -300,7 +310,7 @@ export default async function HomePage() {
|
|||||||
href="/trips"
|
href="/trips"
|
||||||
className="rounded-xl border border-neutral-600 px-6 py-2.5 text-sm font-semibold text-neutral-300 hover:border-neutral-500 hover:text-white"
|
className="rounded-xl border border-neutral-600 px-6 py-2.5 text-sm font-semibold text-neutral-300 hover:border-neutral-500 hover:text-white"
|
||||||
>
|
>
|
||||||
Cari Trip
|
Cari Teman Trip
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
@@ -20,8 +20,14 @@ export default async function ProfilePage() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const data = await profileService.getProfileDashboard(session.user.id);
|
const data = await profileService.getProfileDashboard(session.user.id);
|
||||||
const { user, organizedTrips, activeJoined, cancelledJoined, reviewable } =
|
const {
|
||||||
data;
|
user,
|
||||||
|
isVerifiedOrganizer,
|
||||||
|
organizedTrips,
|
||||||
|
activeJoined,
|
||||||
|
cancelledJoined,
|
||||||
|
reviewable,
|
||||||
|
} = data;
|
||||||
|
|
||||||
const memberSince = new Intl.DateTimeFormat("id-ID", {
|
const memberSince = new Intl.DateTimeFormat("id-ID", {
|
||||||
month: "long",
|
month: "long",
|
||||||
@@ -146,6 +152,7 @@ export default async function ProfilePage() {
|
|||||||
organizerName={`${user.name} (Kamu)`}
|
organizerName={`${user.name} (Kamu)`}
|
||||||
status={trip.status}
|
status={trip.status}
|
||||||
coverImage={trip.images[0]?.url}
|
coverImage={trip.images[0]?.url}
|
||||||
|
isVerifiedOrganizer={isVerifiedOrganizer}
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+9
-6
@@ -15,11 +15,11 @@ export async function generateMetadata({
|
|||||||
}: TripsPageProps): Promise<Metadata> {
|
}: TripsPageProps): Promise<Metadata> {
|
||||||
const { q } = await searchParams;
|
const { q } = await searchParams;
|
||||||
const title = q
|
const title = q
|
||||||
? `Open Trip "${q}" — Pendakian Bareng`
|
? `Cari Teman Trip "${q}" — Pendakian Bareng`
|
||||||
: "Open Trip Pendakian Gunung — Daftar Trip Aktif";
|
: "Cari Teman Pendakian — Daftar Open Trip Aktif";
|
||||||
const description = q
|
const description = q
|
||||||
? `Hasil pencarian open trip "${q}" di ${siteConfig.name}. Cari open trip pendakian, lihat tanggal, harga, & langsung gabung.`
|
? `Hasil pencarian "${q}" di ${siteConfig.name}. Temukan teman pendakian, lihat trip & organizer terverifikasi, langsung gabung.`
|
||||||
: `Daftar open trip pendakian gunung yang sedang dibuka di ${siteConfig.name}. Pilih trip, lihat itinerary, dan langsung gabung mendaki bareng.`;
|
: `Daftar open trip pendakian aktif di ${siteConfig.name}. Pilih trip, kenal calon teman seperjalanan, dan gabung bareng — grup kecil & organizer terverifikasi.`;
|
||||||
return {
|
return {
|
||||||
title,
|
title,
|
||||||
description,
|
description,
|
||||||
@@ -48,12 +48,12 @@ export default async function TripsPage({ searchParams }: TripsPageProps) {
|
|||||||
<div className="mb-6 flex flex-col gap-3 sm:mb-8 sm:flex-row sm:items-center sm:justify-between">
|
<div className="mb-6 flex flex-col gap-3 sm:mb-8 sm:flex-row sm:items-center sm:justify-between">
|
||||||
<div>
|
<div>
|
||||||
<h1 className="text-xl font-bold text-neutral-800 sm:text-2xl">
|
<h1 className="text-xl font-bold text-neutral-800 sm:text-2xl">
|
||||||
Open Trip Pendakian
|
Cari Teman Pendakian
|
||||||
</h1>
|
</h1>
|
||||||
<p className="mt-0.5 text-sm text-neutral-500">
|
<p className="mt-0.5 text-sm text-neutral-500">
|
||||||
{hasFilters
|
{hasFilters
|
||||||
? `${trips.length} dari ${totalCount} trip ditemukan`
|
? `${trips.length} dari ${totalCount} trip ditemukan`
|
||||||
: `${trips.length} trip tersedia — pilih dan langsung join`}
|
: `${trips.length} trip tersedia — pilih, kenalan, lalu gabung`}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<Link
|
<Link
|
||||||
@@ -112,6 +112,9 @@ export default async function TripsPage({ searchParams }: TripsPageProps) {
|
|||||||
organizerName={trip.organizer.name}
|
organizerName={trip.organizer.name}
|
||||||
status={trip.status}
|
status={trip.status}
|
||||||
coverImage={trip.images[0]?.url}
|
coverImage={trip.images[0]?.url}
|
||||||
|
isVerifiedOrganizer={
|
||||||
|
trip.organizer.organizerVerification?.status === "APPROVED"
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -33,7 +33,13 @@ export async function registerAction(formData: FormData) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function acceptTermsAction() {
|
export async function acceptTermsAction(input: { accepted: boolean }) {
|
||||||
|
if (input?.accepted !== true) {
|
||||||
|
return {
|
||||||
|
error:
|
||||||
|
"Kamu harus mencentang persetujuan Syarat & Ketentuan dan Kebijakan Privasi",
|
||||||
|
};
|
||||||
|
}
|
||||||
const session = await getServerSession(authOptions);
|
const session = await getServerSession(authOptions);
|
||||||
if (!session?.user) {
|
if (!session?.user) {
|
||||||
return { error: "Kamu harus login terlebih dahulu" };
|
return { error: "Kamu harus login terlebih dahulu" };
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ interface TripCardProps {
|
|||||||
status: string;
|
status: string;
|
||||||
coverImage?: string | null;
|
coverImage?: string | null;
|
||||||
priority?: boolean;
|
priority?: boolean;
|
||||||
|
isVerifiedOrganizer?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function TripCard({
|
export function TripCard({
|
||||||
@@ -33,8 +34,10 @@ export function TripCard({
|
|||||||
status,
|
status,
|
||||||
coverImage,
|
coverImage,
|
||||||
priority,
|
priority,
|
||||||
|
isVerifiedOrganizer,
|
||||||
}: TripCardProps) {
|
}: TripCardProps) {
|
||||||
const spotsLeft = maxParticipants - participantCount;
|
const spotsLeft = maxParticipants - participantCount;
|
||||||
|
const isSmallGroup = maxParticipants <= 10;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Link href={`/trips/${id}`} className="group block">
|
<Link href={`/trips/${id}`} className="group block">
|
||||||
@@ -83,9 +86,25 @@ export function TripCard({
|
|||||||
<span className="text-xs text-secondary-500">📅</span>{" "}
|
<span className="text-xs text-secondary-500">📅</span>{" "}
|
||||||
{formatTripCalendarDateRangeLong(date, endDate)}
|
{formatTripCalendarDateRangeLong(date, endDate)}
|
||||||
</div>
|
</div>
|
||||||
<div className="flex items-center gap-1.5">
|
<div className="flex flex-wrap items-center gap-1.5">
|
||||||
<span className="text-xs text-secondary-500">👤</span>{" "}
|
<span className="text-xs text-secondary-500">👤</span>{" "}
|
||||||
{organizerName}
|
<span className="truncate">{organizerName}</span>
|
||||||
|
{isVerifiedOrganizer && (
|
||||||
|
<span
|
||||||
|
className="inline-flex items-center gap-0.5 rounded-full bg-primary-100 px-1.5 py-0.5 text-[10px] font-bold uppercase tracking-wide text-primary-800"
|
||||||
|
title="Identitas organizer telah diverifikasi (KTP & rekening)"
|
||||||
|
>
|
||||||
|
✅ Verified
|
||||||
|
</span>
|
||||||
|
)}
|
||||||
|
{isSmallGroup && (
|
||||||
|
<span
|
||||||
|
className="inline-flex items-center rounded-full bg-secondary-100 px-1.5 py-0.5 text-[10px] font-bold uppercase tracking-wide text-secondary-800"
|
||||||
|
title="Grup kecil — pengalaman lebih akrab"
|
||||||
|
>
|
||||||
|
Small group
|
||||||
|
</span>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
+11
-3
@@ -66,9 +66,17 @@ export const authOptions: AuthOptions = {
|
|||||||
if (user) {
|
if (user) {
|
||||||
token.id = user.id;
|
token.id = user.id;
|
||||||
}
|
}
|
||||||
// Hidrasi `acceptedTermsAndPrivacy` dari DB pada login pertama dan setiap
|
// Hidrasi `acceptedTermsAndPrivacy` dari DB:
|
||||||
// kali client memanggil `useSession().update()` (setelah user accept).
|
// - login pertama (`undefined`)
|
||||||
if (token.id && (trigger === "update" || token.acceptedTermsAndPrivacy === undefined)) {
|
// - client memanggil `useSession().update()` setelah accept
|
||||||
|
// - token masih `false` → selalu cek DB (mencegah infinite redirect loop
|
||||||
|
// antara middleware dan /accept-terms saat DB sudah true tapi cookie stale)
|
||||||
|
if (
|
||||||
|
token.id &&
|
||||||
|
(trigger === "update" ||
|
||||||
|
token.acceptedTermsAndPrivacy === undefined ||
|
||||||
|
token.acceptedTermsAndPrivacy === false)
|
||||||
|
) {
|
||||||
const dbUser = await prisma.user.findUnique({
|
const dbUser = await prisma.user.findUnique({
|
||||||
where: { id: token.id as string },
|
where: { id: token.id as string },
|
||||||
select: { acceptedTermsAndPrivacy: true },
|
select: { acceptedTermsAndPrivacy: true },
|
||||||
|
|||||||
+2
-1
@@ -3,7 +3,8 @@ export const LIMITS = {
|
|||||||
/** Maks trip yang bisa dibuat satu organizer per hari kalender (UTC) */
|
/** Maks trip yang bisa dibuat satu organizer per hari kalender (UTC) */
|
||||||
MAX_TRIPS_PER_ORGANIZER_PER_DAY: 15,
|
MAX_TRIPS_PER_ORGANIZER_PER_DAY: 15,
|
||||||
MIN_PARTICIPANTS: 1,
|
MIN_PARTICIPANTS: 1,
|
||||||
MAX_PARTICIPANTS: 99,
|
/** Cap small-group experience: 5–10 ideal, 15 sebagai batas atas fleksibel */
|
||||||
|
MAX_PARTICIPANTS: 15,
|
||||||
MAX_PRICE_IDR: 100_000_000,
|
MAX_PRICE_IDR: 100_000_000,
|
||||||
MAX_TITLE_LENGTH: 120,
|
MAX_TITLE_LENGTH: 120,
|
||||||
MAX_MOUNTAIN_LENGTH: 100,
|
MAX_MOUNTAIN_LENGTH: 100,
|
||||||
|
|||||||
+5
-3
@@ -1,17 +1,19 @@
|
|||||||
export const siteConfig = {
|
export const siteConfig = {
|
||||||
name: "SeTrip",
|
name: "SeTrip",
|
||||||
brand: "SeTrip",
|
brand: "SeTrip",
|
||||||
slogan: "Masa cowok sejati, cewek seimut, nggak SeTrip bareng?",
|
slogan: "Pergi bareng, bukan sendiri.",
|
||||||
description:
|
description:
|
||||||
"SeTrip adalah platform open trip pendakian gunung yang menyatukan open trip dari berbagai sosial media ke satu tempat. Cari, gabung, dan mendaki bareng — dari pemula sampai pendaki rutin.",
|
"SeTrip adalah tempat menemukan teman pendakian — bukan sekadar daftar trip. Gabung open trip, kenal stranger, jadi circle baru. Grup kecil, organizer terverifikasi.",
|
||||||
keywords: [
|
keywords: [
|
||||||
"setrip",
|
"setrip",
|
||||||
"se trip",
|
"se trip",
|
||||||
|
"teman trip",
|
||||||
|
"teman pendakian",
|
||||||
|
"cari teman naik gunung",
|
||||||
"open trip",
|
"open trip",
|
||||||
"open trip gunung",
|
"open trip gunung",
|
||||||
"open trip pendakian",
|
"open trip pendakian",
|
||||||
"open trip jawa barat",
|
"open trip jawa barat",
|
||||||
"hiking",
|
|
||||||
"hiking bareng",
|
"hiking bareng",
|
||||||
"mendaki bersama",
|
"mendaki bersama",
|
||||||
"naik gunung bareng",
|
"naik gunung bareng",
|
||||||
|
|||||||
Generated
+2
-2
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "setrip",
|
"name": "setrip",
|
||||||
"version": "0.3.0",
|
"version": "0.4.0",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "setrip",
|
"name": "setrip",
|
||||||
"version": "0.3.0",
|
"version": "0.4.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@next-auth/prisma-adapter": "^1.0.7",
|
"@next-auth/prisma-adapter": "^1.0.7",
|
||||||
"@prisma/adapter-pg": "^7.7.0",
|
"@prisma/adapter-pg": "^7.7.0",
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "setrip",
|
"name": "setrip",
|
||||||
"version": "0.3.0",
|
"version": "0.4.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "next dev",
|
"dev": "next dev",
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "User" ADD COLUMN "emailVerified" TIMESTAMP(3);
|
||||||
@@ -14,6 +14,8 @@ model User {
|
|||||||
/// Hash bcrypt. Null untuk user yang sign-in via OAuth (mis. Google).
|
/// Hash bcrypt. Null untuk user yang sign-in via OAuth (mis. Google).
|
||||||
password String?
|
password String?
|
||||||
image String?
|
image String?
|
||||||
|
/// Diisi PrismaAdapter NextAuth saat email diverifikasi provider OAuth (Google selalu sudah verified).
|
||||||
|
emailVerified DateTime?
|
||||||
/// Apakah user telah menyetujui Syarat & Ketentuan dan Kebijakan Privasi
|
/// Apakah user telah menyetujui Syarat & Ketentuan dan Kebijakan Privasi
|
||||||
acceptedTermsAndPrivacy Boolean @default(false)
|
acceptedTermsAndPrivacy Boolean @default(false)
|
||||||
/// Waktu user menyetujui Syarat & Ketentuan dan Kebijakan Privasi
|
/// Waktu user menyetujui Syarat & Ketentuan dan Kebijakan Privasi
|
||||||
|
|||||||
@@ -11,7 +11,14 @@ export const tripRepo = {
|
|||||||
async findAll() {
|
async findAll() {
|
||||||
return prisma.trip.findMany({
|
return prisma.trip.findMany({
|
||||||
include: {
|
include: {
|
||||||
organizer: { select: { id: true, name: true, image: true } },
|
organizer: {
|
||||||
|
select: {
|
||||||
|
id: true,
|
||||||
|
name: true,
|
||||||
|
image: true,
|
||||||
|
organizerVerification: { select: { status: true } },
|
||||||
|
},
|
||||||
|
},
|
||||||
images: { orderBy: { order: "asc" }, take: 1 },
|
images: { orderBy: { order: "asc" }, take: 1 },
|
||||||
_count: {
|
_count: {
|
||||||
select: {
|
select: {
|
||||||
@@ -76,7 +83,14 @@ export const tripRepo = {
|
|||||||
return prisma.trip.findMany({
|
return prisma.trip.findMany({
|
||||||
where,
|
where,
|
||||||
include: {
|
include: {
|
||||||
organizer: { select: { id: true, name: true, image: true } },
|
organizer: {
|
||||||
|
select: {
|
||||||
|
id: true,
|
||||||
|
name: true,
|
||||||
|
image: true,
|
||||||
|
organizerVerification: { select: { status: true } },
|
||||||
|
},
|
||||||
|
},
|
||||||
images: { orderBy: { order: "asc" }, take: 1 },
|
images: { orderBy: { order: "asc" }, take: 1 },
|
||||||
_count: {
|
_count: {
|
||||||
select: {
|
select: {
|
||||||
|
|||||||
@@ -28,10 +28,15 @@ export const userRepo = {
|
|||||||
return prisma.user.create({ data });
|
return prisma.user.create({ data });
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tandai user sudah accept T&C/Privacy. Idempotent: kalau sudah `true`,
|
||||||
|
* tidak overwrite `acceptedAt` (audit trail pertama tetap akurat).
|
||||||
|
*/
|
||||||
async markAcceptedTerms(id: string) {
|
async markAcceptedTerms(id: string) {
|
||||||
return prisma.user.update({
|
const result = await prisma.user.updateMany({
|
||||||
where: { id },
|
where: { id, acceptedTermsAndPrivacy: false },
|
||||||
data: { acceptedTermsAndPrivacy: true, acceptedAt: new Date() },
|
data: { acceptedTermsAndPrivacy: true, acceptedAt: new Date() },
|
||||||
});
|
});
|
||||||
|
return { updated: result.count > 0 };
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import { userRepo } from "@/server/repositories/user.repo";
|
import { userRepo } from "@/server/repositories/user.repo";
|
||||||
import { tripRepo } from "@/server/repositories/trip.repo";
|
import { tripRepo } from "@/server/repositories/trip.repo";
|
||||||
import { participantRepo } from "@/server/repositories/participant.repo";
|
import { participantRepo } from "@/server/repositories/participant.repo";
|
||||||
|
import { organizerRepo } from "@/server/repositories/organizer.repo";
|
||||||
import { isPastTripLastDayForReview } from "@/lib/trip-dates";
|
import { isPastTripLastDayForReview } from "@/lib/trip-dates";
|
||||||
|
|
||||||
export const profileService = {
|
export const profileService = {
|
||||||
@@ -10,10 +11,12 @@ export const profileService = {
|
|||||||
throw new Error("Pengguna tidak ditemukan");
|
throw new Error("Pengguna tidak ditemukan");
|
||||||
}
|
}
|
||||||
|
|
||||||
const [organizedTrips, participations] = await Promise.all([
|
const [organizedTrips, participations, verification] = await Promise.all([
|
||||||
tripRepo.findByOrganizerId(userId),
|
tripRepo.findByOrganizerId(userId),
|
||||||
participantRepo.findWithTripForProfile(userId),
|
participantRepo.findWithTripForProfile(userId),
|
||||||
|
organizerRepo.findByUserId(userId),
|
||||||
]);
|
]);
|
||||||
|
const isVerifiedOrganizer = verification?.status === "APPROVED";
|
||||||
|
|
||||||
const activeJoined = participations
|
const activeJoined = participations
|
||||||
.filter((p) => p.status !== "CANCELLED")
|
.filter((p) => p.status !== "CANCELLED")
|
||||||
@@ -42,6 +45,7 @@ export const profileService = {
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
user,
|
user,
|
||||||
|
isVerifiedOrganizer,
|
||||||
organizedTrips,
|
organizedTrips,
|
||||||
activeJoined,
|
activeJoined,
|
||||||
cancelledJoined,
|
cancelledJoined,
|
||||||
|
|||||||
Reference in New Issue
Block a user