Files
tonePage/tone-page-web/hooks/admin/web/blog/use-oss-store.ts
2025-06-17 16:53:53 +08:00

32 lines
1.1 KiB
TypeScript

import { useOssSts } from "@/hooks/oss/use-oss-sts";
import { StsToken } from "@/lib/api/oss";
import OSS from "ali-oss";
import { useEffect } from "react";
export function useOssStore(options: { region: string; bucket: string; onStsTokenDataChanged?: (data: StsToken | undefined) => void; }) {
const { stsTokenData, isLoading, error } = useOssSts();
useEffect(() => {
options.onStsTokenDataChanged?.(stsTokenData);
}, [stsTokenData])
return {
stsTokenData,
isLoading,
error,
store: stsTokenData ? new OSS({
region: options.region,
bucket: options.bucket,
accessKeyId: stsTokenData.AccessKeyId,
accessKeySecret: stsTokenData.AccessKeySecret,
stsToken: stsTokenData.SecurityToken,
refreshSTSToken: () => new Promise(resolve => {
resolve({
accessKeyId: stsTokenData.AccessKeyId,
accessKeySecret: stsTokenData.AccessKeySecret,
stsToken: stsTokenData.SecurityToken,
})
}),
}) : undefined,
}
}