Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: app submission edge cases (#4550) #833

Merged
merged 1 commit into from
Feb 6, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions shared-helpers/src/locales/ar.json
Original file line number Diff line number Diff line change
Expand Up @@ -574,6 +574,7 @@
"listings.annualIncome": "٪ {الدخل} في السنة",
"listings.annualIncomeRange": "٪ {from} إلى٪ {to} سنويًا",
"listings.applicationAddress": "تبوك",
"listings.applicationAlreadySubmitted": "لقد تم تقديم هذا الطلب بالفعل.",
"listings.applicationDeadline": "تاريخ استحقاق الطلب",
"listings.applicationDropOffQuestion": "هل يمكن إسقاط الطلبات؟",
"listings.applicationDueTime": "وقت التقديم",
Expand Down
1 change: 1 addition & 0 deletions shared-helpers/src/locales/bn.json
Original file line number Diff line number Diff line change
Expand Up @@ -570,6 +570,7 @@
"listings.annualIncome": "%{আয়} প্রতি বছর",
"listings.annualIncomeRange": "%{থেকে} থেকে %{থেকে} প্রতি বছর",
"listings.applicationAddress": "ঠিকানা",
"listings.applicationAlreadySubmitted": "এই আবেদনটি ইতিমধ্যেই জমা দেওয়া হয়েছে।",
"listings.applicationDeadline": "আবেদনের শেষ তারিখ",
"listings.applicationDropOffQuestion": "আবেদন কি বাদ দেওয়া যাবে?",
"listings.applicationDueTime": "আবেদনের নির্ধারিত সময়",
Expand Down
3 changes: 2 additions & 1 deletion shared-helpers/src/locales/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -579,6 +579,7 @@
"listings.allUnits": "Todas las viviendas",
"listings.allUnitsReservedFor": "Todas las viviendas reservadas para %{type}",
"listings.annualIncome": "%{income} al año",
"listings.applicationAlreadySubmitted": "Ya ha enviado una solicitud para este listado.",
"listings.applicationDeadline": "Fecha límite de solicitud",
"listings.applicationFCFS": "Atención por orden de llegada",
"listings.applicationFee": "Cargo de solicitud",
Expand All @@ -587,7 +588,7 @@
"listings.applicationPerApplicantAgeDescription": "por solicitante de 18 años o más",
"listings.applications": "Solicitudes",
"listings.applicationsClosed": "Solicitudes cerradas",
"listings.applicationsClosedRedirect": "Esta lista ya no acepta solicitudes.",
"listings.applicationsClosedRedirect": "Esta solicitud ya ha sido enviada.",
"listings.apply.applicationWillBeAvailableOn": "La solicitud podrá ser descargada y recogida el %{openDate}",
"listings.apply.applyOnline": "Haga su solicitud por Internet",
"listings.apply.downloadApplication": "Descargar la Solicitud",
Expand Down
1 change: 1 addition & 0 deletions shared-helpers/src/locales/general.json
Original file line number Diff line number Diff line change
Expand Up @@ -570,6 +570,7 @@
"listings.allUnits": "All Units",
"listings.allUnitsReservedFor": "All units reserved for %{type}",
"listings.annualIncome": "%{income} per year",
"listings.applicationAlreadySubmitted": "This application has already been submitted.",
"listings.applicationDeadline": "Application Due Date",
"listings.applicationFCFS": "First Come First Serve",
"listings.applicationFee": "Application Fee",
Expand Down
3 changes: 2 additions & 1 deletion shared-helpers/src/locales/tl.json
Original file line number Diff line number Diff line change
Expand Up @@ -574,6 +574,7 @@
"listings.allUnits": "Lahat ng Unit",
"listings.allUnitsReservedFor": "Ang lahat ng unit ay nakareserba para sa %{type}",
"listings.annualIncome": "%{income} kada taon",
"listings.applicationAlreadySubmitted": "Nagsumite ka na ng aplikasyon para sa listahang ito.",
"listings.applicationDeadline": "Due Date ng Application",
"listings.applicationFCFS": "Kung Sino Ang Mauna Ay Siyang Makakakuha",
"listings.applicationFee": "Bayad sa Application",
Expand All @@ -582,7 +583,7 @@
"listings.applicationPerApplicantAgeDescription": "bawat aplikante na edad 18 at mas matanda",
"listings.applications": "Mga Application",
"listings.applicationsClosed": "Mga Isinarang Application",
"listings.applicationsClosedRedirect": "Ang listahang ito ay hindi na tumatanggap ng mga aplikasyon.",
"listings.applicationsClosedRedirect": "Naisumite na ang application na ito.",
"listings.apply.applicationWillBeAvailableOn": "Magiging available ang application para i-download at kunin sa %{openDate}",
"listings.apply.applyOnline": "Mag-apply Online",
"listings.apply.downloadApplication": "I-download ang Application",
Expand Down
3 changes: 2 additions & 1 deletion shared-helpers/src/locales/vi.json
Original file line number Diff line number Diff line change
Expand Up @@ -575,6 +575,7 @@
"listings.allUnits": "Tất cả các Căn nhà",
"listings.allUnitsReservedFor": "Tất cả các căn nhà được dành cho %{type}",
"listings.annualIncome": "%{income} mỗi năm",
"listings.applicationAlreadySubmitted": "Bạn đã nộp đơn đăng ký cho danh sách này.",
"listings.applicationDeadline": "Hạn nộp Đơn ghi danh",
"listings.applicationFCFS": "Ai Nộp đơn Trước Được Nhận trước",
"listings.applicationFee": "Lệ phí Ghi danh",
Expand All @@ -583,7 +584,7 @@
"listings.applicationPerApplicantAgeDescription": "mỗi ứng viên từ 18 tuổi trở lên",
"listings.applications": "Đơn đăng ký",
"listings.applicationsClosed": "Ngừng nhận Đơn ghi danh",
"listings.applicationsClosedRedirect": "Danh sách này không còn chấp nhận các ứng dụng.",
"listings.applicationsClosedRedirect": "Đơn này đã được nộp rồi.",
"listings.apply.applicationWillBeAvailableOn": "Đơn ghi danh sẽ có sẵn để tải xuống và tới nhận vào %{openDate}",
"listings.apply.applyOnline": "Ghi danh Trực tuyến",
"listings.apply.downloadApplication": "Tải xuống Đơn ghi danh",
Expand Down
3 changes: 2 additions & 1 deletion shared-helpers/src/locales/zh.json
Original file line number Diff line number Diff line change
Expand Up @@ -575,6 +575,7 @@
"listings.allUnits": "所有單位",
"listings.allUnitsReservedFor": "保留給 %{type} 的所有單位",
"listings.annualIncome": "每年 %{income}",
"listings.applicationAlreadySubmitted": "您已經提交了此清單的申請。",
"listings.applicationDeadline": "申請截止日期",
"listings.applicationFCFS": "先申請先服務",
"listings.applicationFee": "申請費",
Expand All @@ -583,7 +584,7 @@
"listings.applicationPerApplicantAgeDescription": "每位年滿 18 歲的申請人",
"listings.applications": "申請",
"listings.applicationsClosed": "申請期限已經結束",
"listings.applicationsClosedRedirect": "此房源不再接受申请。",
"listings.applicationsClosedRedirect": "此申請已經提交。",
"listings.apply.applicationWillBeAvailableOn": "申請表將可供下載,亦可在 %{openDate} 領取",
"listings.apply.applyOnline": "線上申請",
"listings.apply.downloadApplication": "下載申請表",
Expand Down
91 changes: 53 additions & 38 deletions sites/public/src/pages/applications/review/terms.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import {
pushGtmEvent,
AuthContext,
listingSectionQuestions,
useToastyRef,
} from "@bloom-housing/shared-helpers"
import FormsLayout from "../../../layouts/forms"
import { useFormConductor } from "../../../lib/hooks"
Expand All @@ -27,6 +28,7 @@ const ApplicationTerms = () => {
const router = useRouter()
const { conductor, application, listing } = useFormConductor("terms")
const { applicationsService, profile } = useContext(AuthContext)
const toastyRef = useToastyRef()
const [apiError, setApiError] = useState(false)
const [submitting, setSubmitting] = useState(false)

Expand All @@ -42,47 +44,50 @@ const ApplicationTerms = () => {
// eslint-disable-next-line @typescript-eslint/unbound-method
const { register, handleSubmit, errors } = useForm()
const onSubmit = (data) => {
setSubmitting(true)
const acceptedTerms = data.agree === "agree"
conductor.currentStep.save({ acceptedTerms })
application.acceptedTerms = acceptedTerms
application.completedSections = 6
// blocks multiple clicks and previously submitted applications
if (!submitting && !application.confirmationCode) {
setSubmitting(true)
const acceptedTerms = data.agree === "agree"
conductor.currentStep.save({ acceptedTerms })
application.acceptedTerms = acceptedTerms
application.completedSections = 6

if (application?.programs?.length) {
untranslateMultiselectQuestion(application.programs, listing)
}
if (application?.preferences?.length) {
untranslateMultiselectQuestion(application.preferences, listing)
}
if (application?.programs?.length) {
untranslateMultiselectQuestion(application.programs, listing)
}
if (application?.preferences?.length) {
untranslateMultiselectQuestion(application.preferences, listing)
}

applicationsService
.submit({
body: {
...application,
reviewStatus: ApplicationReviewStatusEnum.pending,
listings: {
id: listing.id,
},
appUrl: window.location.origin,
...(profile && {
user: {
id: profile.id,
applicationsService
.submit({
body: {
...application,
reviewStatus: ApplicationReviewStatusEnum.pending,
listings: {
id: listing.id,
},
}),
// TODO remove this once this call is changed to the new backend
},
})
.then((result) => {
conductor.currentStep.save({ confirmationCode: result.confirmationCode })
return router.push("/applications/review/confirmation")
})
.catch((err) => {
setSubmitting(false)
setApiError(true)
window.scrollTo(0, 0)
console.error(`Error creating application: ${err}`)
throw err
})
appUrl: window.location.origin,
...(profile && {
user: {
id: profile.id,
},
}),
// TODO remove this once this call is changed to the new backend
},
})
.then((result) => {
conductor.currentStep.save({ confirmationCode: result.confirmationCode })
return router.push("/applications/review/confirmation")
})
.catch((err) => {
setSubmitting(false)
setApiError(true)
window.scrollTo(0, 0)
console.error(`Error creating application: ${err}`)
throw err
})
}
}

const agreeField = [
Expand Down Expand Up @@ -111,6 +116,16 @@ const ApplicationTerms = () => {
}
}, [listing])

useEffect(() => {
if (application.confirmationCode && router.isReady) {
const { addToast } = toastyRef.current
addToast(t("listings.applicationAlreadySubmitted"), { variant: "alert" })
profile
? void router.push(`/${router.locale}/account/applications`)
: void router.push(`/${router.locale}/listing/${listing.id}/${listing.urlSlug}`)
}
}, [application, listing, profile, router, toastyRef])

useEffect(() => {
pushGtmEvent<PageView>({
event: "pageView",
Expand Down
Loading