Giter Club home page Giter Club logo

ddrfinder's People

Contributors

andiz23 avatar andrew67 avatar

Stargazers

 avatar

Watchers

 avatar  avatar

ddrfinder's Issues

Handle missing GPS permission

In SDK 23, users can deny permissions during/after application installation.
This means that existing code in the MapView that assumes access to the GPS API calls will throw an uncaught exception and crash the application.
Need to update code to detect and handle this situation, preferably presenting a UI as well.

Take over "/ng" path

Currently, the app offers to launch for "/locator" paths.
However, ng is now "Interactive Map", and provides same functionality as app, whereas old version is the simple list.
Therefore, AndroidManifest.xml should be updated such that clicking the former has the app pop up as a suggestion when installed.

Persist user map position if used Navigate/More Info/GPS permission denied

  • Users may enjoy moving around the map to explore different areas beyond their current location.
  • Users who denied the location permission get sent back to a zoomed out US map every time.
  • Looking up information or pulling up the map app can cause the app activity to be destroyed and relaunched with a null bundle, which re-positions the map as above, unexpectedly.

Solution:

  • Use preferences mechanism to store current coordinates and zoom level on map move, and whether Navigate/More Info were triggered.
  • On app launch, load last location from preferences store and clear flag (and on map movement). If unavailable, use the US map default.
  • If flag is clear and permission is granted, move to Current Location.

Remove 1° box restriction

Whether or not the server wants to serve these requests is now handled with an API error code, so the application itself should not be enforcing this.

Better integration for Android 6.0

Android 6.0 introduces a new permissions model for granting permissions to applications, in which applications such as DDR Finder will not automatically receive the required location permissions by default.
The application currently handles this by showing a toast requesting the user to enable the permission, but the menu is nested quite deeply, so we should prove a more user-friendly way of reaching the menu.
Note: app should still function without location permissions for general searching, but it should provide a one-click warning for the user.

Handle deeplinks to app/

Prepare in anticipation for ddr-finder-ng migration from ng/ to app/, handle deeplinks to app/ (as defined by ddr-finder/docs/URLs.md).

Use custom places search

Currently, we use the Google Places SDK to power location search functionality, limited to addresses.
We should leverage the available data set to create a new search API, and have a search that considers both arcade names and city names, while also eliminating the dependency on a non-free API.

Pre-requisites:

  • Search API (in ddr-finder)
  • Search UI screen (leverage third-party helper library if available)

Migrate Piwik to Google Analytics

Unfortunately, self-hosted Piwik is too difficult to maintain.
For potential F-Droid version in the future, we could simply strip out Analytics entirely.

Update URLs to HTTPS

HTTPS was enabled on ddrfinder.andrew67.com due to geolocation APIs potentially being disabled on Chrome for non-SSL contexts.
Update URLs in Android app to point to HTTPS.

As HTTP redirects to HTTPS, default app behavior does not break, apart from odd behavior in "About" window, so this is low priority.

Persist map position across app launches

The common pattern now-a-days appears to be avoiding setting the map location to current location on app start, instead showing the area the user had previously looked at.
Since we need the permission on app launch regardless to load the "My Location" layer, we could move the map to current location on app's first launch.

Provide address lookup

Provide a box that allows scrolling map to a specific address, using the Geocoding API.

Add Google Analytics

Google Analytics code was removed as part of the effort to get the project to rebuild under gradle.
Would be good to have it back.

JCenter going down

JCenter is going down! This becomes a blocker for building in March.
Need to migrate to Maven Central etc for dependencies.
This item benefits from procrastination, to give time to library authors for migrating.

Fix info screen font

The font when clicking on an arcade location for the information options screen is huge.
Fix down to regular size.

Use API v2

Migrate API calls and results to version 2 (see Wiki); hardcode "ziv" as data source to retain current front-end behavior.

Add Crashlytics

Pre-requisites: publish a proper Privacy Policy and make sure crash reporting is opt-in.

Use Snackbar for error messages

Toasts are a bit outdated, and the errors could benefit from actionable items (such as "Enable" for permissions, "Reload" for map errors, "Zoom").

Use contextual action mode for markers

Instead of the current process where the user taps the marker, clicks the info window through to the 3 actions (navigate / copy coordinates / more info) in a separate activity, action mode bar can be used to offer them within the same main view when a marker is selected.
This should be implementable using the OnClick events: https://developers.google.com/maps/documentation/android-api/marker#marker_click_events
OnMarkerClickListener: enable action mode
OnMapClickListener: disable action mode
Action mode reference docs: https://developer.android.com/guide/topics/ui/menus.html#CAB

Simplify settings by removing "custom datasource"

Remove "Custom (Advanced)" setting in app which is essentially a developer setting (along with API version / endpoint).
URL can be loaded from XML string, and APK size should be reduced by removing API V1 code.
This will allow having a settings UI closer to ddrfinder-ng.

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.