Automattic / Automattic/pocket-casts-android

Wear: long press seek forward to skip episode

Open
#3,634 1 comment 0 reactions 0 assignees View on GitHub
[Area] Wear OS [Type] Enhancement
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.