kopia lustrzana https://github.com/Tldraw/Tldraw
29 wiersze
689 B
TypeScript
29 wiersze
689 B
TypeScript
import { TLAsset } from 'tldraw'
|
|
|
|
export async function cloneAssetForShare(
|
|
asset: TLAsset,
|
|
uploadFileToAsset: (file: File) => Promise<TLAsset>
|
|
): Promise<TLAsset> {
|
|
if (asset.type === 'bookmark') return asset
|
|
if (asset.props.src) {
|
|
const dataUrlMatch = asset.props.src.match(/data:(.*?)(;base64)?,/)
|
|
if (!dataUrlMatch) return asset
|
|
|
|
const response = await fetch(asset.props.src)
|
|
const file = new File([await response.blob()], asset.props.name, {
|
|
type: dataUrlMatch[1] ?? asset.props.mimeType,
|
|
})
|
|
|
|
const uploadedAsset = await uploadFileToAsset(file)
|
|
|
|
return {
|
|
...asset,
|
|
props: {
|
|
...asset.props,
|
|
src: uploadedAsset.props.src,
|
|
},
|
|
}
|
|
}
|
|
return asset
|
|
}
|