Ğecko: Nouveau client de paiements Ḡ1 sur mobile en cours de développement (Dart/Flutter)

Hum, peut-être qu’il faudrait deux «modes» différents. Un mode «legacy» et un mode «moderne». Afin que l’UX soit simple et cohérente dans chaque mode.

En tout cas on est d’accord que mélanger les deux en même temps imposerai une UX trop complexe et illisible.

On pourrait choisir son mode au démarrage de l’application, avec un mode «legacy» permettant d’utiliser des comptes normaux (y compris des comptes importés depuis format Cesium) et un mode «moderne» permettant de créer autant de comptes qu’on veut à partir d’un seul trousseau :slight_smile:

Ok je vais te faire une fonction d’import que je vais nommer « importLegacyWallet » :wink:

Oui tu as tout compris :slight_smile:

Tant que la sauvegarde des clés publiques est ure fonctionnalité optionnelle, qui informe correctement l’utilisateur sur les risques encourus, ça me va.

Tout ce qui affaibli la sécurité mais qui donne plus de confort devrait être des fonctionnalités nécessitant un opt-in de l’utilisateur, avec une popup de confirmation l’informant convenablement des risques.

Cela permet:

  1. D’avoir un client qui reste robuste niveau sécurité pour les utilisateurs qui le souhaitent
  2. De ne pas entamer la confiance en la monnaie en cas de vol de monnaie. En cas de vol, La responsabilité pourra être incombée aux fonctionnalités risquées activés par l’utilisateur et non à une «faille» dans la monnaie.

Il faudrait juste adapter la longueur du code secret selon que le compte est membre ou non. Je peux t’exposer un paramètre booléen isMember.
Je peux même faire la requête graphql coté Rust pour avoir l’info., il me faut juste savoir sur quel endpoint GVA me baser.

Alors de mon point de vue, s’inspirer du vocabulaire qu’on utilise usuellement sur le forum Duniter, qui est un forum technique, est ure très mauvaise idée quand on parle d’UX.

Le terme «trousseau» est un terme technique. C’est trop confusant pour l’utilisateur final qui ne fait l’expérience que d’une seule clé (celle que est publique) et qui ne comprend pas pourquoi on lui parle de trousseau de clés alors qu’il ne voit qu’une seule clé.

Le terme «compte» ne me semble pas adapté non plus. Car trop de sites utilisent déjà ce terme, pouvant faire penser à l’utilisateur qui découvre l’application qu’on s’y inscrit comme on s’inscrit sur n’importe-quel site.

Je pense que nous devons utiliser des termes non-confusant, dont la définition est raccord avec ce que perçoit l’utilisateur dans son expérience, mais à la fois pas trop vagues et pas trop déjà utilisées afin d’éviter que l’utilisateur ne découvre l’appli en mode pilote automatique.

Je propose donc d’utiliser les termes «portefeuille» et «portefeuille membre» :slight_smile:

1 Like

Pour ces mêmes raisons je pense que nous devrions bannir les termes «Identifiants» et «Mot de passe ».

Quant au terme «phrase de passe», ce n’est pas suffisamment clair, une phrase qui passe quoi ?

Il est plus clair de parler de «phrase de récupération» où «phrase de restauration».
Afin que le nom indique clairement à quoi ça sert pour l’utilisateur final.

Merci pour le tacle, on est habitué…Merci. Pfff.
Deux post d’affilé pour marteler une opinion montre une certaine frustration.

Je ne suis évidemment pas du tout d’accord avec tes propositions et tes critiques.

Bon je crée un sujet pour ne pas polluer, et j’attends plus les remarques de @kimamila et @poka.

Super ! :slight_smile:

Je songeais à faire cette vérification moi même au moment de l’import. SI tu vois un workflow valide côté Rust et que ait une certaine logique, ça me va :slight_smile:

Mais pour le endpoint, il y aura bien entendu un truc chiadé un terme au démarrage de gecko pour choisir un bon endpoint, donc je me baserais là dessus.
Pour le moment y’en a que 1 et c’est le tient ^^

Nouveau build 0.0.0+9

Détail de la version 0.0.0+9

Plusieurs améliorations ont été faites (voir détails), mais cette version a un bug: Vous ne pourrez pas voir vos wallets censés s’afficher dans votre liste de wallets après création. C’est simplement dû à l’UI qui ne se rafraîchie pas correctement, et aussi aux noms de wallets qui ne sont pas encore très bien identifiés (oui ça cumule 2 bugs lol).

