-
-
Notifications
You must be signed in to change notification settings - Fork 3.1k
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
Add enqueue background choice for share service. #5850
Conversation
Thank you! :-D |
@Stypox Thanks for the quick response. Before I make changes, just want to sync up with you to make sure that I fully understand what you're suggesting as I'm catching up with your previous changes. I have 2 points of confusion which I'd like to run by you.
On top of that, it would be nice to hear high level goals you have in mind so that we are on the same page. Maybe something like:
These are just my guesses and would like you hear your thoughts. Cheers! |
Sorry for not being clear, it's difficult to decide on the best behaviour. Here is a poll, please vote on this comment using the emoji before the option descriptions (i.e. 🚀 for 1 🚀 Automatic enqueue when selecting "Play on XX" and there is a player already open:
2 Adding an "Enqueue" action in the share menu that shows up only if there is a player already open and that player is compatible with the shared stream type; all other actions replace the current queue (as it is done now):
3 👍 Add a switch in settings named "Always enqueue shared stream if a player is already open":
In my opinion the best option is |
@89z I didn't include that option since there are too many open questions which would either require a new setting or be unintuitive for new users:
I think your use case would be suited well-enough by the 2nd option, either 2.1 or 2.2.
You may also like option 1, which is the same behaviour as older NewPipe versions |
Because Enqueue relates to the player currently open, having an Enqueue that changes the player is inconsistent and we already decided to remove that for long press menus. |
@SameenAhnaf why wouldn't your sister also be suited by 2.1? And I disagree that adding complexity is a good thing, none of the people I suggested NewPipe to would be so passionate to spend a day nitpicking their preferred settings, and this is not just my opinion, I think it's also written in material guidelines. @opusforlife2 that's totally a different issue though |
Would it not be less work in the future if this were to be implemented keeping that in mind? Or am I counting eggs before they hatch? |
@SameenAhnaf Please give constructive feedback only. And calm down! It's just an app. Not worth arguing over. |
I don't know if this thread is the right time and place, but I have noticed an issue with this patch.
At this point, the application for me most often stops working and shuts down without any warning. |
@SameenAhnaf Such is the way of software development. Sometimes developers do things that some users don't agree with. The best thing the user can do to empower themselves is to learn programming and implement whatever they want without any obstruction. The second best thing is to provide alternative solutions to the described problem. Keep proposing ideas until the developers agree with one, and if you run out of ideas, then wait for someone else to propose yet more ideas. In any case, whatever you do, make sure you never hurt the developers in your communications. Even in an extreme case where you find that the next app update is just a splash screen and nothing works. It's volunteer work. |
@s1awek If you encounter this bug only on this PR's apk, then this is definitely the right place to report it. Make sure to provide a crash report if you get one. |
@opusforlife2 there is no option to send crash raport, the app just stops working without any message or warning. |
@s1awek Alright. In that case, describing the steps is good enough. |
@SameenAhnaf no problem, I don't think you were too bothering. ;-) |
@Stypox Thanks for the elaboration. After weighing those options, I was wondering something like 2+3. Here are my observations:
In this dialog design:
I think this can be a good compromise. Let me know what you guys think. |
Thank you for your compliment and suggestions @SameenAhnaf.
Indeed, the wording can be further improved. The point that @Stypox keeps bringing up is that a stream may be enqueued to different player depending on which one is currently-opened. Also, the stream that users choose to share at the moment would be affected immediately too, as opposed to next streams. Some alternatives could better describe it meant for the switch/checkbox like:
Appreciate any help to make the UI intuitive, since I'm not native English speaker. Also, to make sure we are on the same page about what this piece of UI really means. Cheers! |
im with stypox, a simple enqueue button (the same from long press menu) is better then a specific enqueue in background because it would work with all players. anyway in a different topic, i would like your opinion (and everyone else for that matter) on adding an option to the long press menu - called "start playing from here" - that would only show up within playlists. the reason is at current setup, it is very hard to start playing a playlists other then from the beginning. (try it to have a better understanding). although there are some workarounds, but at the end they are workarounds and not proper solutions. if you guys think its a good idea, then i would be happy to open a new issue to further discuss it. |
@MD77MD Thank you for your input. Would you mind elaborating your use case step by step because I am not familiar with the main UI and unable to see the "enqueue" button in the menu from long press menu as of today? Also, it would be helpful if you could provide screenshots so that I can try to replicate how people interacting with the UI as of today. :) Plus, could you also tell me more about how a specific enqueue in background is better working with all players comparing to my proposal with a enqueue switch/checkbox in the context of sharing URL from outside NewPipe UI? I thought I covered this use case as @Stypox pointed out. I keep scratching my head for a while but still have hard time envision what people have in mind. Cheers! |
@chouhanyang My suggestion is basically stypox 2.1 option with some useful tweaks. so when no video is playing, the share menu should look like usually but once a video is playing, the share menu would look like this (sorry for the weird editing 😋... ) it would contain 4 options :
This is the most simplistic but attendee to all use cases. however you can use it to build upon it any further improvements |
@MD77MD Thank you for your awesome mock-ups. Now I have better grasp of what you and @Stypox meant for hiding enqueue option if no player is running. However, I'm still not getting answers from your design regarding my use case. Particularly, with "Background player" + "Always" chosen in your first menu, and then the second menu would be permanently dismissed. Therefore, your second menu would have no chance to be shown:
Does this flow make sense based on your design? Hopefully I'm not making circles. Cheers! |
@SameenAhnaf I have the repeat what 89z said, please don't just at 10+people. I can see that Stypox is already working on this PR. If additional opinions are needed he will mention us. Or you can selectively get the opinions of single people, not from this many people at once |
Folks, I spent last weekend to play around the code as @Stypox suggested. And I found a problem with current implementation. Mainly, PlayerHolder.getType() always return null when the main UI view is not activated and background player is running. Invoking NavigationHelper.playOnBackgroundPlayer() doesn't help as the background video will keep running in background without real "player". I believe it is just partial UI fragment running as a service. It took me several hours to figure this out, however finding a way to fix this is beyond my knowledge how the background services and UI interact with each other. More help is needed here. At this point, sadly to say I was unable to implement the popular design 2.1 because we are unable to determine what is the "currently-running player". Furthermore, I believe it would incur several UI weirdness down the road, as I still don't get any direct answers from this thread to help me confident enough for 2.1 implementation regarding my use case. So I took the liberty to implement the UI I suggested previously with extra switch in the settings. You can find the release below if you like to play around: Basically, the switch will change it back to old NewPipe behavior as we don't have a reliable PlayerHolder.getType() working. Suddenly, the current minimal fix with "Enqueue background" doesn't seem so bad if you guys prefer a temporary fix before something better can be implemented. So I will leave the decision to the core team. @Stypox Let me know which way you'd like to proceed. Do you want me to send PR implementing the switch or you want to continue with the temporary fix "Enqueue background"? You can see SavantOne@1a45843 for my comments regarding PlayerHolder.getType() not working. Thanks! |
Folks, after this long thread, I feel a bit overwhelmed by sheer number the design proposals and it seems we are losing focus on the original goal we are trying to achieve, that is to provide a temporary enqueue from share URL. If this PR gets larger, there will be less chance to get it given its complexity. What helps I'm asking is:
My knowledge to this project is limited. So appreciate if you could guide me through step by step and treat me like a dumb. Plus, remember the goal for this PR is just a step stone toward a better future designs. Thx. @SameenAhnaf I don't understand what's the "Always ask" menu you're referring to. For the code, NewPipe could be running as an service in background, so it is not clear to me what is the definition of NewPipe open/close. I'd be happy to discuss this with you offline. However I think it is already off-topic from this thread. Cheers! |
@SameenAhnaf Thanks for the clarification. Based on my humble experiences, the "always" button doesn't mean always ask. It means always use the select choice as default action. The design pattern is pretty common on android platform: We could argue the pros and cons for our UI design, however, it is impossible to change all other apps all together. That is why following the common pattern, IMO, is preferred which prevents confusing users. On the other hand, given choice to improve the wording, I'd replace "Always ask" in the settings dialog to "Ask by default" or "Reset to default", which better describe its true behavior. Back to your design suggestions, I would recommend telling us what is the use case and scenarios based on your personal experiences. We could imagining endless ways to design the UI, however, it is most valuable to know what difficulties and experiences people have based on their own user experience. Take me for example, I open YouTube app first. Find video streams, and keep enqueuing them. I'd repeat this 20+ times everyday, so always "Enqueue background" is crucial to me because I hate to see the share dialog every time because I have only one choice "Enqueue background". On the other hand, for the basic users, clarity should be prioritized to them when they share an URL. Especially, a visible response is important as an confirmation. IMO, there are different focuses for basic users and advanced users:
Given this guideline, always asking advanced users for enqueue is less ideal. I would have to repeat this 20+ clicks everyday if you could imagine. On the other hand, I do think current UI to open players directly is good design for basic users as they expect immediate actions rather than UI efficiency. There is also a way to bridge these two groups users through "gamification". Take my favorite game FF7 remake for example, after people play the game and gather magic stones, and they will be able to see more options along with growing EXP level. You can even set shortcuts to quickly perform magic quickly for example: In short, I would rather see a polling on different use cases how people use NewPipe in terms of sharing URLs, as opposed of UI design patterns. These use cases enable us to establish a way evaluating a pieces of UI, e.g. how many use cases does this design cover? To some extends, voting on the final design may not be super helpful as there are other often obstacles while implementing down the road. Like in this case, there's no way to distinguish player type without main UI view open. Oopos! So, I'd rather hear your story. How you use it everyday step by step, and what are the UI pain points you encounter in your day to day live. Hopefully this makes sense. Cheers! |
This comment has been minimized.
This comment has been minimized.
@jmbreuer always ask is useless at the moment, because there is no enqueue options, and the workaround of "show info" has been removed in latest release.(show info only appears if there is more than 1 video in queue) |
@ThisIsPaulDaily Please add an option to queue. |
#5850 (comment) I believe @Stypox suggestions are best.
Also, thus option should override both/either above
|
This comment has been minimized.
This comment has been minimized.
Is Queue being added to any milestones; i.e. 20.7? |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is my informal review. I see no issues in the changes provided here. While some might feel phrasing of text can change, I feel that this ticket has been open since March and has potential benefits to users and should be merged.
Could you rebase the PR. There are merge conflicts. |
final boolean prioritizeEnqueue = preferences.getBoolean( | ||
getString(R.string.prioritize_enqueue), | ||
false); | ||
// BUG: getType() always return null if main view is not open. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please check after rebasing if this is still a thing 😄
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just rebased the code and updated the repo. Please let me know if there's anything I can do on my side. Thanks!
This comment has been minimized.
This comment has been minimized.
@litetex Oops, sorry about that, I didn't realized that the NavigationHelper interface has been changed. Now I have updated the code, and successfully build apk with it. Also did some basic testing to make sure it still works. Also now passed CI checks. Let me know if there more testing I can do here. Thanks! |
I tried to add multiple improvements to the PR by myself but it's not possible for a maintainer to modify the PR and I otherwise had to request so many tiny changes which would be very resource-intensive. Because of these reasons I opened a new PR: #7266 Again thank you for the PR! |
Add a new menu item in share menu to enqueue into background player.
What is it?
Description of the changes in your PR
Fixes the following issue(s)
APK testing
https://github.com/SavantOne/NewPipe/releases/download/v0.20.11-patch/NewPipe-v0.20.11-patch.apk
Due diligence