moneylog
moneylog copied to clipboard
Google Drive: usuário deve selecionar pasta ou arquivos?
Estou num dilema.
Para poder usar o MoneyLog com o Google Drive, o usuário precisa informar onde está o seu arquivo .txt
com os lançamentos lá no seu Drive. Para isso uso o File Picker oficial do Google.
O fluxo é simples: o usuário concede acesso ao seu Drive, o File Picker aparece, o usuário escolhe o arquivo txt, o MoneyLog carrega os dados desse txt. Funciona.
Este, porém, é o caso de uso mais simples, com somente um único arquivo txt. Mas pode ter mais:
- também pode ser mais de um arquivo
.txt
(atualmente eu uso 19) - também pode ter um arquivo
config.js
com configurações - também pode ter outros arquivos JavaScript com plugins
Nesse caso, basta configurar o File Picker para aceitar selecionar múltiplos arquivos, então o usuário escolhe o que quer carregar. Isso funciona no desktop, mas não no mobile :(
Uma alternativa melhor é pedir pra ele escolher uma pasta e dali dentro vou carregar no MoneyLog todos os .txt
e .js
que eu encontrar. Parece a melhor solução, não?
Cheguei a implementar das duas maneiras. Primeiro escolhendo múltiplos arquivos, depois uma pasta. Veja o PR #23, que introduziu a mudança de ler a pasta.
Meu dilema é...
Meu problema é que são preciso diferentes níveis de acesso aos arquivos do cara para que funcione cada uma das alternativas. Isso influencia naquela janelinha que abre quando você usa o app pela primeira vez ele vai dizer:
- MoneyLog quer acessar todos os arquivos que você abrir com ele :+1:
scope = https://www.googleapis.com/auth/drive.file
ou
- MoneyLog quer acessar (somente leitura) todos os arquivos de seu Drive :-1:
scope = https://www.googleapis.com/auth/drive.readonly
Não quero ter acesso a todo o drive do cara, mas sem isso, não posso ler o conteúdo de uma pasta escolhida pelo File Picker :(
Por outro lado também acho um baita problema não funcionar no mobile, sendo que seria meu caso de uso mais comum.
E agora?
-
Se escolher múltiplos arquivos: menos prático, não funciona no mobile, acesso restrito aos arquivos escolhidos.
-
Se escolher uma pasta: mais prático, funciona no mobile, acesso global (somente leitura) a todo o Drive do usuário
Não sei o que fazer. Usuários, me ajudem a escolher. Preciso escolher um, não quero dar manutenção em ambos.
Sugestões de outras alternativas também são bem-vindas.
Qual versão da API você está usando? Se não me engano, nas mais recentes o usuário não vê requisição de permissões ao instalar o app, somente quando o app vai de fato usar aqueles recursos o usuário vê uma telinha pedindo permissão. O que eu estou vendo algumas pessoas fazerem é criar uma tela no app que avisa o usuário que ele vai pedir permissão para alguma coisa e explica como essa permissão vai ser usada antes mesmo de o usuário ver a telinha do google pedindo efetivamente a permissão. Eu acho que o jeito é pedir a permissão mais geral.
@aureliojargas talvez uma opção ainda mais simples: carregar por padrão uma pasta x
, aí o user não precisa escolher nada :D
@caarlos0: carregar por padrão uma pasta x
Pois é, eliminaria um popup, mas engessa pro usuário, que é obrigado a criar a pasta com o nome que eu quiser, na raiz do Drive dele. Eu mesmo ficaria puto com esse requisito, pois minha pasta do MoneyLog tem nome bizarro e não está na raiz 😁
Se eu deixar o usuário configurar qual será essa pasta, aí terei que manter configs do usuário dentro do App Data folder do Drive, aí é mais um bichinho pra eu dar manutenção :/
O Dropbox tem uma solução melhor pro dev nesse caso, pois ele cria uma pasta para cada app dentro da pasta Apps
e, ao contrário do App Data folder do Drive, deixa o usuário ver/editar estes arquivos.
@alinepegas criar uma tela no app que avisa o usuário que ele vai pedir permissão para alguma coisa e explica como essa permissão vai ser usada antes mesmo de o usuário ver a telinha do google pedindo efetivamente a permissão
É, se eu partir pra permissão mais abrangente, terei que fazer algo assim, pra ficar claro os porquês. Chato isso :/
Voto também pelo mecanismo de "engessar" a pasta que o usuário deve criar se quiser usar a versão no Drive. Caso ele não queira, é só usar a versão offline... simples.
A outra vantagem é que não necessitará acesso global (ainda Read only) ao Drive dos usuários.
Pede acesso à pasta pra funcionar no mobile ;)
@FFSFFS A outra vantagem é que não necessitará acesso global (ainda Read only) ao Drive dos usuários.
Não achei como solicitar acesso a uma pasta específica somente :(
Pelo menos não da maneira que uso ele, que é disparando a requisição à partir do MoneyLog, em vez de ser à partir do Drive do cara (selecionar a pasta e escolher "Abrir com MoneyLog").
@watter Pede acesso à pasta pra funcionar no mobile ;)
Pois é, sem funcionar no mobile é meio complicado em 2018, né?
E se ao invés disso você pedir um arquivo .zip? Aí o usuário pode jogar todos os arquivos relevantes dele num zip e você só precisa solicitar acesso a um arquivo.
@alinepegas E se ao invés disso você pedir um arquivo .zip?
Aí não fica prático, o cara teria que zipar após cada edição nos arquivos txt (que continua sendo feita fora do MoneyLog, no editor preferido de cada um).
No PR #26 implementei uma solução mista:
-
Tenta achar uma pasta chamada
MoneyLog
(case insensitive) na raiz do Google Drive do usuário. Se encontrar, já carrega tudo dali de dentro e pronto, nem mostra o Picker. -
Se não achar a pasta, aí então carrega o Picker pro usuário indicar onde fica a pasta do MoneyLog.
O bom é que assim fica prático pra quem decidir seguir a convenção da pasta padrão, vai carregar tudo automático. Também não irá carregar a API do Picker sem necessidade, pois ela só é carregada quando a pasta padrão não é encontrada.
Quem não quiser seguir a convenção, tudo bem, só terá o passo adicional de indicar a pasta no início da sessão, depois é funcionamento normal.
Tudo isso funcional no mobile também.
O lado negativo é que requer a permissão drive.readonly
, para todo o Drive do usuário. Vou documentar o porquê dessa permissão e colocar link direto pro código-fonte, caso ele queira inspecionar antes de aceitar.
Que tal essa solução, :+1: ou :-1:?
Olá Verde!
Acho que deveria ser automático, já inclusive criando a pasta também, ainda que no raiz. E nas configs voce permitiria alterar isso. Hoje as pessoas estão preferindo, na maioria a praticidade, mesmo que a permissão pedida permita terríveis atrocidades. ;)
Lyma.
@lyma já inclusive criando a pasta também
Mmmmm, mas só a pasta vazia não serve, o cara tem que colocar os txt ali dentro. A princípio, não quero transformar o MoneyLog num app de edição, ele é somente um visualizador de relatórios. A edição dos dados permanece a cargo do usuário em seu editor de textos preferido. E pra isso, ele tem que saber onde estão esses txt. Então ele que crie a pasta, manualmente, pra lembrar bem onde ela fica 😄
@aureliojargas Sim, 2018 sem mobile complica. Só uma perguntinha: como uso o moneylog a partir do google-drive? Só colocar os arquivos na pasta ~/moneylog e abrir no Chrome ?? Abraço
@watter isso, cria a pasta MoneyLog no raiz do teu Google Drive e acessa a URL (ainda não divulgada 😄) da versão online: https://moneylog.aurelio.net
@aureliojargas tomara que adicione a função de editar no próprio navegador. Era tão prático no Cloud com dropbox
Tentei editar o arquivo moneylog.txt no google docs, mas eu vi que o Google cria um "novo" arquivo moneylog.txt feito pelo gdocs e o MoneyLog não consegue abrir =/