code-corps / code-corps/code-corps-ember
Add route to fulfill invites
- Lenguaje dominante
- JavaScript
- Estrellas
- 120
- Forks
- 75
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción
# Problem
We need a route (at a path to be decided on here) which will be used to claim a user invite
## Subtasks
- [ ] Decide on path for the route through discussion in this issue
- [ ] Add route to app
- [ ] Loads invite, has a 404/not_found substate
- [ ] Displays different informational UI depending on the invite being for a project or just a plain invite
- [ ] Displays form UI for user account creation - mostly the same as the signup form
- [ ] When creating the user, add invite ID to the new user payload
- [ ] Write acceptance test for success case for a plain invite
- [ ] Write acceptance test for success case for a project invite
- [ ] Write fail case for an invite not found
- [ ] Write any integration tests for components added as part of the solution
## Notes
### How to specify an invite id
- We could add the invite id as a virtual attribute and push it as part of the payload. Would require a virtual attribute API side as well
- We could ad a `hasMany('claimed-invites')` to the user model, since the API already has it, then push the loaded invite into the association and save that way. Should end as `claimed_invite_ids` on the API, but would require rewriting our API approach slightly
- My prefered approach
- save a plain user, but when calling save, specify `user.save({ inviteId: userInvite.id })`
- modify user adapter by overriding
```Javascript
urlForCreateRecord(modelName, snapshot) {
if (snapshot.inviteId) {
return this._super(...arguments) + `?invite_id=${snapshot.inviteId}`
} else {
return this._super(...arguments);
}
}
```
This way, we keep the create "switch" separate from the create attributes, since it becomes a query param. At the same time, the API should keep working.
## References
Requires code-corps/code-corps-api#1351 merged, but can be worked on using mirage in the interim.
Guía de contribución
Línea de trabajo
Empieza resolviendo la ruta en este issue y, después, inspecciona el formulario de signup existente, el enrutamiento de la app y el adaptador de usuario. Usa Mirage mientras la dependencia de la API esté pendiente. Se considera terminado cuando la ruta gestiona invitaciones inexistentes, simples y de proyecto, crea el usuario con el ID de la invitación y cuenta con cobertura de acceptance e integración para los casos indicados.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- javascript
- Área
- authentication, frontend
- Tipo de issue
- Nueva funcionalidad
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Estado de actividad
- Estancado
- Claridad
- Necesita aclaración
- Aptitud para principiantes
- 25/100