Coder Social home page Coder Social logo

shoppinglist's People

Contributors

ainola avatar j-8 avatar jklmnn avatar matgoebl avatar r4mp avatar the0ne 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

shoppinglist's Issues

App Icon

The app icon is black with transparent background which makes it invisible in the default Android app drawer.

States for entries.

I noticed that it might be better to add a state open|checked or similar to each entry. For example, if I buy something and delete it from the list, someone else with the same list might think, he just forgot it and adds it again. It is not possible to determine if an entry was just not added or if it was resolved.

swipe to puncture

You already mentioned that the currect swipe to dismiss is not perfect - I agree :-)

My suggestion: swipe to puncture (durchstreichen):

Programatically you have to manage 2 distinct lists:

  1. active items
  2. deactivated items
  3. User swipes an item in the first list (=active items).
  4. Items gets punctured and sorted to the back, i.e. into the second list (=deactivated items, same sort rules, i.e. by shelf-number + alphabetically).
  5. Clear list button only removes all punctured items (i.e. clears the second list).
  6. Swiping on an punctured items will "unpuncture" it (i.e. move it back to the first list).

Of course you could do the same with checkmarks instead of puncture the items text. This is only a question of preference and coding effort.

proper offline mode

I think the app should work in offline mode the same way it works in online mode. At the moment offline mode does even not allow to swipe away items - this offline mode is not usable at the moment. In addition, when you start the app while online and you go offline for some reason you get the "cannot connect" error upon first action on your list.

"Es wurde kein Header mit der Versionsinfo gefunden."

Hi guys (great project, but little lack of documentations),
I previously updated the app from version 1.1 to 1.3!
After restarting the app i wasnt able to create any new entries within my shopping-list and instead received the following message: "Es wurde kein Header mit der Versionsinfo gefunden."
I am still able to open "stored versions".
Furthermore I updated each files of the backend manually - same result.
Finally I deleted my My-SQL-DB and re-ran install.php - unfortunately I am getting the same error-message (see above).

Could you help me, please? I dont know, what else I may be doing wrong!?

Version 1.3 doesn't connect to server. Version 1.1 does.

The difference seems to be that in version 1.1 I have to put the full url.
Version 1.3 reports that the server refuse the connection, nginx access log shows that the app gets a 403 on the directory, maybe the app doesn't ask for api.php?
Sorry for my bad english and thanks for the app.

Request: select multiple items in favorites at once (checkboxes)

I'm using OI-ShoppingList for many years now but I like your idea of a synchronized list across multiple devices and using own servers. I really would like to make this project really useful. Here is my first out of multiple suggestions:

When I prepare my shopping list I like to open up my favorites list and while I'm looking around (e.g. in the refrigerator) I select what I need to buy. When I'm done I click on "OK" and all items are copied to the shopping list at once. After that I modify some items count numbers (this is already implemented but not optimal - see my next suggestion issue).

So I suggest to replace the select boxes with checkboxes to allow multiple selection.

FAB Button and Coordinator Layout

The Floating Action Button should react to the Snackbar with a Coordinator Layout, not with a timer. Right now it gets pushed to far up when multiple actions occur.

Share List

Ok, you create a List.
There is a user that down have access to your Server, so you want to share the list.
Then you can select how => Mail, WhatsApp, etc
He get a simpel Message in this format:

List
[ ] Eggs
[ ] Meat
[ ] Pasts
He will not see it as a list, only as a simple TextMessage

No Data

Hello,

I set up the Server and the App with the write MySQL Config and in the App with the API and Link.
But the only info I get is:

No Data

It is too easy to destroy lists.

Please make it harder to delete all of the items on the list! As of right now an accidental press of the top-right button can wreck the list that I've been building. It's too easy to press: It should have either have an undo toaster popup or a confirmation dialogue.

The response did not make sense: []

Firstly I just wanted to say that it's fantastic to see a FOSS shopping list app for Android with a self-hosted syncing solution!

My issue is that when I upgraded to version 1.1 of the app, I received an error when trying to display the list of items: "The response did not make sense: " followed by a JSON string of the items in the database. I have since upgraded to a fresh install of the latest backend (version 0.3 / commit 6729fbc) and also uninstalled and then reinstalled and reconfigured the app, but I am still receiving the error, although now with an empty JSON string due to the fresh install of the backend: "The response did not make sense: []"

When accessing the API directly and passing function=listall along with the appropriate auth key, I can confirm that it is just returning [] but I assume this is expected behavior from a backend with a fresh database (SQLite FWIW).

I am a PHP developer and would love to help out with the backend if I can, but this seems like it might be an issue with the app. Please let me know if there is any further information that might be helpful or if I can provide assistance in any way.

Crash on non empty list return.

