Git Product home page Git Product logo

vitemadose-ios's People

Contributors

corentios avatar nathanfallet avatar pauljeannot avatar plugnpush avatar pylapp avatar rozierguillaume avatar victor-sarda avatar yageek 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

Watchers

 avatar  avatar  avatar  avatar

vitemadose-ios's Issues

⚙️ Settings

Add a Settings view, with a ⚙️ icon to open it next to the logo on the Home view.

This Settings screen should contain:

  • Links: FAQ/VaccinTracker/...
  • An additional link to open the contributors view (See #122)
  • Options to contact us and/or report a bug
  • UI Settings: app theme (system/light/dark) and accessibility

Widgets

Add widgets, to:

  • Show global stats
  • Show next rendez-vous for a place (centre, city or department)
  • Anything else?

Add list of third-party librairies

Why

We should list somewhere in the application the list of dependencies in use inside this iOS app.
Thus depending to the component, the project will be more compliant.
Moreover, listing dependencies is clear fo users and cool for developers behind these tools.

How

One tool can be used: [LicensePlist)(https://github.com/mono0926/LicensePlist).
It will dive in the Xcode project magic files, and produce a global file will all direct and indirect third-party components.
Then the output should be place in the Settings.bundle of the project.

First, according to the tool README, install in your local environment the tool:

brew install mono0926/license-plist/license-plist

Then run the tool:

license-plist

A folder with PLIST for each component will be generated (com.mono0926.LicensePlist), and also an index file (com.mono0926.LicensePlist.plist). These elements can be placed in the Settings.bundle folder.

A run script build phase can be added so as to update the items.

In addition, the tools we directly use in the project, i.e. referenced in our level through CocoaPods and Swift Package Manager can be listed in the repository.

Rebuild the user interface programmatically

It could be a great improvement to replace storyboard files by programmatic user interface, mainly about performances.

Some files are very simple (like the home view which is a navigation controller containing a table view controller), and the loading of those storyboard files takes a lot of time compared of what it would be using programmatic user interface.

CI integration

Write some tests and add a CI to check that everything builds for each commit and each PR.

Better API Service

We'll need to refactor the current API Service and/or use a library if needed.
The current one could benefit some improvements, especially around the error handling part.

Open links by Universal Links when possible (Cf. #76)

A different way to handle the issue #76. Because it is preferable to stick with SFSafariWebView instead of opening Safari. Cc @nathanfallet.

UIApplication.shared.open(url, options: [.universalLinksOnly: true]) { (success) in
    if !success {
        // not a universal link or app not installed, opening in Safari Web View instead
        let safariViewController = SFSafariViewController(url: url, configuration: config) 
        safariViewController.present(vc, animated: true)
    }
}

Source: https://recoursive.com/2019/02/22/preflight_universal_links/

Use an internal Swift package

Without changing lots of code, performances (runtime, compilation), security and quality can be improved with an internal Swift package.
It can also helps to easily share code with potential extensions.

Push notifications

Discuss about it with backend team.

Ideas:

  • Notifications for limited time for a certain place?
  • One notification for all centers?

Anything else?

Strings into a separated file

Take all the strings of the app, and put them together in a Localizable.strings file.

Then create an enum (or struct with constants) to use them.

struct LocalizedString {

  static let example = "example".localized()
  // ...

}

(This is an example where example is the string id in the Localizable.strings file)

Home heading section reloading crash

So far only one crash was reported on Crashlytics and should be fixed in the next version.
It seems to be an issue with the home heading section reload. From what I see, conforming sections to Identifiable should fix it.


Fatal Exception: NSInternalInconsistencyException
Section identifier was not found. You can verify the section exists by calling the indexOfSectionIdentifier API (which has O(1) performance)
HomeViewController.reloadHeadingSection(with:)

Bug - MeSoigner logo not showing

Describe the bug
Currently on the app, "MeSoigner" logo doesn't appear because the asset name doesn't match the parsed value for plateforme. It also does not show up on the home page because the xib view is using the wrong name.

To Reproduce
Steps to reproduce the behavior:

  1. Open the app and scroll to the partners logos section
  2. Alternatively, open a list of centres where some are from MeSoigner

Expected behavior
Logo is displayed

Screenshots

Simulator Screen Shot - iPhone 11 - 2021-06-30 at 23 44 58 Simulator Screen Shot - iPhone 11 - 2021-06-30 at 23 45 03

Smartphone:

  • Device: iPhone 11 Sim
  • OS: 14.6
  • App version 1.3.1 (dev)

Home - Display the latest department

Ideally the user should be able to quickly select the latest department they viewed.
This could easily be achieved by saving the latest selected department code in user defaults.

Mockup:
image

Home percentage stats - Check total is not 0

Description

Right now the home percentage cell doesn't check if the total amount of centres available is higher than 0. This can result into a crash (divide by zero)

Suggestion

    var pourcentage: Int? {
        // Prevent divide by zero crash
        guard total > 0 else {
            return nil
        }
        return (disponibles * 100) / total
    }

Percentage value would become optional so fallback text could be "-" (it should never happen)

Linked to #41

Add a bookmark/favorite system

A bookmark/favorite system containing:

  • a little star on vaccination centre cells to add to favorite
  • a favorite tab or section to browse them later
  • receive a push notification when the number of available doses changes from zero to non-zero

iPad - Crash on address tap

Tapping on a centre address makes the app crash in iPad.
It's a simple fix: the action sheet needs a popoverPresentationController?.sourceView

Version: 1.0.0-beta

Time with `mapharma.fr` is not correct

Time is not correct when a center is from mapharma.

Example:
image

    {
      "departement": "49",
      "nom": "Pharmacie Des Halles",
      "url": "https://mapharma.net/49100-7?c=237&l=0",
      "location": {
        "longitude": -0.554808,
        "latitude": 47.47116,
        "city": "ANGERS"
      },
      "metadata": {
        "address": "78 RUE BAUDRIERE, 49100 ANGERS",
        "business_hours": null
      },
      "prochain_rdv": "2021-05-10T10:30:00",
      "plateforme": "Mapharma",
      "type": "drugstore",
      "appointment_count": 19,
      "internal_id": "mapharma2d373f633d323337266c3d3",
      "vaccine_type": [
        "AstraZeneca"
      ],
      "appointment_by_phone_only": false,
      "erreur": null,
      "last_scan_with_availabilities": "2021-05-08T17:17:29.605276+02:00",
      "appointment_schedules": {
        "1_days": 0,
        "2_days": 0,
        "7_days": 19,
        "28_days": 19,
        "49_days": 19
      },
      "gid": "2d373f633d323337266c3d3"
    }

Other source example:

    {
      "departement": "49",
      "nom": "Centre de vaccination Covid-19 - Ville de Saumur",
      "url": "https://www.doctolib.fr/centre-de-sante/saumur/centre-de-vaccination-covid-19-ville-de-saumur",
      "location": {
        "longitude": -0.094039,
        "latitude": 47.267295,
        "city": "Saumur"
      },
      "metadata": {
        "address": "Avenue du Breil, 49400 Saumur",
        "phone_number": "+33241831288",
        "business_hours": {
          "lundi": "08:30-12:00, 13:30-17:00",
          "mardi": "08:30-12:00, 13:30-17:00",
          "mercredi": "08:30-12:00, 13:30-17:00",
          "jeudi": "08:30-12:00, 13:30-17:00",
          "vendredi": "08:30-12:00, 13:30-17:00",
          "samedi": null,
          "dimanche": null
        }
      },
      "prochain_rdv": "2021-05-11T10:10:00.000+02:00",
      "plateforme": "Doctolib",
      "type": "vaccination-center",
      "appointment_count": 1129,
      "internal_id": "doctolib242320",
      "vaccine_type": [
        "Pfizer-BioNTech",
        "Moderna"
      ],
      "appointment_by_phone_only": false,
      "erreur": null,
      "last_scan_with_availabilities": "2021-05-08T17:17:29.613270+02:00",
      "appointment_schedules": {
        "7_days": 33,
        "28_days": 658,
        "49_days": 1129,
        "1_days": 0,
        "2_days": 0
      },
      "gid": "d242320"
    }

Add unit tests

We need to add unit tests before releasing the next version.

ACs:

  • Test ViewModels
  • Test Models
  • Test API calls

[A11Y] [Voice Over] Big number not vocalized as a big number

Describe the bug
When Voice Over is enabled, some numbers are not well vocalized: each digit is vocalized, but not the whole number.

To Reproduce

  1. Enable Voice Over vocalization
  2. Make a search, each for Toulouse
  3. Select the result cell
  4. Each digit of 91 014 is vocalized like 9 1 0 1 4

Expected behavior
The number must be vocalized like 91 014

Screenshots
IMG_7940

Smartphone (please complete the following information):

  • Device: iPhone
  • OS: iOS 14.g. iOS 14]
  • App version: 1.3.0

Additional context
Woops sorry, didn't find this bug!

[A11Y] Text size is not changed for "followed centers" if size has been changed in accessibility feature

Describe the bug
When the accessibilty feature is enabled, with very big text sizes, the "mes centres suivi" cell has not a bigger text.

To Reproduce
Steps to reproduce the behavior:

  1. In device settings, enable accessibility option for bigger texts
  2. Define text size as almost the highest, or more
  3. Add a center as a favorite center (clock icon)
  4. See the cell for the followed centers

Expected behavior
Text of the cell must have a bigger size.

Screenshots

IMG_7939

Smartphone (please complete the following information):

  • Device: iPhone
  • OS: iOS 14
  • App version: 1.3.0

Additional context
Woops sorry, didn't find this bug!

Feature - Add a maintenance page

It was requested that we add a feature to display a maintenance page if needed (in case we ever have issues with servers / data). The page would show up based on a feature flag on Firebase Remote Config.

I started working on this already and will push changes this evening.

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.