AgoraDesk/LocalMonero Mobile Applications

Overview

AgoraDesk, LocalMonero Apps

There are two apps under one code base in this repository.

First app - AgoraDesk:

Second app - LocalMonero:

App Features 🔥

  1. Within one code base there are 2 apps: AgoraDesk, LocalMonero. Each app can be built as Android and iOS native app. Design and logic separation made with flavors (more info further in this doc).

  2. Universal Links work for Android and iOS. In case app is installed on the device, the regular links will run apps instead of browser. In case of two apps installed on one device the AgoraDesk app prioritized (it means in case of link localmonero/something AgoraDesk app will be opened).

  3. Push notifications work on iOS & Android. In case user's device (for example in China or with GrapheneOS) can't receive pushes, app detects it and start polling in the background mode. More info

  4. For anonymisation reasons all notifications sent without translations and translated on client. So, we use data messages to display them with app code (not with the FCM).

  5. Made with Dart & Flutter ❤️

Build

For build the app locally after getting code from repository use FOSS commands in Makefile.

For example, to build FOSS apk LocalMonero app

flutter build apk --verbose --flavor localmonero --dart-define=app.flavor=localmonero --dart-define=app.includeFcm=false

The apps use MapBox for reverse geocoding. In order to build it yourself, you need to create/provide your own MapBox API key. The instructions can be found here.

After that, create the file lib/keys/keys.dart and add your key there: key const keysMapToken = 'YOUR_MAPBOX_KEY';

You will get the app that works without FCM services. Push notifications will be received with polling with foreground service (if the app is closed it still works).

Translation

The source of truth for the translation files is .json language files for web-version. https://github.com/AgoraDesk-LocalMonero/translation

In the flutter we use .arb files. For conversion to both directions use dart util https://github.com/AgoraDesk-LocalMonero/dart-json-arb-json-converter

Flavors

How to build iOS with run parameters

Fastline

Initial settings

Set up Firebase for different flavors

Set up iOS links for the different apps

ios/Runner/Runner.entitlements ios/Runner/Runner-localmonero.entitlements

Presspacks

Known issues

Push notifications

Backend sends data messages. We get them in the app, translate and display. So, when the app is terminated, we should run the app, handle the message and display it.

iOS issues

  1. Crashes when receiving notification. Connected with awesome notifications settings. firebase/flutterfire#4026

Contribution

  1. Commits naming https://www.conventionalcommits.org/en/v1.0.0/

Types other than fix: and feat: are allowed, for example @commitlint/config-conventional (based on the the Angular convention) recommends build:, chore:, ci:, docs:, style:, refactor:, perf:, test:, and others.

Mark commit number with #, for example fix: #89.

Also we can use following:

  • feat: A new feature
  • fix: A bug fix
  • docs: Documentation only changes
  • style: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)
  • refactor: A code change that neither fixes a bug nor adds a feature
  • perf: A code change that improves performance
  • test: Adding missing tests
  • chore: Changes to the build process or auxiliary tools and libraries such as documentation generation

The source: https://ec.europa.eu/component-library/v1.15.0/eu/docs/conventions/git/#:~:text=feat%3A%20A%20new%20feature,bug%20nor%20adds%20a%20feature

