-
Notifications
You must be signed in to change notification settings - Fork 129
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* feat: add form to collect subscription data * feat: add form to collect subscription data * WIP: add ember-phone-input * feat: add not loggedin and subscribed screen and integreate API * feat: fixing bug * fix: bug to show form even if user is already subscribed * fix: urls * fix: urls * fix: urls * delete: service subscribe test * fix: resolve comments * Update app/components/header.hbs Co-authored-by: Mehul Kiran Chaudhari <[email protected]> * fix: comments and remove modal * fix: phone number input * fix: content change * fix: remove card * fix: remove comments * fix:subscribe message --------- Co-authored-by: Vinit khandal <[email protected]> Co-authored-by: Mehul Kiran Chaudhari <[email protected]>
- Loading branch information
1 parent
1bb3076
commit 9fb0f2c
Showing
14 changed files
with
455 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,99 @@ | ||
import Controller from '@ember/controller'; | ||
import { tracked } from '@glimmer/tracking'; | ||
import { action } from '@ember/object'; | ||
import { inject as service } from '@ember/service'; | ||
import { RDS_TWITTER, APPS } from '../constants/urls'; | ||
import { TOAST_OPTIONS } from '../constants/toast-options'; | ||
|
||
export default class SubscribeController extends Controller { | ||
@service login; | ||
@tracked isFormOpen = false; | ||
@tracked email = ''; | ||
@tracked phone = ''; | ||
@tracked userData = null; | ||
@tracked isLoading = false; | ||
@tracked showSubscribedMessage = false; | ||
|
||
RDS_TWITTER = RDS_TWITTER; | ||
|
||
constructor() { | ||
super(...arguments); | ||
this.userData = this.login.userData; | ||
} | ||
|
||
get isLoggedIn() { | ||
return this.login.isLoggedIn; | ||
} | ||
|
||
get isSubscribed() { | ||
return this.login.userData.isSubscribed; | ||
} | ||
|
||
get isSubmitDisabled() { | ||
return !this.email || (this.phone && !/^\+?\d*$/.test(this.phone)); | ||
} | ||
|
||
@action | ||
toggleFormModal() { | ||
this.isFormOpen = !this.isFormOpen; | ||
} | ||
|
||
@action | ||
updateEmail(event) { | ||
this.email = event.target.value; | ||
} | ||
|
||
@action | ||
updatePhone(event) { | ||
const input = event.target.value; | ||
const isValidPhone = /^\+?\d*$/.test(input); | ||
if (isValidPhone) { | ||
this.phone = input; | ||
} | ||
} | ||
|
||
@action | ||
async handleSubmit(event) { | ||
event.preventDefault(); | ||
if (!this.isSubmitDisabled) { | ||
this.isLoading = true; | ||
try { | ||
const url = `${APPS.API_BACKEND}/subscription?dev=true`; | ||
const response = await fetch(url, { | ||
method: 'POST', | ||
body: JSON.stringify({ | ||
email: this.email, | ||
phoneNumber: this.phone, | ||
}), | ||
headers: { | ||
'Content-Type': 'application/json', | ||
}, | ||
credentials: 'include', | ||
}); | ||
if (!response.ok) { | ||
this.toast.error( | ||
'Something went wrong. Please try again.', | ||
'', | ||
TOAST_OPTIONS, | ||
); | ||
} else { | ||
this.login.userData.isSubscribed = true; | ||
this.isFormOpen = false; | ||
this.showSubscribedMessage = true; | ||
this.toast.info('🎉 You are already subscribed!', '', TOAST_OPTIONS); | ||
} | ||
} catch (error) { | ||
console.log(error); | ||
this.toast.error( | ||
`Something went wrong. ${error.message}`, | ||
'', | ||
TOAST_OPTIONS, | ||
); | ||
} finally { | ||
this.isLoading = false; | ||
} | ||
this.email = ''; | ||
this.phone = ''; | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
import Route from '@ember/routing/route'; | ||
|
||
export default class SubscribeRoute extends Route {} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
.phone-input { | ||
display: flex; | ||
align-items: center; | ||
margin-bottom: 10px; | ||
} | ||
|
||
.country-code-select { | ||
margin-right: 10px; | ||
} | ||
|
||
.phone-number-input { | ||
flex-grow: 1; | ||
} | ||
|
||
.phone-input select, | ||
.phone-input input[type="tel"] { | ||
width: 100%; | ||
padding: 5px; | ||
} | ||
|
||
button { | ||
padding: 5px 10px; | ||
} |
Oops, something went wrong.