summaryrefslogtreecommitdiff
path: root/packages/frontend/src/utility
diff options
context:
space:
mode:
authorFreya Murphy <freya@freyacat.org>2026-03-02 16:05:12 -0500
committerFreya Murphy <freya@freyacat.org>2026-03-05 12:55:43 -0500
commit587ab8500abb2d8b0a494dc05952c9919cc7f66f (patch)
tree07f50e1153a029158baed106aa8367c9fa32cd7a /packages/frontend/src/utility
parentMerge pull request #17217 from misskey-dev/develop (diff)
downloadmisskey-587ab8500abb2d8b0a494dc05952c9919cc7f66f.tar.gz
misskey-587ab8500abb2d8b0a494dc05952c9919cc7f66f.tar.bz2
misskey-587ab8500abb2d8b0a494dc05952c9919cc7f66f.zip
split url into webUrl and localUrl (like mastodon)
Diffstat (limited to 'packages/frontend/src/utility')
-rw-r--r--packages/frontend/src/utility/get-embed-code.ts6
-rw-r--r--packages/frontend/src/utility/get-note-menu.ts8
-rw-r--r--packages/frontend/src/utility/get-user-menu.ts8
-rw-r--r--packages/frontend/src/utility/image-frame-renderer/ImageFrameRenderer.ts4
-rw-r--r--packages/frontend/src/utility/media-proxy.ts8
-rw-r--r--packages/frontend/src/utility/popout.ts2
-rw-r--r--packages/frontend/src/utility/url-preview.ts4
-rw-r--r--packages/frontend/src/utility/watermark/WatermarkRenderer.ts4
8 files changed, 22 insertions, 22 deletions
diff --git a/packages/frontend/src/utility/get-embed-code.ts b/packages/frontend/src/utility/get-embed-code.ts
index 5817d7ece8..4487b74519 100644
--- a/packages/frontend/src/utility/get-embed-code.ts
+++ b/packages/frontend/src/utility/get-embed-code.ts
@@ -3,7 +3,7 @@
* SPDX-License-Identifier: AGPL-3.0-only
*/
import { defineAsyncComponent } from 'vue';
-import { url } from '@@/js/config.js';
+import { webUrl } from '@@/js/config.js';
import { defaultEmbedParams, embedRouteWithScrollbar } from '@@/js/embed-page.js';
import type { EmbedParams, EmbeddableEntity } from '@@/js/embed-page.js';
import { genId } from '@/utility/id.js';
@@ -54,8 +54,8 @@ export function getEmbedCode(path: string, params?: EmbedParams): string {
}
const iframeCode = [
- `<iframe src="${url + path + paramString}" data-misskey-embed-id="${iframeId}" loading="lazy" referrerpolicy="strict-origin-when-cross-origin" style="border: none; width: 100%; max-width: 500px; height: 300px; color-scheme: light dark;"></iframe>`,
- `<script defer src="${url}/embed.js"></script>`,
+ `<iframe src="${webUrl + path + paramString}" data-misskey-embed-id="${iframeId}" loading="lazy" referrerpolicy="strict-origin-when-cross-origin" style="border: none; width: 100%; max-width: 500px; height: 300px; color-scheme: light dark;"></iframe>`,
+ `<script defer src="${webUrl}/embed.js"></script>`,
];
return iframeCode.join('\n');
}
diff --git a/packages/frontend/src/utility/get-note-menu.ts b/packages/frontend/src/utility/get-note-menu.ts
index 78176970f1..a630d3405a 100644
--- a/packages/frontend/src/utility/get-note-menu.ts
+++ b/packages/frontend/src/utility/get-note-menu.ts
@@ -4,7 +4,7 @@
*/
import * as Misskey from 'misskey-js';
-import { url } from '@@/js/config.js';
+import { webUrl } from '@@/js/config.js';
import { claimAchievement } from './achievements.js';
import type { Ref, ShallowRef } from 'vue';
import type { MenuItem } from '@/types/menu.js';
@@ -140,7 +140,7 @@ export function getAbuseNoteMenu(note: Misskey.entities.Note, text: string): Men
icon: 'ti ti-exclamation-circle',
text,
action: async (): Promise<void> => {
- const localUrl = `${url}/notes/${note.id}`;
+ const localUrl = `${webUrl}/notes/${note.id}`;
let noteInfo = '';
if (note.url ?? note.uri != null) noteInfo = `Note: ${note.url ?? note.uri}\n`;
noteInfo += `Local Note: ${localUrl}\n`;
@@ -159,7 +159,7 @@ export function getCopyNoteLinkMenu(note: Misskey.entities.Note, text: string):
icon: 'ti ti-link',
text,
action: (): void => {
- copyToClipboard(`${url}/notes/${note.id}`);
+ copyToClipboard(`${webUrl}/notes/${note.id}`);
},
};
}
@@ -279,7 +279,7 @@ export function getNoteMenu(props: {
navigator.share({
title: i18n.tsx.noteOf({ user: appearNote.user.name ?? appearNote.user.username }),
text: appearNote.text ?? '',
- url: `${url}/notes/${appearNote.id}`,
+ url: `${webUrl}/notes/${appearNote.id}`,
});
}
diff --git a/packages/frontend/src/utility/get-user-menu.ts b/packages/frontend/src/utility/get-user-menu.ts
index 9b2c53360c..fc77ec8e54 100644
--- a/packages/frontend/src/utility/get-user-menu.ts
+++ b/packages/frontend/src/utility/get-user-menu.ts
@@ -6,7 +6,7 @@
import { toUnicode } from 'punycode.js';
import { defineAsyncComponent, ref, watch } from 'vue';
import * as Misskey from 'misskey-js';
-import { host, url } from '@@/js/config.js';
+import { localHost, webUrl } from '@@/js/config.js';
import type { Router } from '@/router.js';
import type { MenuItem } from '@/types/menu.js';
import { i18n } from '@/i18n.js';
@@ -171,7 +171,7 @@ export function getUserMenu(user: Misskey.entities.UserDetailed, router: Router
icon: 'ti ti-at',
text: i18n.ts.copyUsername,
action: () => {
- copyToClipboard(`@${user.username}@${user.host ?? host}`);
+ copyToClipboard(`@${user.username}@${user.host ?? localHost}`);
},
});
@@ -180,7 +180,7 @@ export function getUserMenu(user: Misskey.entities.UserDetailed, router: Router
text: i18n.ts.copyProfileUrl,
action: () => {
const canonical = user.host === null ? `@${user.username}` : `@${user.username}@${toUnicode(user.host)}`;
- copyToClipboard(`${url}/${canonical}`);
+ copyToClipboard(`${webUrl}/${canonical}`);
},
});
@@ -188,7 +188,7 @@ export function getUserMenu(user: Misskey.entities.UserDetailed, router: Router
icon: 'ti ti-rss',
text: i18n.ts.copyRSS,
action: () => {
- copyToClipboard(`${user.host ?? host}/@${user.username}.atom`);
+ copyToClipboard(`${user.host ?? localHost}/@${user.username}.atom`);
},
});
diff --git a/packages/frontend/src/utility/image-frame-renderer/ImageFrameRenderer.ts b/packages/frontend/src/utility/image-frame-renderer/ImageFrameRenderer.ts
index 591a94b855..0a33caf238 100644
--- a/packages/frontend/src/utility/image-frame-renderer/ImageFrameRenderer.ts
+++ b/packages/frontend/src/utility/image-frame-renderer/ImageFrameRenderer.ts
@@ -4,7 +4,7 @@
*/
import QRCodeStyling from 'qr-code-styling';
-import { url } from '@@/js/config.js';
+import { webUrl } from '@@/js/config.js';
import ExifReader from 'exifreader';
import { FN_frame } from './frame.js';
import { ImageCompositor } from '@/lib/ImageCompositor.js';
@@ -159,7 +159,7 @@ export class ImageFrameRenderer {
height: labelCanvasCtx.canvas.height,
margin: 0,
type: 'canvas',
- data: `${url}/users/${$i.id}`,
+ data: `${webUrl}/users/${$i.id}`,
//image: $i.avatarUrl,
qrOptions: {
typeNumber: 0,
diff --git a/packages/frontend/src/utility/media-proxy.ts b/packages/frontend/src/utility/media-proxy.ts
index 78eba35ead..d93c0448d1 100644
--- a/packages/frontend/src/utility/media-proxy.ts
+++ b/packages/frontend/src/utility/media-proxy.ts
@@ -4,14 +4,14 @@
*/
import { MediaProxy } from '@@/js/media-proxy.js';
-import { url } from '@@/js/config.js';
+import { webUrl } from '@@/js/config.js';
import { instance } from '@/instance.js';
let _mediaProxy: MediaProxy | null = null;
export function getProxiedImageUrl(...args: Parameters<MediaProxy['getProxiedImageUrl']>): string {
if (_mediaProxy == null) {
- _mediaProxy = new MediaProxy(instance, url);
+ _mediaProxy = new MediaProxy(instance, webUrl);
}
return _mediaProxy.getProxiedImageUrl(...args);
@@ -19,7 +19,7 @@ export function getProxiedImageUrl(...args: Parameters<MediaProxy['getProxiedIma
export function getProxiedImageUrlNullable(...args: Parameters<MediaProxy['getProxiedImageUrlNullable']>): string | null {
if (_mediaProxy == null) {
- _mediaProxy = new MediaProxy(instance, url);
+ _mediaProxy = new MediaProxy(instance, webUrl);
}
return _mediaProxy.getProxiedImageUrlNullable(...args);
@@ -27,7 +27,7 @@ export function getProxiedImageUrlNullable(...args: Parameters<MediaProxy['getPr
export function getStaticImageUrl(...args: Parameters<MediaProxy['getStaticImageUrl']>): string {
if (_mediaProxy == null) {
- _mediaProxy = new MediaProxy(instance, url);
+ _mediaProxy = new MediaProxy(instance, webUrl);
}
return _mediaProxy.getStaticImageUrl(...args);
diff --git a/packages/frontend/src/utility/popout.ts b/packages/frontend/src/utility/popout.ts
index 7e0222c459..cf5de9e22f 100644
--- a/packages/frontend/src/utility/popout.ts
+++ b/packages/frontend/src/utility/popout.ts
@@ -7,7 +7,7 @@ import { appendQuery } from '@@/js/url.js';
import * as config from '@@/js/config.js';
export function popout(path: string, w?: HTMLElement) {
- let url = path.startsWith('http://') || path.startsWith('https://') ? path : config.url + path;
+ let url = path.startsWith('http://') || path.startsWith('https://') ? path : config.webUrl + path;
url = appendQuery(url, 'zen');
if (w) {
const position = w.getBoundingClientRect();
diff --git a/packages/frontend/src/utility/url-preview.ts b/packages/frontend/src/utility/url-preview.ts
index 5ed809a5af..11936f7ae6 100644
--- a/packages/frontend/src/utility/url-preview.ts
+++ b/packages/frontend/src/utility/url-preview.ts
@@ -3,7 +3,7 @@
* SPDX-License-Identifier: AGPL-3.0-only
*/
import { computed } from 'vue';
-import { hostname } from '@@/js/config.js';
+import { webHost } from '@@/js/config.js';
import { instance } from '@/instance.js';
import { prefer } from '@/preferences.js';
@@ -18,7 +18,7 @@ export function transformPlayerUrl(url: string): string {
if (urlObj.hostname === 'player.twitch.tv' || urlObj.hostname === 'clips.twitch.tv') {
// TwitchはCSPの制約あり
// https://dev.twitch.tv/docs/embed/video-and-clips/
- urlParams.set('parent', hostname);
+ urlParams.set('parent', webHost);
urlParams.set('allowfullscreen', '');
urlParams.set('autoplay', 'true');
} else {
diff --git a/packages/frontend/src/utility/watermark/WatermarkRenderer.ts b/packages/frontend/src/utility/watermark/WatermarkRenderer.ts
index 32341a9e10..52460f0d58 100644
--- a/packages/frontend/src/utility/watermark/WatermarkRenderer.ts
+++ b/packages/frontend/src/utility/watermark/WatermarkRenderer.ts
@@ -4,7 +4,7 @@
*/
import QRCodeStyling from 'qr-code-styling';
-import { url, host } from '@@/js/config.js';
+import { webUrl } from '@@/js/config.js';
import { getProxiedImageUrl } from '../media-proxy.js';
import { fn as fn_watermark } from './watermark.js';
import { fn as fn_stripe } from '@/utility/image-compositor-functions/stripe.js';
@@ -300,7 +300,7 @@ async function createTextureFromQr(options: { data: string | null }, resolution
height: resolution,
margin: 42,
type: 'canvas',
- data: options.data == null || options.data === '' ? `${url}/users/${$i.id}` : options.data,
+ data: options.data == null || options.data === '' ? `${webUrl}/users/${$i.id}` : options.data,
image: $i.avatarUrl,
qrOptions: {
typeNumber: 0,