App version 1.1 crashes if the server returns a non empty list from function = listall.
The exact server output that crashes the app is: {"type":1000,"items":[{"item":"item2","count":1}]}.

EDIT: Stacktrace: E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: org.janb.shoppinglist, PID: 26665 java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.Boolean.booleanValue()' on a null object reference at org.janb.shoppinglist.model.ShoppingListAdapter.getView(ShoppingListAdapter.java:63) at android.widget.AbsListView.obtainView(AbsListView.java:2347) at android.widget.ListView.makeAndAddView(ListView.java:1864) at android.widget.ListView.fillDown(ListView.java:698) at android.widget.ListView.fillFromTop(ListView.java:759) at android.widget.ListView.layoutChildren(ListView.java:1659) at android.widget.AbsListView.onLayout(AbsListView.java:2151) at android.view.View.layout(View.java:15671) at android.view.ViewGroup.layout(ViewGroup.java:5038) at android.support.v4.widget.SwipeRefreshLayout.onLayout(SwipeRefreshLayout.java:562) at android.view.View.layout(View.java:15671) at android.view.ViewGroup.layout(ViewGroup.java:5038) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579) at android.widget.FrameLayout.onLayout(FrameLayout.java:514) at android.view.View.layout(View.java:15671) at android.view.ViewGroup.layout(ViewGroup.java:5038) at android.support.design.widget.CoordinatorLayout.layoutChild(CoordinatorLayout.java:1009) at android.support.design.widget.CoordinatorLayout.onLayoutChild(CoordinatorLayout.java:719) at android.support.design.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:733) at android.view.View.layout(View.java:15671) at android.view.ViewGroup.layout(ViewGroup.java:5038) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579) at android.widget.FrameLayout.onLayout(FrameLayout.java:514) at android.view.View.layout(View.java:15671) at android.view.ViewGroup.layout(ViewGroup.java:5038) at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703) at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557) at android.widget.LinearLayout.onLayout(LinearLayout.java:1466) at android.view.View.layout(View.java:15671) at android.view.ViewGroup.layout(ViewGroup.java:5038) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579) at android.widget.FrameLayout.onLayout(FrameLayout.java:514) at android.view.View.layout(View.java:15671) at android.view.ViewGroup.layout(ViewGroup.java:5038) at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:907) at android.view.View.layout(View.java:15671) at android.view.ViewGroup.layout(ViewGroup.java:5038) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579) at android.widget.FrameLayout.onLayout(FrameLayout.java:514) at android.view.View.layout(View.java:15671) at android.view.ViewGroup.layout(ViewGroup.java:5038) at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703) at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557) at android.widget.LinearLayout.onLayout(LinearLayout.java:1466) at android.view.View.layout(View.java:15671) at android.view.ViewGroup.layout(ViewGroup.java:5038) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579) at android.widget.FrameLayout.onLayout(FrameLayout.java:514) at android.view.View.layout(View.java:15671) at android.view.ViewGroup.layout(ViewGroup.java:5038) at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703) at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557) at android.widget.LinearLayout.onLayout(LinearLayout.java:1466) at android.view.View.layout(View.java:15671) at android.view.ViewGroup.layout(ViewGroup.java:5038) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579) at android.widget.FrameLayout.onLayout(FrameLayout.java:514) at android.view.View.layout(View.java:15671) at android.view.ViewGroup.layout(ViewGroup.java:5038) at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2086) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1843) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1061) at android.view.ViewRootImpl$TraversalRunnabl

Notice: Undefined index: item in /var/www/......./ShoppingList_backend/api.php on line 11

Fresh install of the app. Fresh git clone. I enter the authentication in the app. Going to .../install.php on the server, I filled in the details (I'm using sqlite). When trying to connect, the app shows me the following error.

"The response did not make sense "Notice: Undefined index: item in /var/www/............./ShoppingList_backend/api.php on line 11 Notice: Undefined index: count in /var/ww""

The rest of the error is cut off.

From using Wireshark with the filter "http.method == "POST"" at the same time, I can see that the POST being sent is auth=.... and function=listall. So that seems OK.

How can I help debugging this?

Mismatching tag

Latest tag is v1.2, but build.gradle still says versionCode 2 and versionName "1.1".

Are favourites local ?

I have been using ShoppingList on my phone for a while now and adding favourite items. Cool!
I recently installed it to our other devices , but when I go to add a favourite item on these new devices it shows 'You have no favourites yet - add some!'
Are the favourites only stored locally on each device ?
Could these favourite items also be sync'ed and stored on the server ?
Thanks.

App crashes when orientation changes

When I start the app in landscape mode and turn my phone to portrait mode the app crahes. Same behavior when I switch from portrait to landscape mode.

More flexible Host configurations

presently, I must put https://MYHOST.com/sholi/api.php exactly. I cannot omit the https:// and I cannot omit the api.php. The sub-text of the item says "the location of api.php", which makes me think that I should put the folder in which api.php resides, not to put the exact path in.

It should not care whether https://, http://, or whatever is preceding the address, and it should be clearer as to whether it expects an exact path or not.

Do not show single item entries.

It might be best design to default to an unspecified quantity that does not show in the list: Only when multiples are needed (and specified by the user) will a number show up. Otherwise, there's a bunch of 1s on the list that clutter up the interface and make it more difficult to discern when multiples are needed.

Thanks for the great app! I love it!

API Level

Is it possible to make the app compatible to lower api levels (my personal wish would be 18 ;) )?

