diff --git a/packages/api-connector/src/ApiConnector.ts b/packages/api-connector/src/ApiConnector.ts index e9cf5a92..a322048d 100644 --- a/packages/api-connector/src/ApiConnector.ts +++ b/packages/api-connector/src/ApiConnector.ts @@ -303,8 +303,12 @@ class ApiConnector { ); } - bgm(id: number, cacheDuration?: number): Promise { - const query = this.getQueryString(new URLSearchParams()); + bgm(id: number, cacheDuration?: number, fileName?: string): Promise { + const params = new URLSearchParams(); + if (fileName) { + params.append("fileName", fileName); + } + const query = this.getQueryString(params); const fetch = () => { return ApiConnector.fetch(`${this.host}/nice/${this.region}/bgm/${id}${query}`); }; diff --git a/packages/db/src/Api.tsx b/packages/db/src/Api.tsx index 6bb92f98..4fb484f3 100644 --- a/packages/db/src/Api.tsx +++ b/packages/db/src/Api.tsx @@ -52,8 +52,8 @@ class Api { apiConnector = new ApiConnector({ host: Host, region, language }); } - static bgm(id: number): Promise { - return apiConnector.bgm(id, cacheDuration); + static bgm(id: number, fileName?: string): Promise { + return apiConnector.bgm(id, cacheDuration, fileName); } static bgmList(): Promise { diff --git a/packages/db/src/Component/ScriptDialogueLine.tsx b/packages/db/src/Component/ScriptDialogueLine.tsx index 367c57ed..2a3dcaf0 100644 --- a/packages/db/src/Component/ScriptDialogueLine.tsx +++ b/packages/db/src/Component/ScriptDialogueLine.tsx @@ -4,7 +4,7 @@ import { useTranslation } from "react-i18next"; import { Region } from "@atlasacademy/api-connector"; -import BgmDescriptor from "../Descriptor/BgmDescriptor"; +import { BgmDescriptorFileName } from "../Descriptor/BgmDescriptor"; import { FGOText } from "../Helper/StringHelper"; import { useImageSize } from "../Hooks/useImageSize"; import { lang } from "../Setting/Manager"; @@ -227,7 +227,7 @@ export const DialogueChild = ({ case ScriptComponentType.DIALOGUE_TEXT_IMAGE: return ; case ScriptComponentType.BGM: - return ; + return ; default: return null; } diff --git a/packages/db/src/Component/ScriptTable.tsx b/packages/db/src/Component/ScriptTable.tsx index 0114496b..4859d3d7 100644 --- a/packages/db/src/Component/ScriptTable.tsx +++ b/packages/db/src/Component/ScriptTable.tsx @@ -6,7 +6,7 @@ import { useTranslation } from "react-i18next"; import { Region } from "@atlasacademy/api-connector"; -import BgmDescriptor from "../Descriptor/BgmDescriptor"; +import BgmDescriptor, { BgmDescriptorFileName } from "../Descriptor/BgmDescriptor"; import QuestDescriptor from "../Descriptor/QuestDescriptor"; import { useImageSize } from "../Hooks/useImageSize"; import useWindowDimensions from "../Hooks/useWindowDimensions"; @@ -534,7 +534,7 @@ const ScriptBracketRow = (props: { {t("BGM")} - + {showScriptLine && {lineNumber}} diff --git a/packages/db/src/Descriptor/BgmDescriptor.tsx b/packages/db/src/Descriptor/BgmDescriptor.tsx index c8868320..6a364b0e 100644 --- a/packages/db/src/Descriptor/BgmDescriptor.tsx +++ b/packages/db/src/Descriptor/BgmDescriptor.tsx @@ -18,53 +18,41 @@ export const getBgmName = (bgm: Bgm.Bgm) => { } }; -export const BgmDescriptorId = ({ - region, - bgmId, - showName, - showLink, - style, - className, -}: { +interface BgmProps { region: Region; - bgmId: number; showName?: string; showLink?: boolean; style?: React.CSSProperties; className?: string; -}) => { - const { data: bgm } = useApi("bgm", bgmId); +} + +export const BgmDescriptorId = (props: BgmProps & { bgmId: number }) => { + const { data: bgm } = useApi("bgm", props.bgmId); if (bgm === undefined) return <>; - return ( - - ); + return ; }; -export default function BgmDescriptor(props: { - region: Region; - bgm: Bgm.Bgm; - showName?: string; - showLink?: boolean; - style?: React.CSSProperties; - className?: string; -}) { - const { bgm, region, className } = props; +export const BgmDescriptorFileName = (props: BgmProps & { bgm: Bgm.Bgm }) => { + const { data: bgmApi } = useApi("bgm", -1, props.bgm.fileName); + + if (bgmApi === undefined) { + return ; + } else { + return ; + } +}; + +export default function BgmDescriptor(props: BgmProps & { bgm: Bgm.Bgm }) { + const { bgm, region, className, style } = props; if (bgm.id === 0) { return null; } else if (bgm.audioAsset !== undefined) { const showName = getBgmName(bgm); const toLink = props.showLink ? ( <> - ) : null; @@ -80,7 +68,7 @@ export default function BgmDescriptor(props: { ); return ( <> - + {downloadButton} {toLink} @@ -89,7 +77,7 @@ export default function BgmDescriptor(props: { ); } else { return ( - );