feat(wallpaper): add apply_wallpaper workflow and rotation worker

Adds a new apply_wallpaper command and its plumbing across
desktop, mobile, and Android. A WorkManager-based rotation
worker handles applying wallpapers in the background. Wallpaper
state now tracks currentId and imageIds for precise control.

- Introduced apply_wallpaper command across desktop, mobile and Android
- Added WorkManager-based rotation worker to apply wallpapers in the
  background
- Extended wallpaper state with currentId and imageIds and updated schemas/permissions
This commit is contained in:
2026-08-21 23:15:00 +02:00
parent e494b17117
commit 73f8599c7f
25 changed files with 266 additions and 49 deletions
+11
View File
@@ -22,6 +22,8 @@ impl<R: Runtime> Wallpaper<R> {
shuffle: true,
lock_screen_only: true,
current_index: 0,
current_id: Some("demo-0".into()),
image_ids: vec!["demo-0".into(), "demo-1".into(), "demo-2".into()],
image_urls: vec![
"/wallpapers/alpine.png".into(),
"/wallpapers/waterfall.png".into(),
@@ -100,6 +102,15 @@ impl<R: Runtime> Wallpaper<R> {
pub fn next_wallpaper(&self) -> crate::Result<WallpaperState> {
let mut state = Self::demo();
state.current_index = 1;
state.current_id = Some("demo-1".into());
Ok(state)
}
pub fn apply_wallpaper(&self, payload: ApplyWallpaperRequest) -> crate::Result<WallpaperState> {
let mut state = Self::demo();
if let Some(index) = state.image_ids.iter().position(|id| id == &payload.id) {
state.current_index = index;
state.current_id = Some(payload.id);
}
Ok(state)
}
pub fn get_immich_connection(&self) -> crate::Result<ImmichConnection> {