feature request: migrate deepLinking saga from JavaScript to TypeScript

Abierto
#7,090 2 comentarios 1 reacción 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
55/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Tranquilo
Stack tecnológico
react-native, typescript
Área
mobile

Línea de trabajo

Empieza leyendo app/sagas/deepLinking.js y comparándolo con los sagas, acciones y utilidades de TypeScript ya migrados en el pipeline de navegación y deep-linking. Revisa navigate(), handleOpen(), handleOAuth() y handleInviteLink(), junto con el mapeo de roomTypes y el uso de los parámetros de deep-link. La tarea se considera completada cuando este saga esté en TypeScript y tenga parámetros tipados, retornos de generadores, mapeos y una interfaz IDeepLinkParams que cubra los flujos indicados.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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.

Lenguaje dominante
TypeScript
Estrellas
2.4k
Forks
1.5k
Merge medio
1 d 15 h
PR fusionados (30 d)
29

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de RocketChat/Rocket.Chat.ReactNative

Todos los issues de RocketChat/Rocket.Chat.ReactNative

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.