From f4daf821c8246166ed01a7428f477ec995d64617 Mon Sep 17 00:00:00 2001 From: Jordan Eldredge Date: Wed, 25 Jun 2025 15:22:20 -0700 Subject: [PATCH] Add methods to toggle repeat and shuffle --- .../docs/06_API/02_webamp-constructor.md | 2 ++ .../docs/06_API/03_instance-methods.md | 20 +++++++++++++++++++ packages/webamp-docs/docs/API/01_track.md | 0 .../docs/API/03_instance-methods.md | 0 packages/webamp/CHANGELOG.md | 7 +++++++ packages/webamp/js/webampLazy.tsx | 14 +++++++++++++ 6 files changed, 43 insertions(+) create mode 100644 packages/webamp-docs/docs/API/01_track.md create mode 100644 packages/webamp-docs/docs/API/03_instance-methods.md diff --git a/packages/webamp-docs/docs/06_API/02_webamp-constructor.md b/packages/webamp-docs/docs/06_API/02_webamp-constructor.md index 71749af4..82bdc832 100644 --- a/packages/webamp-docs/docs/06_API/02_webamp-constructor.md +++ b/packages/webamp-docs/docs/06_API/02_webamp-constructor.md @@ -239,6 +239,8 @@ const webamp = new Webamp({ ### `enableMediaSession` +**Since** 2.1.3 + Have Webamp connect to the browser's [Media Session API](https://developer.mozilla.org/en-US/docs/Web/API/Media_Session_API), if the browser supports it. **Default:** `false`. diff --git a/packages/webamp-docs/docs/06_API/03_instance-methods.md b/packages/webamp-docs/docs/06_API/03_instance-methods.md index d0cf9c92..1e2b7513 100644 --- a/packages/webamp-docs/docs/06_API/03_instance-methods.md +++ b/packages/webamp-docs/docs/06_API/03_instance-methods.md @@ -180,6 +180,16 @@ if (webamp.isShuffleEnabled()) { } ``` +### `toggleShuffle(): void` + +Toggle shuffle mode between enabled and disabled. + +**Since** 2.1.3 + +```ts +webamp.toggleShuffle(); +``` + ### `isRepeatEnabled(): boolean` Check if repeat is enabled. @@ -192,6 +202,16 @@ if (webamp.isRepeatEnabled()) { } ``` +### `toggleRepeat(): void` + +Toggle repeat mode between enabled and disabled. + +**Since** 2.1.3 + +```ts +webamp.toggleRepeat(); +``` + ### `renderWhenReady(domNode: HTMLElement): Promise` Webamp will wait until it has fetched the skin and fully parsed it, and then render itself into a new DOM node at the end of the `` tag. diff --git a/packages/webamp-docs/docs/API/01_track.md b/packages/webamp-docs/docs/API/01_track.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/webamp-docs/docs/API/03_instance-methods.md b/packages/webamp-docs/docs/API/03_instance-methods.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/webamp/CHANGELOG.md b/packages/webamp/CHANGELOG.md index 8f31ab6b..1d6a58d1 100644 --- a/packages/webamp/CHANGELOG.md +++ b/packages/webamp/CHANGELOG.md @@ -2,6 +2,13 @@ ### Improvements +## 2.1.3 [UPCOMING] + +### Improvements + +- Added new `Webamp` instance methods: + - `webamp.toggleShuffle` + - `webamp.toggleRepeat` - Add new config option `enableMediaSession` to allow Webamp to connect to the browser's Media Session API. This enables OS/hardware level media controls like play/pause/next/previous. ## 2.1.2 [CURRENT] diff --git a/packages/webamp/js/webampLazy.tsx b/packages/webamp/js/webampLazy.tsx index 22a2aea6..e27d9917 100644 --- a/packages/webamp/js/webampLazy.tsx +++ b/packages/webamp/js/webampLazy.tsx @@ -263,6 +263,13 @@ class Webamp { return Selectors.getShuffle(this.store.getState()); } + /** + * Toggle shuffle mode between enabled and disabled. + */ + toggleShuffle(): void { + this.store.dispatch(Actions.toggleShuffle()); + } + /** * Check if repeat is enabled */ @@ -270,6 +277,13 @@ class Webamp { return Selectors.getRepeat(this.store.getState()); } + /** + * Toggle repeat mode between enabled and disabled. + */ + toggleRepeat(): void { + this.store.dispatch(Actions.toggleRepeat()); + } + /** * Play the next track */