-
-
+
diff --git a/web/src/lib/components/shared-components/navigation-bar/navigation-bar.svelte b/web/src/lib/components/shared-components/navigation-bar/navigation-bar.svelte
index ce204412f2..0fd96630eb 100644
--- a/web/src/lib/components/shared-components/navigation-bar/navigation-bar.svelte
+++ b/web/src/lib/components/shared-components/navigation-bar/navigation-bar.svelte
@@ -5,13 +5,14 @@
@@ -158,7 +161,7 @@
{/if}
- void this.initialize());
}
- async initialize() {
+ private async initialize() {
// this goes first to prevent multiple calls to initialize
if (this.initialized) {
return;
diff --git a/web/src/lib/services/app.service.ts b/web/src/lib/services/app.service.ts
new file mode 100644
index 0000000000..6597b2fb5e
--- /dev/null
+++ b/web/src/lib/services/app.service.ts
@@ -0,0 +1,19 @@
+import { CastDestinationType, castManager } from '$lib/managers/cast-manager.svelte';
+import { GCastDestination } from '$lib/utils/cast/gcast-destination.svelte';
+import type { ActionItem } from '@immich/ui';
+import { mdiCast, mdiCastConnected } from '@mdi/js';
+import type { MessageFormatter } from 'svelte-i18n';
+
+export const getGlobalActions = ($t: MessageFormatter) => {
+ const Cast: ActionItem = {
+ title: $t('cast'),
+ icon: castManager.isCasting ? mdiCastConnected : mdiCast,
+ color: castManager.isCasting ? 'primary' : 'secondary',
+ $if: () =>
+ castManager.availableDestinations.length > 0 &&
+ castManager.availableDestinations[0].type === CastDestinationType.GCAST,
+ onAction: () => void GCastDestination.showCastDialog(),
+ };
+
+ return { Cast };
+};
diff --git a/web/src/routes/(user)/albums/[albumId=id]/[[photos=photos]]/[[assetId=id]]/+page.svelte b/web/src/routes/(user)/albums/[albumId=id]/[[photos=photos]]/[[assetId=id]]/+page.svelte
index 9279893fbb..5d31bc2229 100644
--- a/web/src/routes/(user)/albums/[albumId=id]/[[photos=photos]]/[[assetId=id]]/+page.svelte
+++ b/web/src/routes/(user)/albums/[albumId=id]/[[photos=photos]]/[[assetId=id]]/+page.svelte
@@ -1,7 +1,7 @@
@@ -592,7 +595,7 @@
{#if viewMode === AlbumPageViewMode.VIEW}
goto(backUrl)}>
{#snippet trailing()}
-
+
{#if isEditor}