O Path Configuration

O Path Configuration é um recurso essencial para dar uma aparência nativa à aplicação Rails em plataformas como iOS e Android, com amplas possibilidades de uso.

Ele atua como a fonte central que define o comportamento da aplicação nativa para cada URL. A seguir, veremos casos práticos para ilustrar seu funcionamento.

Cenário: Navegação via modal

A navegação por modal é um recurso característico da plataforma iOS. Um exemplo está no aplicativo de contatos: ao clicar no botão adicionar (+), um modal aparece sobre a tela anterior, e ao fechá-lo, o usuário retorna à tela anterior.

Em aplicações Ruby on Rails em plataformas nativas, é comum que as actions new e edit utilizem a navegação no contexto modal.

Com o Path Configuration, a aplicação nativa é configurada para tratar URLs contendo /new ou /edit como navegações no contexto modal.

App nativa, caso você esteja acessando alguma URL que possui /new ou /edit, vamos utilizar a navegação no contexto modal.

Vamos implementar isso.

Adicionando o arquivo path-configuration.json

Agora, vamos implementar as primeiras alterações no PathConfiguration. Na árvore de arquivos do projeto, clique com o botão direito, selecione New Empty File e nomeie o arquivo como path-configuration.json. Em seguida, insira o seguinte conteúdo:

{  
  "settings": {},  
  "rules": [    
    { 
      "patterns": [ ".*" ],      
      "properties": {        
         "context": "default",        
         "pull_to_refresh_enabled": true      
       }    
    },    
    {      
      "patterns": [ "/new$", "/edit$" ],
      "properties": { 
        "context": "modal",
        "pull_to_refresh_enabled": false      
       }    
    }  
  ]
}

Configurando o AppDelegate com o PathConfiguration

Na versão 1.1.0 do Hotwire Native, é necessário ajustar o AppDelegate para especificar a localização do arquivo path-configuration.json. Insira a configuração a seguir na função application:

import HotwireNative

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

  // A aplicação é configurada para localizar o arquivo JSON.
  Hotwire.loadPathConfiguration(from: [
    .file(Bundle.main.url(forResource: "path-configuration", withExtension: "json")!)
  ])

  return true
}

Execute a aplicação com Command + R. Após o carregamento, navegue até URLs e clique em New URL. As telas a seguir serão exibidas:

screens.png

Ao clicar em New URL, um modal é exibido, criando uma experiência mais nativa e aprimorando a usabilidade. O Path Configuration oferece diversas possibilidades, como ocultar a Navbar ou StatusBar, ajustar Modais conforme necessário, ou desativar a navegação em stack, padrão no iOS.