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

Add route to fulfill invites

Offen
#1,679 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
needs clarification Time: 4 hours
Vorherrschende Sprache
JavaScript
Sterne
120
Forks
75
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

# 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.

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginnen Sie damit, den Routenpfad in diesem Issue zu ermitteln, und untersuchen Sie anschließend das vorhandene Signup-Formular, das App-Routing und den User-Adapter. Verwenden Sie Mirage, solange die API-Abhängigkeit noch aussteht. Als erledigt gilt die Aufgabe, wenn die Route fehlende, einfache und Projekt-Einladungen verarbeitet, den User mit der Invite-ID erstellt und Acceptance- sowie Integration-Coverage für die aufgeführten Fälle vorhanden ist.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
javascript
Bereich
authentication, frontend
Issue-Typ
Feature
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
25/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.