Je l’ai tout de même publié car pour la prochaine release, j’ai décidé de refonder l’app pour améliorer le système de changement d’état de mes widgets Flutter (pour ceux que ça intéresse je vais passer aux paradigmes par provider, pour tout un tas de raisons, et de ne plus utiliser de Stateful widgets).

Ça me permettra de:

  • Extraire toute la partie logique de la partie vue (étonnant d’avoir une partie de la logique dans la vue, mais c’est le paradigme historique et par défaut d’une app Flutter) dans différents models
  • Gérer plus finement et beaucoup plus facilement les changements d’états de chaque élément UI.
  • Partir sur une codebase scalable, où je vais pouvoir construire tous le reste de l’app plus sereinement.

C’est juste que ça va me prendre un peu de temps, c’est nouveau pour moi, je vais devoir pas mal expérimenter avant, et devoir changer déjà énormément de choses dans Ḡecko.

Nouveau build 0.0.0+10

Détail de la version 0.0.0+10

Bon oubliez ce que je viens de dire dans mon poste précédent concernant le bug … C’est corrigé, je pouvais pas laisser un bug comme ça trainer, j’ai donc amélioré plusieurs choses.

Vous pouvez gérer votre wallet, des sécurités on aussi été apportés.
A part la vue mes portefeuille à refresh avec le petit bouton, je n’ai pas trouvé de bugs, dites moi si vous en trouvez.

Voilà peux me focus sur ma refonte par provider sereinement ^^

Je ne trouve plus le bouton pour générer un wallet (il est ni dans accueil ni dans Mes portefeuilles) :thinking:

Peux tu essayer cette version ?

effacé

Si tu as toujours des soucis, peux-tu m’envoyer un screenshot de ta page Mes portefeuilles stp ?

Laisse tomber je viens de me rendre compte d’un bug …

1 Like

Merci pour ton test, je n’aurais pas vue ce bug sinon.
Quand l’app est toute fraiche, le dossier wallet n’était pas créé, ce qui générait un crash de l’écran Mes portefeuille… C’est réparé normalement ici, tu peux me dire ?

Le bouton « Importer un portefeuille existant » ne fonctionne pas encore.
Le bouton changer de code secret dans les options de wallets une fois qu’il est créé ne fonctionne pas non plus, c’est normal.

A part tout est censé fonctionner.


Retenez bien vos codes secret vous en aurez besoin pour supprimer votre wallet désormais ^^

Sinon il faut erase les data de l’app dans les paramètres android.
Pour remédier à ce problème, je songe à proposer un bouton « Code secret oublié ? » qui permet de regénérer un dewif avec code secret à partir de la phrase de restauration.
Et sur cette page un autre bouton « Vous avez perdu votre phrase de restauration » qui balance un gros « Shame on You ! » …

Non je déconne, le dernier bouton proposerait de supprimer le portefeuille, en testant le solde, car il n’y a pas d’autre choix …

Sinon @elois, selon toi quels seraient les impacts en terme de sécurité si on décide que chaque wallet généré auraient le même code secret ? C’est à dire que le code secret serait un code master, paramétré au début et changeable, mais pour tout les wallets générés sur l’appareil ?


Vous pouvez créer autant de wallet que vous voulez, je fixerai une limite plus tard.


Astuce: Le temps de l’alpha/beta, j’ai caché une triche lors de la génération de wallet:

Lorsqu’il vous demande le mot de votre phrase de restauration, les bonnes réponses sont soit le mot demandé, soit « triche » lol.

C’est juste pour faciliter le debug …

Oui c’est bon…
par contre bouton “importer un portefeuille existant” ne fait rien, c’est normal ?

Oui c’est normal j’ai oublié de le préciser ^^

J’édite.

1 Like

Nouveau build:

  • Ajout de l’écran de changement du code secret
  • Quelques bug fix

Nouveau build:

Menu paramètres, possibilité de supprimer tous les wallets de l’appareil, le temps de l’alpha/beta.
Améliorations sur le thème.

Voilà je vais faire une pause quelques jours, puis je vais enfin attaquer les providers.

2 Likes

J’ai le plaisir d’annoncer la version 0.0.1+0:

