diff --git a/.changeset/strong-foxes-know.md b/.changeset/strong-foxes-know.md
deleted file mode 100644
index 31c10ac..0000000
--- a/.changeset/strong-foxes-know.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-'svelte-podcast': minor
----
-
-- Restructures lib to make dist cleaner and dev easier to grock
-- Refactors bindings to make it easier to change values when loading a different source
-- Moves more values to micro-stores
diff --git a/.changeset/twelve-chicken-divide.md b/.changeset/twelve-chicken-divide.md
new file mode 100644
index 0000000..79c5b9b
--- /dev/null
+++ b/.changeset/twelve-chicken-divide.md
@@ -0,0 +1,5 @@
+---
+'svelte-podcast': minor
+---
+
+Adds mechanic for managing user preferences
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index fd5b523..1a1ead7 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -1,8 +1,8 @@
name: 'CI'
on:
push:
- branches:
- - '**'
+ branches-ignore:
+ - 'main'
jobs:
build:
runs-on: ubuntu-latest
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d532d73..a6fe29e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,15 @@
# svelte-podcast
+## 0.2.0
+
+### Minor Changes
+
+- 6f89448: Adds the ability to bind episode metadata to the audio store
+- a70d68d: - Restructures lib to make dist cleaner and dev easier to grock
+ - Refactors bindings to make it easier to change values when loading a different source
+ - Moves more values to micro-stores
+- 1841199: Adds save/load mechanic for episode progress
+
## 0.1.1
### Patch Changes
diff --git a/package.json b/package.json
index d2e618a..c6cadf6 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "svelte-podcast",
- "version": "0.1.1",
+ "version": "0.2.0",
"license": "MIT",
"author": "Ollie Taylor",
"homepage": "https://github.com/OllieJT/svelte-podcast/blob/main/README.md",
diff --git a/src/lib/components/audio-loader.svelte b/src/lib/components/audio-loader.svelte
index 7da7037..b508af8 100644
--- a/src/lib/components/audio-loader.svelte
+++ b/src/lib/components/audio-loader.svelte
@@ -2,44 +2,53 @@
import {
audio_autoplay,
audio_current_time,
+ audio_duration,
audio_element,
- audio_metadata,
+ audio_ended,
+ audio_loading,
audio_muted,
- audio_playback_rate,
+ audio_paused,
audio_src,
audio_start_at,
- audio_volume,
} from '$lib/context/audio-internals';
+ import { user_preferences } from '$lib/context/user-preferences';
import type { PlayerElement } from '$lib/types/types';
- import { isBoolean, isNumber } from '$pkg/type-guards';
+ import { load_podcast_state } from '$lib/utility/use-state';
+ import { onMount } from 'svelte';
+ // readonly values
let element: PlayerElement;
- let currentTime = $audio_start_at;
- let volume = $audio_volume;
-
+ let current_time = $audio_start_at;
let duration = 0;
let ended = true;
- let muted = false;
let paused = false;
- let playbackRate = 1;
- // Update stores based on bindings
+ // handler values
+ let volume = $user_preferences.volume;
+ let playbackRate = $user_preferences.playback_rate;
+ let muted = false;
+
+ // readonly - stores will update when bindings change
$: audio_element.set(element);
- $: audio_current_time.set(currentTime);
- $: audio_metadata.update((x) => ({ ...x, duration, ended, paused }));
+ $: audio_current_time.set(current_time);
+ $: audio_duration.set(duration);
+ $: audio_ended.set(ended);
+ $: audio_paused.set(paused);
- // Update bindings based on stores
- $: volume = $audio_volume;
+ // handlers - when store value changes, the binding will update the audio element
+ $: volume = $user_preferences.volume;
+ $: playbackRate = $user_preferences.playback_rate;
$: muted = $audio_muted;
- $: playbackRate = $audio_playback_rate;
- $: currentTime = $audio_start_at;
+ $: current_time = $audio_start_at;
+
+ onMount(load_podcast_state);