Giter Club home page Giter Club logo

my-days's People

Contributors

kendallroth avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

my-days's Issues

Display day details

Request

Add the ability to view details for a selected day, including additional time unit values (preview of value for #17).

Features

  • Day detail view should include time value in days, weeks, months, and years (single optional decimal)
  • Should indicate the day's selected time unit
  • Should allow editing, deleting, and sharing a day (similar to previous menu actions)
  • Could allow swiping left/right to view surrounding days (in list order)

Add build details to Developer screen

Request

Add build details to the Developer screen, as documented below.

Features

  • Add build details to Developer screen
    • Git commit hash
    • Build profile (same as release channel, or is that just for updates?)

Cleanup start day if deleted

Describe the bug
When deleting the same day that is selected to open with the app, the store should remove the flag for trying to open it at launch. While it doesn't cause a crash since it checks if the day exists, the store would then technically be "corrupt" (with extra unmatching day specified).

To Reproduce
Steps to reproduce the behavior:

  1. Mark a day as "Open on start"
  2. Delete the day
  3. Close and open the app
  4. Nothing happens, but it almost did...

Ability to import/export database

Request

Need to add the ability to import and export database to/from a device file. This will enable backing up important application state to share across app installs, etc.

This could use redux-persist if desired, or a most custom solution, as the state will be loaded into the app and then stored. However, using the library could decrease the amount of work required by standardizing shape, if it is possible.

Features

  • Workflow for importing database (to file)
  • Workflow for exporting database (from file)
  • Ensure future Redux store migrations would be supported (via versioning)

Reduce unnecessary RTK selector calculations

Some RTK selectors are returning different referential values when executed with same inputs. This triggers a new dev warning in React Redux v8. There are a number of selectors that incorrectly map state without memoization, which should be fixed/improved.

Selector returned a different result when called with the same parameters. This can lead to unnecessary rerenders.
Selectors that return a new reference (such as an object or an array) should be memoized: https://redux.js.org/usage/deriving-data-selectors#optimizing-selectors-with-memoization

Separate page for add/edit

Is your feature request related to a problem? Please describe.
A separate page for adding/editing days would improve/standardize the UX when interacting on smaller devices (currently no scroll when keyboard is open). Additionally, this would allow displaying a modal for selecting the icon, which is currently not possible from within the existing modal.

Describe the solution you'd like
Add a dedicated screen for adding and editing days. Additionally, add a modal for selecting the icon, including search capabilities. This screen could clean up code by accepting a day through navigation props, rather than having to manage the currently edited day in local state outside the dialog.

Describe alternatives you've considered
If the only issue is the icon selection, #25 may be sufficient.

Day Details always shown countdown

Describe the bug
Day Details screen always shows a countdown arrow by the highlighted day, even if it is counting up. This is because the value passed is now a string, which is always technically greater than zero (therefore always counting down).

Ability to share day configs

Request

Need to add the ability to "share" a day configuration with another user. This will not track changes, but will only create a duplicate item via the app (from a URL).

Features

  • Ability to share a link (versioned?) for day configs
  • Ability to open custom schema URLs (my-days://) and parse config
  • Create a day from an external URL (maybe via confirmation dialog?)

Notes

  • Users should be prompted to update app when attempting to open a shared day with a higher schema version
  • App should attempt to parse non-matching shared day versions where possible (throw errors if invalid)

Investigate runtime version via env

Description

As noted in #9, environment variables can be used to customize Expo app behaviour (from builds or development). This could potentially be utilized to set the Expo config runtimeVersion="sdkVersion" in development (to support Expo Go client) while also supporting runtimeVersion="appVersion" (or native) during builds/updates. The benefit in this would be use of Expo Go in development, while hopefully preventing issues when modifying native code/packages. However, it is highly possible that Expo Go cannot even be utilized with modified native code/packages, which would render this entirely moot, as then using the sdkVersion to limit updates would be completely acceptable.

Use env vars to customize build

Description

Support using environment variables to customize the app's behaviour, as documented by Expo. Environment variables must be set in various locations depending on the workflow: development must run as part of expo npm command, builds must be present in appropriate channels in eas.json, and updates must be present as env variables. Variables can be accessed either in app.config.ts or from the expo-constants library (can use optional env.config.ts file wrapper).

Changes

  • Pass environment variables to builds in eas.json
  • Investigate passing environment variables in development
  • Access environment variables in env.config.ts (with defaults)
  • Investigate and document how to support env vars in updates

Reduce app load flicker

Issue

Currently when the app loads there is a brief flicker, likely caused by the JS navigator rendering/loading into the native app.

Fixes

  • Try delaying hiding the Splash Screen to allow app JS code to mount into native app?

Show FAB on Home focus

Issue

FAB button to add days is frequently hidden on iOS as it supports scrolling outside bounds, which enables scrolling "down" (hiding button) but apparently not scrolling "up" (to show button).

Fixes

Show FAB button whenever the Home screen regains focus, whether sending to background or returning to the page from day's Details page.

Ability to open to a specific day

Request

It would be nice to have the option to automatically open the app to a specific day, rather than having to always select one. This would be entirely optional, and controlled via the edit (and quick select) menu.

Features

  • Add ability to set an "initial day" that the app will open to on initial mount
    • Store this value in day store meta (not day list)
  • Update quick select menu to add option to make (or reset) "initial day"
  • Update Details screen menu to add option to make (or reset) "initial day"

Floor counter when rounding

Issue

Currently when days exactly (or near-exactly) match with a whole number, the value is a little skewed. For example, something ocurring 30 days ago (a month) will display as 1.1 months, as it is rounded from 1.06 or similar. While this might be due to issues with differences in month length, it ideally should be possible to get a bit closer by flooring truncations (instead of rounding), as it almost always seems to be a bit eager in reporting (never late so far).

Fixes

Floor date count calculations instead of rounding

Order days by dragging

Request

Add the ability to re-order days in the list by dragging.

Questions

  • Where should this ability be triggered from?

Features

  • Indicate when dragging mode is active (with vertical grab icon on items)
  • Allow dragging items to reorder
  • Update store mutation to handle moving an item to a specific index

Support multiple installations

Description

Support multiple installations of an app for production, preview, and development builds. This requires a unique Application ID (Android) and Bundle Identifier (iOS), which can be accomplished with a dynamic app.config.ts driven by variables provided in eas.json. Expo already documents the process of creating variants.

Changes

  • Support multiple package IDs via app.config.ts
  • Display environment used to build app in Developer screen

Notes

Warning If you are using any libraries that require you to register your application identifier with an external service to use the SDK, such as Google Maps, you will need to have a separate configuration for that API for the iOS Bundle Identifier and Android Package. You can also swap this configuration in using the same approach as above.

Improve icon selection

Request

Currently selecting an icon is a tedious process, involving stepping through all icons sequentially. This could be improved drastically by adding the ability to choose icons via search mechanism.

Features

  • Could consider showing an icon search after tapping on icon button (inserting underneath)
    • Search could have a text field and show a few matching icons (inline)
  • May require updating day add/edit dialog to use a dedicated page (cannot show two modals at once)

Ability to check for updates

Request

Add the ability to check for native store updates and display an alert for the user.

Features

  • Find a Expo-compatible library to check for updates
  • Display list item on settings page if an update is required

Support URL shortening for shared web links

The shared day message is quite lengthy with the addition of an HTTP redirect link (required for most message platforms, see #15). This could be improved by implementing a URL shortening system of temporarily storing shared URLs in a simple JSON storage mechanism, and providing a shortened URL that would be cleaned up after usage. Coupled with the website for redirects, this could provide a decent experience with a far shorter link.

This could potentially also replace direct mobile links???

A day has been shared with you from My Days! Follow this link to add 'Friend's Wedding' to the app!

exp://192.168.2.11:19000/--/day/shared?date=2023-04-13&icon=ring&id=2f306ada-0b6b-4b9c-ab4b-2d12a66c6f0b&repeats=false&title=Friend%2527s%2520Wedding&version=1

Alternative (web redirect)
https://my-days.kendallroth.ca/mobile/redirect?url=exp%3A%2F%2F192.168.2.11%3A19000%2F--%2Fday%2Fshared%3Fdate%3D2023-04-13%26icon%3Dring%26id%3D2f306ada-0b6b-4b9c-ab4b-2d12a66c6f0b%26repeats%3Dfalse%26title%3DFriend%252527s%252520Wedding%26version%3D1 

Add additional icons

Request

Add additional icons for user activities

Features

  • Add additional icons
    • Bike
    • Truck
    • Car

Support shared links on more apps

As mentioned in #6, most apps do not parse deep links in messages (Slack is an exception). This means that they cannot easily be opened from the message, and also do not work when copied into the browser. Instead, a solution would be to create a simple URL redirection tool that could be used to redirect specific https:// links (which are recognized) to the corresponding my-days:// URL. This has been tested by using temporary-url.com to generate a temporary redirect and validating that it opened the app when followed.

Allow copying device meta

Request

Find a way to allow copying device or app meta information on the Developer screen, that can then be sent along with crash or error reports.

Features

  • Add ability to copy device/app meta to Developer screen

Display primary day on Home screen

Is your feature request related to a problem? Please describe.
Feature a primary day within the app (for easy recognition)

Describe the solution you'd like
Allow selecting a day for primary display, which would be displayed on the Home screen instead of the current date. This could be done from the quick access menu for list items on the home screen (since it is displayed here).

Depending on sizing (whatever looks best), the title or date could be featured/first. The icon may not make sense (due to display size), but could potentially also replace the top-left app icon?

Describe alternatives you've considered
This might not provide a lot of value as the "featured" item can simply be moved to the top of the list?

Customize displayed day unit

Request

Add the ability to customize the displayed unit of time for days (instead of always using "days").

Features

  • Should be able to select between days, weeks, months, and years
  • Day units should be tracked individually (per day)
  • Day unit values should be rounded to a single decimal (or whole numbers)

Improve Spanish translations

Request

Improve Spanish localizations, which have currently been generated from a mixture of Google Translate as well as "correct" translations from previous "PayMe" app (only common actions, etc).

Upgrade Expo

Is your feature request related to a problem? Please describe.

  • Expo 48 has been released and should be used

Handle long numbers

Issue

Long numbers with more than 3 digits display strangely on the home screen, especially on countups (since arrow is inside box).

Fixes

  • Dynamically size font based on amount of numeric digits
  • Implement numeric formatting with Intl

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.