Beaucoup de nouveautés:

  • Tous le « moteur » a bougé, comme je le disais j’ai changé de paradigme pour toutes les gestions d’états Flutter. Désormais, la vue est bien séparé de la logique (screens/models), et j’utilise des providers pour tous les gestions d’états (notamment les rebuilds d’éléments de vues).
    Il n’y a donc plus aucune class StatefulWidget.
  • La vue historique (Accueil) a bien été revue, désormais l’infinite scroll GQL fonctionne nickel (enfin dites moi si vous trouvez des bugs!).
  • Meilleurs affichage des transactions
  • Chaque transaction est clickable
  • Nouveau bouton de paiement avec son popup, mais pas encore le workflow de paiement (en attente de binding pour différentes choses côté Rust)
  • La vue ‹ Mes portefeuilles › est plus claire, la liste est à peut prêt propre, chaque portefeuille est clickable pour entrer dans ses options.
  • Chaque élements de cette vue a sont tooltip associé
  • Possibilité d’imprimer un protefeuille généré
  • Pour confirmer un portefeuille, lors de la demande du mot de la phrase de restauration, vous pouvez tapper soit le mot demandé, soit « 3.14 », soit « triche ». Pour tester l’app, vous pouvez nommer votre wallet par son code personnel, pour faciliter les tests :wink:
  • Changement de code personnel possible des les options de wallet.
  • Choix automatique d’un noeud aléatoire GVA parmis une liste prédéfinit au démarrage de l’app, jusqu’a tomber sur un noeud fonctionnel, jusqu’a 5 essai avant de continuer sans connection GVA.
  • Notification du noeud utilisé au démarrage
  • Optimisation de l’APK pour de meilleurs performances
  • Pas mal d’autres choses que je n’ai plus forcément en tête à ce moment précis ^^

Détails des changements

Todo court terme:

  • Corriger quelques petits bugs principalement d’affichages, que je connais mais qui n’interviennent que rarement en cas précis
  • Corriger définitivement quelques petits bugs de rafraîchissement de la vue Option d’un portefeuille lorsqu’une action est effectué.
  • Ajout des fonctions d’imports de portefeuille, soit par phrase de restauration, soit par ID/MDP Cesium (en attente d’un binding Rust pour cela)
  • Affichage du solde temps réel pour chacun de mes protefeuilles, dans la vue Mes portefeuille (pour le moment fake)
  • Action de choisir un portefeuille « Actif » (ou autre nom à trouver) parmi ses portefeuilles, qui sera utilisé automatiquement pour les paiements
  • Implémentation des fonctions de paiements et de son workflow (éventuellement en attente de binding Rust pour une partie de cela)
  • Affichage du userID duniter pour les comptes membres dans l’historique
  • Affichage des avatars Cesium+ pour le wallet sélectionné dans la vue historique (Accueil).
  • Rechercher un compte membre par son userID via le bouton de recherche
  • Changement de la vue par défaut de l’accueil (grâce au bouton de recherche)

Merci de vos tests et retour, comme beaucoup de choses ont changés et sont apparues, j’ai besoin que vous testiez bien cette version, ce serait super pour m’aider à debugger.

5 Likes

Problème :
Application non installée.

Faut-il désinstaller l’ancienne version avant ?

1 Like

Et oui merci de me le faire rappeler, je voulais vous le dire:

Si vous rencontrez ce problème, vous devez désinstaller l’application avant d’installer cette version.
Normalement ça ne devrait pas, mais des fois j’ai ce problème, a terme il n’y aura plus de soucis quand je ferais des AppBundle au lieu d’APK pour le playstore et fdroid.

Et si vous rencontrez encore le même problème ainsi, il faut que vous alliez dans les paramètres de vos applications Android, trouvez gecko, « Supprimez toutes les données pour tous les utilisateurs » (mais en théorie pas besoin).

En fait ici c’est dû au fait que j’ai changé des choses dans le répertoire wallets pour chaque wallets, donc il faut désinstaller l’app pour ainsi cela va supprimer tous vos wallets et données utilisateurs (il faut d’ailleurs que je creuse celà a terme …).

Et pour les brèles en Android comme moi!
Un petit mode d’emploi, pour tester?

Bon en fait je sais même pas quoi fait avec le fichier .apk : impossible d’ouvrir le fichier.
Sans doute dois-je faire une manip particulière.

Ou j’attends encore un peu que ce soit plus grand public… :roll_eyes:

C’est quoi ton téléphone ? Tu es sur quelle version d’android ?

Normalement le .apk doit isntaller l’app automatiquement ou l’ouvrant, quelle que soit la version d’android (après 2011).

Mon téléphone est un honor KIW-L21.
Android 6.0.1
Il me dit « aucune application trouvée pour ouvrir les fichiers »
Je sais pas trop quoi faire.