feat: adicionar suporte a deep links para filamentos e corrigir nomes de parâmetros na API de autenticação

This commit is contained in:
2026-03-14 21:37:47 -03:00
parent 2ae6a195bb
commit 3689083e55
4 changed files with 25 additions and 3 deletions
+21
View File
@@ -88,6 +88,8 @@ mobile/
│ │ ├── verify-email.tsx ← RU-0
│ │ ├── reset-password.tsx ← 117-0
│ │ └── password-reset-done.tsx ← 135-0
│ ├── filament/
│ │ └── [id].tsx ← Deep link handler: redireciona meowspool://filament/{id} → /(app)/inventory/{id}
│ └── (app)/
│ ├── _layout.tsx ← Stack autenticado
│ ├── (tabs)/
@@ -222,6 +224,7 @@ Arquivo: `src/shared/theme.ts`
- Scheme: `meowspool://`
- Filamento: `meowspool://filament/<id>``/(app)/inventory/<id>` (singular, alinhado com backend)
- O redirecionamento é feito pela rota `app/filament/[id].tsx` com `<Redirect>` do expo-router — garante que o deep link abrido externamente (QR Code, NFC, link compartilhado) sempre chegue na tela correta
- O scanner (`scanner.tsx`) faz match via `/meowspool:\/\/filament\/([^/]+)/` e navega para `/(app)/inventory/<id>`
- O QR Code de cada filamento exibe `meowspool://filament/<id>` usando `react-native-qrcode-svg`
- As tags NFC NTAG215 gravam a mesma URI `meowspool://filament/<id>` como NDEF URI record — mesmo deep link, infraestrutura compartilhada
@@ -361,6 +364,24 @@ Base: `EXPO_PUBLIC_API_URL` (padrão: `http://localhost:3000/api/v1`)
## Mudanças Recentes (14/03/2026)
### ✅ Deep Link Handler — `app/filament/[id].tsx`
Criada rota `app/filament/[id].tsx` para tratar deep links abertos externamente (QR Code, NFC, mensagem compartilhada). Sem essa rota, o expo-router exibia "Unmatched Route" ao abrir `meowspool://filament/{id}` fora do app.
```tsx
import { Redirect, useLocalSearchParams } from 'expo-router';
export default function FilamentDeepLink() {
const { id } = useLocalSearchParams<{ id: string }>();
return <Redirect href={`/(app)/inventory/${id}` as never} />;
}
```
O redirecionamento leva para `/(app)/inventory/[id]` (tela de detalhe), que já lida com usuário não autenticado via o guard do `_layout.tsx` raiz.
---
### ✅ Suporte a Impressoras Pequenas — Niimbot D11/D110 (`label.tsx`)
**Arquivo alterado**: `app/(app)/filaments/[id]/label.tsx`