mirror of
https://github.com/sim1222/misskey.git
synced 2025-05-12 17:17:25 +09:00
* fix(server): /emoji to accept `@.` host expression * fix(client): use MkEmoji for custom emoji in MkEmojiPicker * change convertToWebp * nanka iroiro * remove * fix * nearLosslessは労多くして益少なしなのでやめる * do not cleanup tmp for development * update sharp.js to 0.31.3 * mixed: true * fix MkAutocomplete of 912791b3ab * clean up * https://github.com/misskey-dev/misskey/pull/9431#discussion_r1059215943
48 lines
1.5 KiB
TypeScript
48 lines
1.5 KiB
TypeScript
import { query, appendQuery } from '@/scripts/url';
|
|
import { url } from '@/config';
|
|
|
|
export function getProxiedImageUrl(imageUrl: string, type?: 'preview'): string {
|
|
if (imageUrl.startsWith(`${url}/proxy/`) || imageUrl.startsWith('/proxy/')) {
|
|
// もう既にproxyっぽそうだったらsearchParams付けるだけ
|
|
return appendQuery(imageUrl, query({
|
|
fallback: '1',
|
|
...(type ? { [type]: '1' } : {}),
|
|
}));
|
|
}
|
|
|
|
return `${url}/proxy/image.webp?${query({
|
|
url: imageUrl,
|
|
fallback: '1',
|
|
...(type ? { [type]: '1' } : {}),
|
|
})}`;
|
|
}
|
|
|
|
export function getProxiedImageUrlNullable(imageUrl: string | null | undefined, type?: 'preview'): string | null {
|
|
if (imageUrl == null) return null;
|
|
return getProxiedImageUrl(imageUrl, type);
|
|
}
|
|
|
|
export function getStaticImageUrl(baseUrl: string): string {
|
|
const u = baseUrl.startsWith('http') ? new URL(baseUrl) : new URL(baseUrl, url);
|
|
|
|
if (u.href.startsWith(`${url}/proxy/`)) {
|
|
// もう既にproxyっぽそうだったらsearchParams付けるだけ
|
|
u.searchParams.set('static', '1');
|
|
return u.href;
|
|
}
|
|
|
|
if (u.href.startsWith(`${url}/emoji/`)) {
|
|
// もう既にemojiっぽそうだったらsearchParams付けるだけ
|
|
u.searchParams.set('static', '1');
|
|
return u.href;
|
|
}
|
|
|
|
// 拡張子がないとキャッシュしてくれないCDNがあるのでダミーの名前を指定する
|
|
const dummy = `${encodeURIComponent(`${u.host}${u.pathname}`)}.webp`;
|
|
|
|
return `${url}/proxy/${dummy}?${query({
|
|
url: u.href,
|
|
static: '1',
|
|
})}`;
|
|
}
|