diff --git a/web/src/lib/components/album-page/albums-list.svelte b/web/src/lib/components/album-page/albums-list.svelte
index 607457e1c..1e308b463 100644
--- a/web/src/lib/components/album-page/albums-list.svelte
+++ b/web/src/lib/components/album-page/albums-list.svelte
@@ -1,5 +1,5 @@
@@ -227,6 +263,18 @@
{#if albums.length > 0}
+
{#each albumsFiltered as album, index (album.id)}
diff --git a/web/src/lib/components/album-page/albums-table.svelte b/web/src/lib/components/album-page/albums-table.svelte
index e77dc93d8..6a0988853 100644
--- a/web/src/lib/components/album-page/albums-table.svelte
+++ b/web/src/lib/components/album-page/albums-table.svelte
@@ -8,6 +8,7 @@
import type { Sort } from '$lib/components/album-page/albums-list.svelte';
import { locale } from '$lib/stores/preferences.store';
import { dateFormats } from '$lib/constants';
+ import { user } from '$lib/stores/user.store';
export let albumsFiltered: AlbumResponseDto[];
export let sortByOptions: Sort[];
@@ -66,18 +67,20 @@
>
- onAlbumToEdit(album)}
- class="rounded-full z-1 bg-immich-primary p-3 text-gray-100 transition-all duration-150 hover:bg-immich-primary/75 dark:bg-immich-dark-primary dark:text-gray-700"
- >
-
-
- onChooseAlbumToDelete(album)}
- class="rounded-full z-1 bg-immich-primary p-3 text-gray-100 transition-all duration-150 hover:bg-immich-primary/75 dark:bg-immich-dark-primary dark:text-gray-700"
- >
-
-
+ {#if $user.id === album.ownerId}
+ onAlbumToEdit(album)}
+ class="rounded-full z-1 bg-immich-primary p-3 text-gray-100 transition-all duration-150 hover:bg-immich-primary/75 dark:bg-immich-dark-primary dark:text-gray-700"
+ >
+
+
+ onChooseAlbumToDelete(album)}
+ class="rounded-full z-1 bg-immich-primary p-3 text-gray-100 transition-all duration-150 hover:bg-immich-primary/75 dark:bg-immich-dark-primary dark:text-gray-700"
+ >
+
+
+ {/if}
{/each}
diff --git a/web/src/lib/components/elements/group-tab.svelte b/web/src/lib/components/elements/group-tab.svelte
new file mode 100644
index 000000000..7cf4bc5e9
--- /dev/null
+++ b/web/src/lib/components/elements/group-tab.svelte
@@ -0,0 +1,20 @@
+
+
+
+ {#each filters as filter, index}
+ onSelect(filter)}
+ >
+ {filter}
+
+ {/each}
+
diff --git a/web/src/lib/stores/preferences.store.ts b/web/src/lib/stores/preferences.store.ts
index ff158722e..baac5b904 100644
--- a/web/src/lib/stores/preferences.store.ts
+++ b/web/src/lib/stores/preferences.store.ts
@@ -70,6 +70,7 @@ export interface AlbumViewSettings {
sortBy: string;
sortDesc: boolean;
view: string;
+ filter: string;
}
export interface SidebarSettings {
@@ -87,10 +88,17 @@ export enum AlbumViewMode {
List = 'List',
}
+export enum AlbumFilter {
+ All = 'All',
+ Owned = 'Owned',
+ Shared = 'Shared',
+}
+
export const albumViewSettings = persisted
('album-view-settings', {
sortBy: 'Most recent photo',
sortDesc: true,
view: AlbumViewMode.Cover,
+ filter: AlbumFilter.All,
});
export const showDeleteModal = persisted('delete-confirm-dialog', true, {});
diff --git a/web/src/routes/(user)/albums/+page.svelte b/web/src/routes/(user)/albums/+page.svelte
index 0e98ae6f1..7c4380b59 100644
--- a/web/src/routes/(user)/albums/+page.svelte
+++ b/web/src/routes/(user)/albums/+page.svelte
@@ -13,5 +13,5 @@
-
+
diff --git a/web/src/routes/(user)/albums/+page.ts b/web/src/routes/(user)/albums/+page.ts
index 5f2ae4abb..a76231485 100644
--- a/web/src/routes/(user)/albums/+page.ts
+++ b/web/src/routes/(user)/albums/+page.ts
@@ -4,10 +4,12 @@ import type { PageLoad } from './$types';
export const load = (async () => {
await authenticate();
+ const sharedAlbums = await getAllAlbums({ shared: true });
const albums = await getAllAlbums({});
return {
albums,
+ sharedAlbums,
meta: {
title: 'Albums',
},
diff --git a/web/static/favicon-144.png b/web/static/favicon-144.png
index 66c75b0b5..e9f8f63d9 100644
Binary files a/web/static/favicon-144.png and b/web/static/favicon-144.png differ
diff --git a/web/static/favicon-16.png b/web/static/favicon-16.png
index a26e052df..779b6df89 100644
Binary files a/web/static/favicon-16.png and b/web/static/favicon-16.png differ
diff --git a/web/static/favicon-32.png b/web/static/favicon-32.png
index ed86cbc4e..316320c28 100644
Binary files a/web/static/favicon-32.png and b/web/static/favicon-32.png differ
diff --git a/web/static/favicon-48.png b/web/static/favicon-48.png
index 0e0bedac5..b7ad75d67 100644
Binary files a/web/static/favicon-48.png and b/web/static/favicon-48.png differ
diff --git a/web/static/favicon-96.png b/web/static/favicon-96.png
index 7ef070839..184ae4f6b 100644
Binary files a/web/static/favicon-96.png and b/web/static/favicon-96.png differ
diff --git a/web/static/favicon.ico b/web/static/favicon.ico
index 6082fc3bd..7ec34e9e5 100644
Binary files a/web/static/favicon.ico and b/web/static/favicon.ico differ
diff --git a/web/static/favicon.png b/web/static/favicon.png
index 4e642631a..f718f4b36 100644
Binary files a/web/static/favicon.png and b/web/static/favicon.png differ