diff --git a/src/components/media-controls/media-controls.tsx b/src/components/media-controls/media-controls.tsx
index 60cf477..3f00891 100644
--- a/src/components/media-controls/media-controls.tsx
+++ b/src/components/media-controls/media-controls.tsx
@@ -1,9 +1,16 @@
-import { useMediaSessionStore } from '@/stores/media-session';
-
import { MediaSessionTrack } from './media-session-track';
+import { useEffect, useState } from 'react';
+import { useSSR } from '@/hooks/use-ssr';
export function MediaControls() {
- const mediaControlsEnabled = useMediaSessionStore(state => state.enabled);
+ const [mediaControlsEnabled, setMediaControlsEnabled] = useState(false);
+ const { isBrowser } = useSSR();
+
+ useEffect(() => {
+ if (!isBrowser) return;
+
+ setMediaControlsEnabled('mediaSession' in navigator);
+ }, [isBrowser]);
if (!mediaControlsEnabled) {
return null;
diff --git a/src/components/menu/items/media-controls.tsx b/src/components/menu/items/media-controls.tsx
deleted file mode 100644
index 4496555..0000000
--- a/src/components/menu/items/media-controls.tsx
+++ /dev/null
@@ -1,20 +0,0 @@
-import { IoMdPlayCircle } from 'react-icons/io/index';
-
-import { Item } from '../item';
-
-export function MediaControls({
- active,
- onClick,
-}: {
- active: boolean;
- onClick: () => void;
-}) {
- return (
- }
- label="Media Controls"
- onClick={onClick}
- />
- );
-}
diff --git a/src/components/menu/menu.tsx b/src/components/menu/menu.tsx
index df229ff..ff3eb12 100644
--- a/src/components/menu/menu.tsx
+++ b/src/components/menu/menu.tsx
@@ -29,17 +29,10 @@ import { useSoundStore } from '@/stores/sound';
import styles from './menu.module.css';
import { useCloseListener } from '@/hooks/use-close-listener';
import { closeModals } from '@/lib/modal';
-import { MediaControls } from './items/media-controls';
-import { useMediaSessionStore } from '@/stores/media-session';
export function Menu() {
const [isOpen, setIsOpen] = useState(false);
- const mediaControlsEnabled = useMediaSessionStore(state => state.enabled);
- const toggleMediaControls = useMediaSessionStore(state => state.toggle);
- const isMediaSessionSupported = useMediaSessionStore(
- state => state.isSupported,
- );
const noSelected = useSoundStore(state => state.noSelected());
const initial = useMemo(
@@ -115,12 +108,6 @@ export function Menu() {
>
open('presets')} />
open('shareLink')} />
- {isMediaSessionSupported ? (
-
- ) : null}
open('sleepTimer')} />
diff --git a/src/components/store-consumer/store-consumer.tsx b/src/components/store-consumer/store-consumer.tsx
index d1b3adb..101be03 100644
--- a/src/components/store-consumer/store-consumer.tsx
+++ b/src/components/store-consumer/store-consumer.tsx
@@ -3,7 +3,6 @@ import { useEffect } from 'react';
import { useSoundStore } from '@/stores/sound';
import { useNoteStore } from '@/stores/note';
import { usePresetStore } from '@/stores/preset';
-import { useMediaSessionStore } from '@/stores/media-session';
interface StoreConsumerProps {
children: React.ReactNode;
@@ -14,7 +13,6 @@ export function StoreConsumer({ children }: StoreConsumerProps) {
useSoundStore.persist.rehydrate();
useNoteStore.persist.rehydrate();
usePresetStore.persist.rehydrate();
- useMediaSessionStore.persist.rehydrate();
}, []);
return <>{children}>;
diff --git a/src/stores/media-session/index.ts b/src/stores/media-session/index.ts
deleted file mode 100644
index bd25aef..0000000
--- a/src/stores/media-session/index.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import { create } from 'zustand';
-import { createJSONStorage, persist } from 'zustand/middleware';
-import merge from 'deepmerge';
-
-import {
- createActions,
- type MediaControlsActions,
-} from './media-session.actions';
-import { createState, type MediaControlsState } from './media-session.state';
-
-export const useMediaSessionStore = create<
- MediaControlsState & MediaControlsActions
->()(
- persist(
- (...a) => ({
- ...createState(...a),
- ...createActions(...a),
- }),
- {
- merge: (persisted, current) =>
- merge(
- current,
- // @ts-ignore
- persisted,
- ),
- name: 'moodist-media-session',
- partialize: state => ({ enabled: state.enabled }),
- skipHydration: true,
- storage: createJSONStorage(() => localStorage),
- version: 0,
- },
- ),
-);
diff --git a/src/stores/media-session/media-session.actions.ts b/src/stores/media-session/media-session.actions.ts
deleted file mode 100644
index 3083679..0000000
--- a/src/stores/media-session/media-session.actions.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import type { StateCreator } from 'zustand';
-import type { MediaControlsState } from './media-session.state';
-
-export interface MediaControlsActions {
- disable: () => void;
- enable: () => void;
- toggle: () => void;
-}
-
-export const createActions: StateCreator<
- MediaControlsActions & MediaControlsState,
- [],
- [],
- MediaControlsActions
-> = (set, get) => {
- return {
- disable() {
- set({ enabled: false });
- },
-
- enable() {
- set({ enabled: true });
- },
-
- toggle() {
- set({ enabled: !get().enabled });
- },
- };
-};
diff --git a/src/stores/media-session/media-session.state.ts b/src/stores/media-session/media-session.state.ts
deleted file mode 100644
index a776e13..0000000
--- a/src/stores/media-session/media-session.state.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import type { StateCreator } from 'zustand';
-
-import type { MediaControlsActions } from './media-session.actions';
-
-export interface MediaControlsState {
- enabled: boolean;
- isSupported: boolean;
-}
-
-export const createState: StateCreator<
- MediaControlsState & MediaControlsActions,
- [],
- [],
- MediaControlsState
-> = () => ({
- enabled: false,
- isSupported: 'mediaSession' in navigator,
-});