Skip to content

Commit 30029bd

Browse files
committed
refactor the registration flow and add async support
1 parent a03136e commit 30029bd

File tree

1 file changed

+43
-41
lines changed

1 file changed

+43
-41
lines changed

app/routes/public/role-invites.js

Lines changed: 43 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,53 @@
11
import Route from '@ember/routing/route';
22

33
export default Route.extend({
4-
beforeModel(transition) {
4+
async routingModel(payload, user, transition) {
5+
try {
6+
if (this.authManager.currentUser.email === user.email) {
7+
let invite = await this.loader.post('/role_invites/accept-invite', payload);
8+
if (invite.role === 'organiser' || invite.role === 'coorganizer') {
9+
this.transitionTo('events.view', invite.event);
10+
} else {
11+
this.transitionTo('public', invite.event);
12+
}
13+
} else {
14+
this.set('session.skipRedirectOnInvalidation', true);
15+
this.session.invalidate();
16+
this.transitionTo('register', {
17+
queryParams: {
18+
event : `${transition.resolvedModels.public.originalId}`,
19+
inviteToken : `${transition.to.queryParams.token}`,
20+
inviteEmail : `${user.email}`
21+
}
22+
});
23+
}
24+
} catch (e) {
25+
this.notify.error(this.l10n.t('An unexpected error has occurred'));
26+
console.warn(e);
27+
}
28+
},
29+
async beforeModel(transition) {
530
let payload = {
631
data: {
7-
token: transition.queryParams.token
32+
token: transition.to.queryParams.token
833
}
934
};
10-
this.loader
11-
.post('/role_invites/user', payload)
12-
.then(user => {
13-
if (this.get('session.isAuthenticated')) {
14-
if (this.get('authManager.currentUser.email') === user.email) {
15-
this.loader
16-
.post('/role_invites/accept-invite', payload)
17-
.then(invite => {
18-
this.transitionTo('events.view', invite.event);
19-
})
20-
.catch(e => {
21-
this.notify.error(this.l10n.t('An unexpected error has occurred'));
22-
console.warn(e);
23-
});
24-
} else {
25-
this.set('session.skipRedirectOnInvalidation', true);
26-
this.session.invalidate();
27-
this.transitionTo('register', {
28-
queryParams: {
29-
event : `${transition.params.public.event_id}`,
30-
inviteToken : `${transition.queryParams.token}`,
31-
inviteEmail : `${user.email}`
32-
}
33-
});
34-
35+
try {
36+
let user = await this.loader.post('/role_invites/user', payload);
37+
if (this.session.isAuthenticated) {
38+
this.routingModel(payload, user);
39+
} else {
40+
this.transitionTo('register', {
41+
queryParams: {
42+
event : `${transition.resolvedModels.public.originalId}`,
43+
inviteToken : `${transition.to.queryParams.token}`,
44+
inviteEmail : `${user.email}`
3545
}
36-
} else {
37-
this.transitionTo('register', {
38-
queryParams: {
39-
event : `${transition.params.public.event_id}`,
40-
inviteToken : `${transition.queryParams.token}`,
41-
inviteEmail : `${user.email}`
42-
}
43-
});
44-
}
45-
})
46-
.catch(e => {
47-
this.notify.error(this.l10n.t('An unexpected error has occurred'));
48-
console.warn(e);
49-
});
46+
});
47+
}
48+
} catch (e) {
49+
this.notify.error(this.l10n.t('An unexpected error has occurred'));
50+
console.warn(e);
51+
}
5052
}
5153
});

0 commit comments

Comments
 (0)