Comments
  • Accessibility, more things

    Accessibility, more things

    Everything done below is with the talkback screen reader. Which can be enabled in the "Accessibility" section of android settings

    • [x] The password box is completely skipped on the login screen. See the username box focuses in screenshot 1, the show/hide password focuses in screenshot 2 and the one time password (if enabled) focuses in screenshot 3. Screenshot_20221118-083931_LocalMonero Screenshot_20221118-083943_LocalMonero Screenshot_20221118-083955_LocalMonero

    • [x] In screenshot 3 above the "one time password (if enabled box only reads as "edit box"

    • [x] In screenshots 4 and 5 the "forgot password flow is shown. I can access the back, email input box and send button, but have no idea what the text above the email box says as i cant access it Screenshot_20221118-084545_LocalMonero Screenshot_20221118-084558_LocalMonero

    • [x] In screenshots 6 and 7 the "setup pin screen now has the delete button labeled, however, there is an extra button that just reads "button after it that still deletes. Notice the focus on what is read as "delete" is slightly wider than that of "button" Screenshot_20221118-085634_LocalMonero Screenshot_20221118-085646_LocalMonero

    • [x] In screenshots 8 and 9 the "notifications" and "help" have been focused. Just after each is another object that just says "button". Screenshot_20221118-104438_LocalMonero Screenshot_20221118-091557_LocalMonero !

    • [x] In screenshot 10 an ad is open. After the "information" button is another object just labeled "button" that also opens the information page Screenshot_20221118-091841_LocalMonero

    • [ ] In screenshot 11 the "copy" button is focused. Immediately after this copy button is another copy button. Screenshot_20221118-092142_LocalMonero

    • [x] In screenshot 12 the ad terms are in focus, however the only thing spoken is "read more" or "show less" depending on if the terms are collapsed or expanded. Screenshot_20221118-092630_LocalMonero

    • [x] In screenshot 13 the "show more" button is shown. This works as expected. Screenshot_20221118-092653_LocalMonero

    • [x] In the "wallet" tab and the "trades" the notifications button has that extra "button" after it again (see screenshot 8 above)

    • [x] In screenshot 14 the arrow next to "all ads" reads as "button" Screenshot_20221118-093658_LocalMonero

    Edit: i found another one

    • [x] in screenshots 15 and 16 a trade chat is displayed. Here the attach photo button (paperclip and send message button (up arrow in a circle) only read as "button"
    • [ ] Screenshot_20221120-165038_LocalMonero_1 Screenshot_20221120-165055_LocalMonero_1
    bug 
    opened by davidbtc2009 18
  • Accessibility: unlabeled buttons in localmonero with talkback

    Accessibility: unlabeled buttons in localmonero with talkback

    • [x] On the first screen the matrix and telegram buttons are unlabeled with talkback

    • [x] After tapping "i want to buy" or "i want to sell" the back button at the top left only reads as "button"

    • [x] On the login screen the "username" box only reads as "edit box" instead of "username". The password box is completely skipped in favor of the show/hide password eye icon that only reads as "button"

    • [x] Once logged in on the setup pin screen the back button aylt the top left again only reads as "button" as does the backspace key to the right of "0"

    • [x] Once the pin is set and you are taken to the market page, the notifications (top left), help (top right), down arrow (right of online buy), filter (right of the down arrow), the share (top right corner of each listing, square with right upward slanting arrow) are all read as "button"

    • [x] When an ad is opened the back button (top left), tips "I" in a circle (top right), share (right of "about this ad, square with slanted right up pointed arrow), copy (right of "terms of trade with" user) are all labeled as "button".

    • [x] Before "read more" the "..." Is a button that either shouldnt exist or be melded in with "read more"

    • [x] When the tips screen is opened the "x" (top right of the open box) reads as "button"

    • [x] In the wallet tab the notifications button again only reads as "button"

    • [x] In the trades tab the notification button (top left) and the down arrow (right of "all") read as "button"

    • [x] The filter button (right of the down arrow) is not read at all

    • [x] On the ads tab the same issues as on the trades tab apply (see above) and the "+" button reads as "button"

    bug 
    opened by davidbtc2009 15
  • ad filter 2

    ad filter 2

    At the very beginning there should be ads with users who have been in the app very recently. at the very end there should be ads with sellers who haven't been in the app for a very long time.

    opened by Wjxfi 6
  • 1.0.23 freeze at logo on opening.

    1.0.23 freeze at logo on opening.

    Since the last update (1.0.23) I have been unable to access the Agoradesk application.

    • Android 13.

    On opening the screen freezes at the white background with blue logo screen.

    bug 
    opened by kycfree1 6
  • *Feature Request* Update alert/link on update.

    *Feature Request* Update alert/link on update.

    For those using the APK download application a clear in-app alert that an updated version of the application is available would be beneficial when using an outdated version of the app.

    A link to the latest upgradable version would be very useful.

    enhancement 
    opened by kycfree1 5
  • Fully remove firebase from foss version

    Fully remove firebase from foss version

    Hello,

    When installing the latest foss version of local monero, It seems like it is indeed not using FCM. Although when inspecting the app, it appears that Firebase services, providers and receivers are present.

    Can you remove those from the foss build? It would be required anyway to publish to fdroid.

    enhancement 
    opened by dhammel 3
  • ad filter

    ad filter

    In the beginning there should be an advertisement with the best exchange rate. then the exchange rate will worsen and at the end there will be the worst exchange rate.

    opened by Wjxfi 2
  • [BUG] Android: able to open trade chat without PIN

    [BUG] Android: able to open trade chat without PIN

    This is on the FOSS app but may affect others too. If you open the app and the foreground service message saying "LocalMonero Notification Service Checking for notifications. tap to read more" appears in the status bar. Then swipe the app away and get a trade chat you can tap the trade chat and talk with the other person without requiring the app PIN. If you try to exit the chat the PIN is required, but you shouldnt be able to open the chat at all without PIN first as it would contain sensative info.

    bug 
    opened by davidbtc2009 2
  • *Feature Request* QR scan & Paste in address entry.

    *Feature Request* QR scan & Paste in address entry.

    The addition of a paste button and a scan QR option for the address entry field in step 4 of the "post an ad" process. This makes it easier to quickly paste a copied address and also for those wishing to scan an address from another device.

    enhancement 
    opened by kycfree1 2
  • Android: animations and scrolling seem slow on devices 120Hz

    Android: animations and scrolling seem slow on devices 120Hz

    Another #bug, this is tricky to capture on camera but I've noticed animations and scrolling seem slow on my device (#android OnePlus 9 Pro) - seems like animations are being locked to 60fps, which is fine for most devices but makes the app seem like it's stuttering on newer displays with high refresh rate.

    Mine's 120Hz, also testing #agoradesk but again would imagine it applies to both Would be happy to record this with a HFR camera but would take some time. Also if you don't have a high refresh rate device on hand to test potential fixes with I can do that too

    bug 
    opened by sergdeus 2
  • Uploading images

    Uploading images

    #bug #android #agoradesk #localmonero Very urgent. Screenshots/images cannot be sent on both apps in trade chat screen. It just says error bad request

    See screenrecord video

    It used to work very smoothly before as you can see in this old trade 10 days ago I was able to send payment proof photo image. In all new trades since this new week started it now Fails

    Both apps i am on latest versions 1.0.41

    opened by sergdeus 1
  • Accessibility: minor issues

    Accessibility: minor issues

    Everything done below was done with the Talkback screen reader which can be enabled from settings > accessibility on Android 11. These are the last few i found easily but some more may crop up from time to time in less well tested parts of the app.

    • [x] The entire box is focused and read aloud instead of focusing on "disclaimer" and the below text as separate elements. See screenshot 1 Screenshot_20221212-121902_LocalMonero

    • [x] On the create account screen the "confirm password" edit box reads as "password" instead of "confirm password" see screenshot 2 Screenshot_20221212-122055_LocalMonero

    • [x] I am unable to access the terms of service link see screenshot 3 Screenshot_20221212-122122_LocalMonero

    • [x] The notifications button reads as "notifications notifications notifications" instead of "notifications". See screenshot 4. Screenshot_20221212-122502_LocalMonero

    • [x] When an ad is open and the tips button is pressed, the entire window is focused and reads "tips close button" but it is not actually a button (and should not be) see screenshot 5. the first element focused should be the word "tips". Screenshot_20221212-122811_LocalMonero

    • [x] When an ad is open there are 2 instances of the "copy button" see screenshot 6 Screenshot_20221212-123219_LocalMonero

    • [x] On the trades tab the down arrow next to all reads as "button". See screenshot 7 Screenshot_20221212-123616_LocalMonero

    enhancement 
    opened by davidbtc2009 4
  • Adding a review widget to the chat and activity tab when the trade is completed

    Adding a review widget to the chat and activity tab when the trade is completed

    A message that says something like “It looks like you haven’t left a review for this user yet. Tap here to leave a review!” when the trade is completed Or at least “Trade completed. Tap here to leave a review!” although that could get redundant if you have already left that user a review before Or maybe “You've already left this user a review. Would you like to update your review now?”

    opened by sergdeus 0
  • choose DEFAULT tab sections that opens when we launch the app

    choose DEFAULT tab sections that opens when we launch the app

    Can you please add an option in settings where we can choose DEFAULT tab sections that opens when we launch the app from our homescreen or apps list. Example

    If we want to open app and automatically go directly to TRADES section and not market buy sell section like this

    opened by sergdeus 0
Releases(v1.0.42)
Owner
AgoraDesk / LocalMonero
P2P Bitcoin, Monero trading platform
AgoraDesk / LocalMonero
A comprehensive guide on learning how to code cross platform mobile applications with the Flutter framework, from the ground up.

✳️ The Ultimate Guide to App Development with Flutter ✳️ A complete and comprehensive guide to learning Flutter with explanations, screenshots, tips,

Anthony 243 Jan 1, 2023
Another way to build Flutter applications for mobile, web and desktop using the powerful of MVC Design Pattern.

Karee Another way to build Flutter applications for mobile, web and desktop using the powerful of MVC Design Pattern. + = About Karee Karee is a frame

@LeCode 44 Sep 29, 2022
An enterprise-class package of Flutter components for mobile applications.

Bruno 一套企业级移动端 Flutter 组件库 简体中文 | English ✨ 特性 提炼自企业级移动端产品的交互和视觉风格 开箱即用的高质量 Flutter 组件 提供满足业务差异的主题定制能力 设计工具赋能开发全链路 Demo 下载 适配 Flutter 版本 Bruno 版本 Flut

Ke Technologies 2.2k Jan 2, 2023
flutter_thrio makes it easy and fast to add flutter to existing mobile applications, and provide a simple and consistent navigator APIs.

中文文档 英文文档 问题集 原仓库不再维护,代码已经很老了 最近版本更新会很快,主要是增加新特性,涉及到混合栈的稳定性的问题应该不多,可放心升级,发现问题加 QQ 群号码:1014085473,我会尽快解决。 不打算好好看看源码的使用者可以放弃这个库了,因为很多设定是比较死的,而我本人不打算花时间写

null 290 Dec 29, 2022
flutter_thrio makes it easy and fast to add flutter to existing mobile applications, and provide a simple and consistent navigator APIs.

本仓库不再维护,可移步新仓库 https://github.com/flutter-thrio/flutter_thrio 中文文档 问题集 QQ 群号码:1014085473 The Navigator for iOS, Android, Flutter. Version 0.2.2 requir

Hellobike 732 Dec 5, 2022
Create different mobile applications such as a social networking application and an online store, as well as a news application using Flutter

Develop-Different-Mobile-Applications Create Different Mobile Applications such as a social networking application and an online store, as well as a n

Ebrahim Mohamed 2 Jul 1, 2022
😎 UI commonly used in mobile applications.

flutter_ui_jumble This repository is a collection of commonly used UIs for mobile applications. Screens it contains ?? Sign In screen ?? Touch Id scre

Ken Minami 51 Dec 28, 2022
Now UI Flutter is a fully coded app template built for Flutter which will allow you to create powerful and beautiful e-commerce mobile applications

Now UI Flutter is a fully coded app template built for Flutter which will allow you to create powerful and beautiful e-commerce mobile applications. We have redesigned all the usual components to make it look like our Now UI Design, minimalistic and easy to use.

null 12 Oct 9, 2022
CARP Mobile Sensing for Flutter, including mobile sensing framework, data backend support, and the CARP mobile sensing app.

This repo hold the source code for the CACHET Research Platform (CARP) Mobile Sensing (CAMS) Flutter software. It contains the source code for CACHET

Copenhagen Center for Health Technology (CACHET) 61 Dec 16, 2022
Build installers for your Flutter applications with Squirrel

squirrel A new Flutter package project. Getting Started This project is a starting point for a Dart package, a library module containing code that can

Anaïs Betts 44 Dec 28, 2022
Flutter starter template for production applications with a REST backend

Flutter Boilerplate My Flutter starter template for production applications with a REST backend. The main aim of this template is to get you up and ru

Ali Behzadian Nejad 3 Apr 13, 2022
A fancy easy to use Folding Menu for Flutter Applications

Folding Menu This is an easy to use package for adding Folding Menu to your Flutter Applications Demo Usage To Use, simply add Folding Menu to your St

Paras Jain 12 Nov 26, 2022
👑 The lightweight design pattern for small management applications.

Store Pattern ?? The lightweight design pattern for small management applications. Features | Structure | Install | Usage | Documents | Technologies |

UITers 71 Sep 26, 2022
List of open source Flutter applications

Open source flutter apps Flutter is Google's UI toolkit for building beautiful, natively compiled applications for mobile, web, desktop, and embedded

Turtuvshin Byambaa 2.7k Jan 6, 2023
A CLI to help with using FlutterFire in your Flutter applications.

FlutterFire CLI Documentation • License A CLI to help with using FlutterFire in your Flutter applications. Local development setup To setup and use th

Invertase 100 Dec 12, 2022
State Persistence - Persist state across app launches. By default this library store state as a local JSON file called `data.json` in the applications data directory. Maintainer: @slightfoot

State Persistence Persist state across app launches. By default this library store state as a local JSON file called data.json in the applications dat

Flutter Community 70 Sep 28, 2022
This is a repository for Flutter Focused Menu, an easy to implement package for adding Focused Long Press Menu to Flutter Applications

Focused Menu This is an easy to implement package for adding Focused Long Press Menu to Flutter Applications Current Features Add Focused Menu to Any

Paras Jain 160 Dec 26, 2022
This is an easy to use Flutter Package for adding Fancy Foldable Sidebar to your Flutter Applications.

Foldable Sidebar An easy to implement Foldable Sidebar Navigation Drawer for Flutter Applications. Current Features Initial Release for Foldable Navig

Paras Jain 87 Nov 26, 2022
This is an applications for fetching pokemon data from API and showed in Listview with infinity scrolling

pokedex This is an applications for fetching pokemon data from API and showed in Listview with infinity scrolling #Author Created by Yusril Rapsanjani

Yusril Rapsanjani 9 Dec 13, 2019