diff --git a/webapp/package-lock.json b/webapp/package-lock.json index 6630492..fd8df01 100644 --- a/webapp/package-lock.json +++ b/webapp/package-lock.json @@ -17,6 +17,7 @@ "pinia": "^2.3.0", "vue": "^3.4.29", "vue-router": "^4.3.3", + "vue-turnstile": "^1.0.11", "vuetify": "^3.7.2" }, "devDependencies": { @@ -2181,6 +2182,15 @@ "typescript": ">=5.0.0" } }, + "node_modules/vue-turnstile": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/vue-turnstile/-/vue-turnstile-1.0.11.tgz", + "integrity": "sha512-iaTBoZ5oUqtNRto6bmbn6FQvW0h/sK7mPUJc1Qn4em+cELXN59U2FQTcpWfKssV3OY6lEZzmCpcn/zrb7htK3A==", + "license": "MIT", + "peerDependencies": { + "vue": "^3.2.45" + } + }, "node_modules/vuetify": { "version": "3.11.2", "resolved": "https://registry.npmjs.org/vuetify/-/vuetify-3.11.2.tgz", diff --git a/webapp/package.json b/webapp/package.json index a917be8..9013819 100644 --- a/webapp/package.json +++ b/webapp/package.json @@ -21,6 +21,7 @@ "pinia": "^2.3.0", "vue": "^3.4.29", "vue-router": "^4.3.3", + "vue-turnstile": "^1.0.11", "vuetify": "^3.7.2" }, "devDependencies": { diff --git a/webapp/src/services/apiService.ts b/webapp/src/services/apiService.ts index c46e0f0..2d0247e 100644 --- a/webapp/src/services/apiService.ts +++ b/webapp/src/services/apiService.ts @@ -87,3 +87,17 @@ export const geocodeQuery = async (query: string) => { const result = (await apiService.get(`/geocode?query=${encodedQuery}`)).data; return result; } + +export interface ContactMessagePayload { + name: string; + email: string; + topic: string; + subject: string; + message: string; + turnstileToken: string; +} + +export const postContactMessage = async (payload: ContactMessagePayload) => { + const response = await apiService.post("/contact/message", payload); + return response.data; +} diff --git a/webapp/src/views/ContactView.vue b/webapp/src/views/ContactView.vue index 677be62..6c82567 100644 --- a/webapp/src/views/ContactView.vue +++ b/webapp/src/views/ContactView.vue @@ -1,161 +1,256 @@ - - diff --git a/webapp/src/views/Press.vue b/webapp/src/views/Press.vue index a375d67..d33d4df 100644 --- a/webapp/src/views/Press.vue +++ b/webapp/src/views/Press.vue @@ -43,7 +43,7 @@

Contact Us

- For media inquiries and interview requests, send us an email at media@deflock.org. + For media inquiries and interview requests, send us an email using this form.