code-corps / code-corps/code-corps-ember

Add route to fulfill invites

Abierto
#1,679 0 comentarios 0 reacciones 0 asignados Ver en GitHub
needs clarification Time: 4 hours
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

Abrir la 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

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.