Veículos
Lista de veículos cadastrados na empresa com busca por placa ou modelo, cache offline e migração completa para API v1. Distinto do Grid de Viagens (/ui/grid/), que lista viagens — este módulo lista os veículos em si.
/ui/vehicles/ contém um GridFragment e um GridViewModel — classes com o mesmo nome do módulo Grid de Viagens (/ui/grid/). Diferenciar pelo pacote ao navegar no código.
Fluxo de Carregamento
Verifica conectividade (delay de 1 segundo)
Se há rede, chama gridView.searchVehicleV1(jwt_token) e mostra skeleton loading.
Com rede — API v1
GET /v1/vehicles com Bearer JWT. Resposta desempacotada de { "data": [...] }. Salva resultado em cache.
Sem rede — cache local
Carrega ArrayList<VehiclesData> de SharedPreferences("vehicles_cache"), chave "vehicles".
Busca Local
O SearchView filtra em tempo real por placa ou modelo (case-insensitive). Ao não encontrar nenhum resultado, exibe um Toast "No Data Found". A busca opera sobre a lista completa em memória sem nova chamada à API.
Modelo de Dados
data class VehiclesData(
val id: String,
val plate: String, // placa do veículo
val model: String, // modelo ("null" → convertido para "")
val color: String,
val owner: String, // proprietário (campo "owner_name" na API v1)
val renavan: String, // campo "renavam" na API v1
val chassi: String // campo "chassis" na API v1
)
Mapeamento de Campos (Legado → v1)
| Campo legado | Campo v1 | Notas |
|---|---|---|
placa | plate | |
_id | id | |
modelo | model | Se retornar "null" (string), converter para "" |
cor | color | |
proprietario_nome | owner_name | |
renavan | renavam | Diferença de grafia entre APIs |
chassi | chassis |
Endpoint
https://api.monisystem.com/v1/vehicles
Authorization: Bearer {jwt_token}) + header X-Client-Info com protocolo do cliente. Timeout: 30s para connect, read e write.
GET https://api.monisat.online/allVehicles/{company_id} com campos em português. Ainda presente no código como fetchDataFromApi() mas não é chamado na versão atual (comentado).
Cache Offline
| SharedPreferences | Chave | Conteúdo |
|---|---|---|
vehicles_cache | vehicles | JSON serializado de ArrayList<VehiclesData> via Gson |
jwt_tokens | jwt_token | Bearer JWT para chamadas v1 |
Header X-Client-Info
Todas as chamadas v1 do GridViewModel incluem o header X-Client-Info gerado por ClientInfo.getProtocolHeader(). Esse header identifica a versão do cliente e plataforma para o backend.