@@ -29,6 +29,7 @@ import { useTranslation } from "react-i18next";
2929import { languageNames } from "../types/supportedLanguages" ;
3030import { isSafari } from "../helpers/safariHelper" ;
3131import { Icon } from "./Icon" ;
32+ import { isTauri } from "@tauri-apps/api/core" ;
3233
3334import { resetAllDialogPreferences } from "../helpers/musicIndexedDbHelper" ;
3435import {
@@ -180,6 +181,36 @@ export const Settings = ({
180181 }
181182 } ;
182183
184+ const [ discordRpcStatus , setDiscordRpcStatus ] = useState <
185+ "unknown" | "available" | "unavailable" | "unsupported"
186+ > ( "unknown" ) ;
187+
188+ const isTauriEnv = isTauri ( ) ;
189+
190+ const checkDiscordRpcStatus = async ( ) => {
191+ if ( ! isTauriEnv ) {
192+ setDiscordRpcStatus ( "unsupported" ) ;
193+ return ;
194+ }
195+
196+ try {
197+ const { invoke } = await import ( "@tauri-apps/api/core" ) ;
198+ const available = await invoke ( "is_discord_running" ) ;
199+ setDiscordRpcStatus ( available ? "available" : "unavailable" ) ;
200+ } catch ( error ) {
201+ console . error ( "Failed to check Discord RPC status:" , error ) ;
202+ setDiscordRpcStatus ( "unavailable" ) ;
203+ }
204+ } ;
205+
206+ useEffect ( ( ) => {
207+ if ( settings . discordEnabled ) {
208+ checkDiscordRpcStatus ( ) ;
209+ } else {
210+ setDiscordRpcStatus ( "unknown" ) ;
211+ }
212+ } , [ settings . discordEnabled ] ) ;
213+
183214 // Dynamic Eruda loading/unloading functions
184215 const loadEruda = ( ) => {
185216 return new Promise < void > ( ( resolve , reject ) => {
@@ -910,6 +941,28 @@ export const Settings = ({
910941 </ div >
911942 </ div >
912943 ) }
944+
945+ < div className = { styles . settingItem } >
946+ < div className = { styles . settingInfo } >
947+ < label > { t ( "discord.status" ) } </ label >
948+ < p className = { styles . settingDescription } >
949+ { discordRpcStatus === "unknown" && t ( "discord.statusUnknown" ) }
950+ { discordRpcStatus === "unsupported" &&
951+ t ( "discord.statusUnsupported" ) }
952+ { discordRpcStatus === "available" &&
953+ t ( "discord.statusAvailable" ) }
954+ { discordRpcStatus === "unavailable" &&
955+ t ( "discord.statusUnavailable" ) }
956+ </ p >
957+ </ div >
958+ < Button
959+ variant = "outline"
960+ onClick = { checkDiscordRpcStatus }
961+ disabled = { ! isTauriEnv }
962+ >
963+ { t ( "discord.refreshStatus" ) }
964+ </ Button >
965+ </ div >
913966 </ >
914967 ) }
915968
0 commit comments