feature request: migrate deepLinking saga from JavaScript to TypeScript

Aperta
#7,090 2 commenti 1 reazione 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
55/100
Tipo di issue
Funzionalità
Chiarezza
Abbastanza chiara
Stato di attività
Tranquilla
Stack tecnologico
react-native, typescript
Ambito
mobile

Direzione di ricerca

Inizia leggendo app/sagas/deepLinking.js e confrontandolo con le saghe, le azioni e le utility TypeScript già migrate nella pipeline di navigazione e deep-linking. Esamina navigate(), handleOpen(), handleOAuth() e handleInviteLink(), insieme al mapping roomTypes e all’uso dei parametri di deep-link. Il lavoro è completato quando questa saga è in TypeScript e include parametri tipizzati, valori restituiti dai generatori, mapping e un’interfaccia IDeepLinkParams che copra i flussi elencati.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

type: feature
Feature Description

app/sagas/deepLinking.js is the only saga in the codebase still written in plain JavaScript. Every other saga, action, and utility in the navigation and deep-linking pipeline has already been migrated to TypeScript — but this file was left behind.

This means the most critical routing saga in the app — handling all deep links, push notification routing, server switching, OAuth, and share extension flows — has zero type safety.

Specific gaps:

  • params.type, params.rid, params.host, params.path are all untyped
  • roomTypes mapping object has no typed keys or values
  • Generator functions navigate(), handleOpen(), handleOAuth(), handleInviteLink() have no typed parameters or return types
  • Errors from passing the wrong params shape are silently swallowed at runtime
Motivation and Use Case
  • Runtime errors in deep link / push notification routing become invisible until they reach users
  • Makes it harder to safely refactor navigation structure — any change to this file can't be validated by the compiler
  • Inconsistent with the rest of the codebase which is fully typed
  • Adding a typed IDeepLinkParams interface will immediately surface any misuse at compile time
Additional Context

This file is directly involved in push notification routing and deep link handling. Having it typed will make future navigation work (e.g. any navigation restructuring) safer and compiler-validated.

Lingua principale
TypeScript
Stelle
2.4k
Fork
1.5k
Merge medio
1g 15h
PR unite (30g)
29

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di RocketChat/Rocket.Chat.ReactNative

Tutte le issue di RocketChat/Rocket.Chat.ReactNative

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.