Automattic / Automattic/pocket-casts-android
Wear: long press seek forward to skip episode
- Dominant language
- Kotlin
- Stars
- 2.8k
- Forks
- 308
- Avg merge
- 1d 11h
- Merged PRs (30d)
- 197
Description
### Description
In the Android app, users can long press the seek forward button to skip the current episode and remove it from the queue. They are prompted whether to either mark the episode as played as well. I use this feature often and miss it in the Wear app.
I think the Wear app could have a similar feature: long press the seek forward button the skip the current episode. I prefer the behavior that also marks it as finished, but either behavior is fine.
---
I'm willing to do the work and send a PR for this. If I understand correctly (only briefly skimmed the code), [SeekForwardButtonStyled](https://github.com/Automattic/pocket-casts-android/blob/ea6410ae2c7af822c6d7d1a4551f8189c515302d/wear/src/main/kotlin/au/com/shiftyjelly/pocketcasts/wear/ui/component/horologist/SeekForwardButtonStyled.kt) depends on `MediaButton` which depends on an upstream `UnboundedRippleButton`. The `UnboundedRippleButton` has a `clickable` modifier. That can be replaced with the [`combinedClickable`](https://composables.com/foundation/combinedClickable) which allows for long presses. Then a call (to `PlaybackManager.playNextInQueue`?) has to be plumbed though as the `onLongClick` property.
So this requires a small upstream patch to horologist and some plumbing IIUC. But please let me know if I'm off base either about the value of the feature or the technical bit -- I don't really know Kotlin or Android development, but this seems simple enough.
### Screenshots or screen recording
_No response_
### Did you search for existing list?
- [x] I have searched for existing issues.
Contributor guide
Research direction
Start with wear/src/main/kotlin/au/com/shiftyjelly/pocketcasts/wear/ui/component/horologist/SeekForwardButtonStyled.kt and trace its MediaButton and upstream UnboundedRippleButton usage. Check how PlaybackManager.playNextInQueue is exposed, then verify that a long press skips the current episode and removes it from the queue, with the intended played-state behavior confirmed.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android, kotlin
- Domain
- mobile-dev
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100