Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initial pkpass support #327

Open
wants to merge 47 commits into
base: master
Choose a base branch
from

Conversation

TheLastProject
Copy link
Contributor

@TheLastProject TheLastProject commented Dec 9, 2019

This will probably take a bit longer to make completely useful, but this at least does the initial parsing. Marking this WIP just because I believe in sharing progress to allow for early feedback.

When this is done, it will fix #309.

TODO:


This change is Reviewable

@TheLastProject
Copy link
Contributor Author

I've opted for using a new EXTRAS database field to store this all in, because putting all of this data in the note doesn't seem doable. See #309 (comment) for how this looks to the end-user.

@TheLastProject
Copy link
Contributor Author

i18n is working, but I need to fix all the tests still:

photo_2019-12-15_19-11-24

@TheLastProject TheLastProject changed the title WIP: Initial pkpass support Initial pkpass support Dec 16, 2019
@TheLastProject
Copy link
Contributor Author

While not perfect, it does enough to be useable. I guess I consider this to be "ready for review" now, @brarcher.

It's a rather huge change, so to explain the architecture a bit:

  • There's a new ExtrasHelper which stores "extra" data. The reason for this is that (1) note doesn't support i18n, (2) there's simply way too much data to store in a note and still have a decent user experience
  • The ExtrasHelper saves to the database as JSON and parses the JSON from the database. This is on purpose because (1) to my knowledge JSON by itself does not have code execution exploit risks like other ways of storing data does, (2) it makes it easy to share it with the existing share feature and (3) there are no real guarantees as to what fields there will be which makes it difficult to create a good DB structure for

Some notes:

  • I'm honestly not happy with the whole codebase being filled with throws JSONException now, but I'm not sure how else to make this work...
  • Android intents are very confusing but this at least consistently works for downloaded .pkpass files in a file manager.
  • We lack a proper i18n chain. Right now it's just user's preferred language -> en -> untranslated. This means that if Android returns es_AR for example, we'll likely fail to return the es translation and will instead return the en one. I do not yet know how to properly fix this.

@TheLastProject
Copy link
Contributor Author

Screenshot_1576667915

I couldn't resist and I'm sure the legal worries of #303 don't apply when they literally put the icon in the file that's provided.

@airon90
Copy link
Contributor

airon90 commented Feb 22, 2020

I suppose that the name of the app should be changed, as boarding cards or event tickets are not loyalty cards. I am going to open a new issue about that.

@TheLastProject
Copy link
Contributor Author

I personally would keep the app name the same and just write in the description it also supports event tickets and stuff.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Pkpass file support
2 participants