重构ossStore
This commit is contained in:
@@ -3,30 +3,22 @@ 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();
|
||||
export function useOssStore(options: { onStsTokenDataChanged?: (data: StsToken | undefined) => void; } = {}) {
|
||||
const { stsTokenData, isLoading, error, mutate } = useOssSts();
|
||||
|
||||
useEffect(() => {
|
||||
options.onStsTokenDataChanged?.(stsTokenData);
|
||||
}, [stsTokenData])
|
||||
}, [stsTokenData]);
|
||||
|
||||
/** @todo */
|
||||
const refresh = async () => {
|
||||
await mutate();
|
||||
}
|
||||
|
||||
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,
|
||||
refresh,
|
||||
}
|
||||
}
|
||||
@@ -3,12 +3,12 @@ import { toast } from "sonner";
|
||||
import useSWR from "swr";
|
||||
|
||||
export function useOssSts() {
|
||||
const { data: stsTokenData, isLoading, error } = useSWR(
|
||||
const { data: stsTokenData, isLoading, error, mutate } = useSWR(
|
||||
'/api/oss/sts',
|
||||
() => OssApi.getStsToken(),
|
||||
{
|
||||
shouldRetryOnError: false,
|
||||
refreshInterval: 59 * 60 * 1000,
|
||||
// refreshInterval: 59 * 60 * 1000,
|
||||
revalidateOnFocus: false,
|
||||
onError: (e) => {
|
||||
toast.error(`${e.message || e}`)
|
||||
@@ -20,5 +20,6 @@ export function useOssSts() {
|
||||
stsTokenData,
|
||||
isLoading,
|
||||
error,
|
||||
mutate,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user