Remember all items for completion

When using trolly there is one (and perhaps only one ;)) advantage against this application: it remembers all items ever entered and suggests them for completion. So, currently, I don't have to type more than a few characters for frequently bought items (e.g., just 'ml' for 'mléko” (milk in Czech)).

Picked-Up Items

It would be nice if once the items had been picked up and put into the basket you could use a swipe-to-the-right gesture to slide the item off the screen.

This way the font could stay nice and readable , the list would be reduced as the shopping is done and unavailable items would be left behind on the list for the next shopping trip or store.

This may have been fixed in client version > 1.0 but I couldn't get version 1.1 to work.

keyboard enhancements

When creating an new item keyboard should pop up automatically. At the moment I have to touch on "Artikel" (I'm from germany).

The same applies to when I want to modify the count value for an item on the list. At the moment I have to touch on the "number" to get the keyboard. Keyboard should pop up automatically AND the current value should be preselected, so when I enter "2" I get "2". At the moment I get "12" because cursor is behind the current value.

1.3 isn't able to build.

App version 1.3 could not be built from F-Droid. View the wiki and the build log.
The reason is that material_dialogs could not be downloaded. I could recreate this issue locally. You may try to include this into your repo.

Add QR for configuration

Offer the possibility to scan a QR code to automatically configure app.
Also give the option to display current config as QR code to scan for other users.

More Lists

Maybe you can add a function to add more lists

Edit item

Especially on a phone, it is too easy to make (especially, when my wife has MS and her hands are a bit shakey). How can I edit the text of an item?

Check for Backend Update

Implement a check if the backend can be updated and/or if security related issues have been fixed.
Add a checkbox to disable notifications.

"favourites" star when editing items

an item can currently only be added to favourites when creating it.
if user realizes that an already existing item should be a favourite there's no way to mark it.
please add the "favourites" star to the edit list item dialog.

[Request] Plus/Minus buttons on item quantity

I think it would be helpful to have buttons that one could press to increment/decrement the number of items needed. That way one does not have to tap on the number box, wait for the keyboard to pop up, hit backspace, and then press the number desired.

shelf number and custom sorting

I'm used to sort my list by shelfs. So when I go through my favorite supermarket I don't have to scroll up and down. Implementation is quiet easy:

  1. You: Provide another optional field named "shelf number" (or "priority" or what ever) in the item creation dialog. It should be optional or preset with "0" (see more on "0" below).
  2. Me: When I create new items I enter the shelf number, e.g. "1" for the shelf next to the entrance and so on.
  3. You: sort by "shelf number + alphabetically", so all items with shelf number "1" are before any other items with higher shelf number. Within each group they are sorted alphabetically. In addition all items without any shelf number should go to the top.
  4. You: display the shelf number in the list, so its clear which items are sorted by shelfs and which are not. Example:

Shoes
Toys
1 Bred
1 Coffee
1 Marmelade
2 Chips
2 Chocolate
3 Juice

Programatically you could treat shelf-number "0" as "no shelf number". So sorting becomes very easy by "shelf number" starting from 0 + alphabetically. When displaying the list just hide "0" so those items seem to have no shelf number. In the item creation dialog you could preset the field with 0.

Sorting of the favorites list should not take shelf numbers into accounts: so just alphabetically here.

Settings -> Authkey description misleading

In the android app, under "settings", the comment underneath "AuthKey" reads now

Please provide your authentication token (defined in api.php)

But shouldn't it be:

Please provide your authentication token (defined in config.php)

Untrusted/Self-signed certificates

Very nice project. Thank you.

I am stuck using a self-signed certificate because I use a home server. Can you please give the option to accept a self-signed certificate? It works if I install the certificate to the device but that is not an option in some cases.

Thank you!

Design Question

I have a couple of things that I dont think are perfect such as the swiping to dismiss. I don't think it works that well.

I would be happy for any suggestions how to elegantly solve it.

My idea / suggestion:

  • add a checkmark to each row, so you can mark each item as checked
  • the clear list button in the options menu removes only checked items

Please open an issue with each suggestion, so we can keep it organized.

Thanks for your feedback!

Also if anyone has any idea for a more elegant icon, I would be happy to hear! :)

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.