32 lines
1.1 KiB
TypeScript
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,
|
|
}
|
|
} |