Skip to content

Commit

Permalink
fix(frontend): misskey-dev#13089 を修正
Browse files Browse the repository at this point in the history
  • Loading branch information
kakkokari-gtyih committed Jul 14, 2024
1 parent 3c032dd commit f8b1248
Show file tree
Hide file tree
Showing 7 changed files with 51 additions and 25 deletions.
2 changes: 1 addition & 1 deletion locales/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5004,7 +5004,7 @@ export interface Locale extends ILocale {
* お問い合わせ
*/
"inquiry": string;
/**
/**
* もう一度お試しください。
*/
"tryAgain": string;
Expand Down
16 changes: 8 additions & 8 deletions packages/frontend/src/components/MkNote.vue
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ import MkPoll from '@/components/MkPoll.vue';
import MkUsersTooltip from '@/components/MkUsersTooltip.vue';
import MkUrlPreview from '@/components/MkUrlPreview.vue';
import MkInstanceTicker from '@/components/MkInstanceTicker.vue';
import { pleaseLogin } from '@/scripts/please-login.js';
import { pleaseLogin, type OpenOnRemoteOptions } from '@/scripts/please-login.js';
import { checkWordMute } from '@/scripts/check-word-mute.js';
import { userPage } from '@/filters/user.js';
import number from '@/filters/number.js';
Expand Down Expand Up @@ -279,10 +279,10 @@ const renoteCollapsed = ref(
),
);
const pleaseLoginContext = {
const pleaseLoginContext = computed<OpenOnRemoteOptions>(() => ({
type: 'lookup',
path: `https://${host}/notes/${appearNote.value.id}`,
} as const;
uri: `https://${host}/notes/${appearNote.value.id}`,
}));
/* Overload FunctionにLintが対応していないのでコメントアウト
function checkMute(noteToCheck: Misskey.entities.Note, mutedWords: Array<string | string[]> | undefined | null, checkOnly: true): boolean;
Expand Down Expand Up @@ -417,7 +417,7 @@ if (!props.mock) {
}
function renote(viaKeyboard = false) {
pleaseLogin(undefined, pleaseLoginContext);
pleaseLogin(undefined, pleaseLoginContext.value);
showMovedDialog();
const { menu } = getRenoteMenu({ note: note.value, renoteButton, mock: props.mock });
Expand All @@ -427,7 +427,7 @@ function renote(viaKeyboard = false) {
}
function reply(): void {
pleaseLogin(undefined, pleaseLoginContext);
pleaseLogin(undefined, pleaseLoginContext.value);
if (props.mock) {
return;
}
Expand All @@ -440,7 +440,7 @@ function reply(): void {
}
function react(): void {
pleaseLogin(undefined, pleaseLoginContext);
pleaseLogin(undefined, pleaseLoginContext.value);
showMovedDialog();
if (appearNote.value.reactionAcceptance === 'likeOnly') {
sound.playMisskeySfx('reaction');
Expand Down Expand Up @@ -571,7 +571,7 @@ function showRenoteMenu(): void {
}
if (isMyRenote) {
pleaseLogin(undefined, pleaseLoginContext);
pleaseLogin(undefined, pleaseLoginContext.value);
os.popupMenu([
getCopyNoteLinkMenu(note.value, i18n.ts.copyLinkRenote),
{ type: 'divider' },
Expand Down
16 changes: 8 additions & 8 deletions packages/frontend/src/components/MkNoteDetailed.vue
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,7 @@ import MkPoll from '@/components/MkPoll.vue';
import MkUsersTooltip from '@/components/MkUsersTooltip.vue';
import MkUrlPreview from '@/components/MkUrlPreview.vue';
import MkInstanceTicker from '@/components/MkInstanceTicker.vue';
import { pleaseLogin } from '@/scripts/please-login.js';
import { pleaseLogin, type OpenOnRemoteOptions } from '@/scripts/please-login.js';
import { checkWordMute } from '@/scripts/check-word-mute.js';
import { userPage } from '@/filters/user.js';
import { notePage } from '@/filters/note.js';
Expand Down Expand Up @@ -297,10 +297,10 @@ const conversation = ref<Misskey.entities.Note[]>([]);
const replies = ref<Misskey.entities.Note[]>([]);
const canRenote = computed(() => ['public', 'home'].includes(appearNote.value.visibility) || appearNote.value.userId === $i?.id);
const pleaseLoginContext = {
const pleaseLoginContext = computed<OpenOnRemoteOptions>(() => ({
type: 'lookup',
path: `https://${host}/notes/${appearNote.value.id}`,
} as const;
uri: `https://${host}/notes/${appearNote.value.id}`,
}));
const keymap = {
'r': () => reply(),
Expand Down Expand Up @@ -402,15 +402,15 @@ if (appearNote.value.reactionAcceptance === 'likeOnly') {
}
function renote() {
pleaseLogin(undefined, pleaseLoginContext);
pleaseLogin(undefined, pleaseLoginContext.value);
showMovedDialog();
const { menu } = getRenoteMenu({ note: note.value, renoteButton });
os.popupMenu(menu, renoteButton.value);
}
function reply(): void {
pleaseLogin(undefined, pleaseLoginContext);
pleaseLogin(undefined, pleaseLoginContext.value);
showMovedDialog();
os.post({
reply: appearNote.value,
Expand All @@ -421,7 +421,7 @@ function reply(): void {
}
function react(): void {
pleaseLogin(undefined, pleaseLoginContext);
pleaseLogin(undefined, pleaseLoginContext.value);
showMovedDialog();
if (appearNote.value.reactionAcceptance === 'likeOnly') {
sound.playMisskeySfx('reaction');
Expand Down Expand Up @@ -505,7 +505,7 @@ async function clip(): Promise<void> {
function showRenoteMenu(): void {
if (!isMyRenote) return;
pleaseLogin(undefined, pleaseLoginContext);
pleaseLogin(undefined, pleaseLoginContext.value);
os.popupMenu([{
text: i18n.ts.unrenote,
icon: 'ti ti-trash',
Expand Down
9 changes: 5 additions & 4 deletions packages/frontend/src/components/MkPoll.vue
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ import { misskeyApi } from '@/scripts/misskey-api.js';
import { i18n } from '@/i18n.js';
import { host } from '@/config.js';
import { useInterval } from '@/scripts/use-interval.js';
import type { OpenOnRemoteOptions } from '@/scripts/please-login.js';
const props = defineProps<{
noteId: string;
Expand All @@ -61,10 +62,10 @@ const timer = computed(() => i18n.tsx._poll[
const showResult = ref(props.readOnly || isVoted.value);
const pleaseLoginContext = {
const pleaseLoginContext = computed<OpenOnRemoteOptions>(() => ({
type: 'lookup',
path: `https://${host}/notes/${props.note.id}`,
} as const;
uri: `https://${host}/notes/${props.noteId}`,
}));
// 期限付きアンケート
if (props.poll.expiresAt) {
Expand All @@ -82,7 +83,7 @@ if (props.poll.expiresAt) {
}
const vote = async (id) => {
pleaseLogin(undefined, pleaseLoginContext);
pleaseLogin(undefined, pleaseLoginContext.value);
if (props.readOnly || closed.value || isVoted.value) return;
Expand Down
4 changes: 2 additions & 2 deletions packages/frontend/src/components/MkSignin.vue
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,7 @@ function openRemote(options: OpenOnRemoteOptions, targetHost?: string): void {
let _path = options.path;
if (options.type === 'lookup') {
// TODO: v2024.2.0以降が浸透してきたら正式なURLに変更する▼
// TODO: v2024.7.0以降が浸透してきたら正式なURLに変更する▼
// _path = `/lookup?uri=${encodeURIComponent(_path)}`;
_path = `/authorize-follow?acct=${encodeURIComponent(_path)}`;
}
Expand All @@ -252,7 +252,7 @@ function openRemote(options: OpenOnRemoteOptions, targetHost?: string): void {
break;
}
case 'share': {
const params = query(options.params);
const params = query(options.params);
if (targetHost) {
window.open(`https://${targetHost}/share?${params}`, '_blank', 'noopener');
} else {
Expand Down
27 changes: 26 additions & 1 deletion packages/frontend/src/scripts/please-login.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,38 @@ import { i18n } from '@/i18n.js';
import { popup } from '@/os.js';

export type OpenOnRemoteOptions = {
/**
* 外部のMisskey Webで特定のパスを開く
*/
type: 'web';

/**
* 内部パス(例: `/settings`)
*/
path: string;
} | {
/**
* 外部のMisskey Webで照会する
*/
type: 'lookup';
path: string;

/**
* 照会したいエンティティのURI
*
* (例: `https://misskey.example.com/notes/abcdexxxxyz`)
*/
uri: string;
} | {
/**
* 外部のMisskeyでノートする
*/
type: 'share';

/**
* `/share` ページに渡すクエリストリング
*
* @see https://go.misskey-hub.net/spec/share/
*/
params: Record<string, string>;
};

Expand Down
2 changes: 1 addition & 1 deletion packages/frontend/src/scripts/url.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,6 @@ export function appendQuery(url: string, query: string): string {
}

export function extractDomain(url: string) {
const match = url.match(/^(https)?:?\/{0,2}([^\/]+)/);
const match = url.match(/^(https?)?:?\/{0,2}([^\/]+)/);
return match ? match[2] : null;
}

0 comments on commit f8b1248

Please sign in to comment.