Giter VIP home page Giter VIP logo

anchr-android's Introduction

Anchr for Android

Android client for Anchr.io link collections, built with Flutter

Prerequisites

  • A hosted instance of Anchr and a registered account.
  • Java >= 11 (JDK path defined in android/gradle.properties)
  • Flutter >= 2.5.3
  • Dart (tested with 2.14.4)
  • Android SDK (tested with v31)
  • Android Studio (or VSCode)
  • An Android device or emulator

How to run?

  1. Check out repository
  2. Make sure flutter doctor has no errors
  3. flutter packages get
  4. flutter run

Developer notes

  • State handling architecture inspired by vanilla.
  • Generate launcher icon: flutter packages pub run flutter_launcher_icons:main

Release

  • Have your keystore and password ready, e.g. ~/.android/keystore.jks
  • Make sure you have android/key.properties, which looks like so
storePassword=shhh
keyPassword=shhh
keyAlias=some_alias_eg_anchr
storeFile=/home/you/.android/keystore.jks
  • flutter build apk --release --flavor fmain to build an APK
  • flutter build appbundle --release --flavor fmain to build an AppBundle (recommended)

F-Droid

flutter build apk --flavor fdroid

To Do

There is still plenty of space for improvements. Those include:

  • Add ability to sign up
  • Add ability to share collections
  • Improve database helpers (e.g. hide one-to-many relation between collections and links from the outside)
  • Enhance offline mode
    • Show cached content while initial request is pending
  • Implement refresh tokens (requires backend changes)
  • Add tests
  • Clean up code

Feel free to contribute!

License

GNU General Public License v3 (GPL-3) @ Ferdinand Mütsch

anchr-android's People

Contributors

muety avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

anchr-android's Issues

Login not working

I'm able to log into my insurance from the web, but every time I try to log in from the app I get an error Failed to log in. Something went wrong

`FlutterError` is not a subtype of `Exception`

{main} {<fn>} {Root level error: type 'FlutterError' is not a subtype of type 'Exception'} {LogLevel.ERROR} {10 September 2021 08:14:09 PM} {#0      _AddLinkPageState._submit.<anonymous closure> (package:anchr_android/pages/add_link_page.dart:174:59)
#1      _rootRunUnary (dart:async/zone.dart:1362:47)
#2      _CustomZone.runUnary (dart:async/zone.dart:1265:19)
#3      _FutureListener.handleError (dart:async/future_impl.dart:169:20)
#4      Future._propagateToListeners.handleError (dart:async/future_impl.dart:716:47)
#5      Future._propagateToListeners (dart:async/future_impl.dart:737:24)
#6      Future._completeWithValue (dart:async/future_impl.dart:539:5)
#7      _completeOnAsyncReturn (dart:async-patch/async_patch.dart:254:13)
#8      CollectionService.addLink (package:anchr_android/services/collection_service.dart)
<asynchronous suspension>
} 

'NoSuchMethodError' is not a subtype of type 'Exception'

{main} {<fn>} {Root level error: type 'NoSuchMethodError' is not a subtype of type 'Exception'} {LogLevel.ERROR} {08 January 2021 07:32:47 PM} {#0      _AddLinkPageState.build.<anonymous closure>.<anonymous closure> (package:anchr_android/pages/add_link_page.dart:88)
#1      _rootRunUnary (dart:async/zone.dart:1198)
#2      _CustomZone.runUnary (dart:async/zone.dart:1100)
#3      _FutureListener.handleError (dart:async/future_impl.dart:160)
#4      Future._propagateToListeners.handleError (dart:async/future_impl.dart:708)
#5      Future._propagateToListeners (dart:async/future_impl.dart:729)
#6      Future._completeWithValue (dart:async/future_impl.dart:529)
#7      _AsyncAwaitCompleter.complete (dart:async-patch/async_patch.dart:40)
#8      _completeOnAsyncReturn (dart:async-patch/async_patch.dart:311)
#9      CollectionService.listCollections (package:anchr_android/services/collection_service.dart)
<asynchronous suspension>
} 

Share link functionality

Besides "Delete" and "Copy Link" the bottom sheet should have an additional option to "Share Link", which opens a sharing drawer menu.

Sanitize server URL

  • Allow it to be entered with and without trailing slash
  • Allow it to be entered without protocol identifier (assume HTTPS by default)

Data race after login

Sometimes, after logging in, the collections page is empty, because loading it online threw an error related to the db helper not yet being initialized.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.