Skip to content

Commit 535a6bc

Browse files
authored
spec(notes/create): 投稿されたnoteを返さないオプションを追加 (#879)
1 parent 8bd7884 commit 535a6bc

File tree

7 files changed

+20
-5
lines changed

7 files changed

+20
-5
lines changed

packages/backend/src/server/api/endpoints/notes/create.ts

+6-3
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ export const meta = {
4040

4141
res: {
4242
type: 'object',
43-
optional: false, nullable: false,
43+
optional: true, nullable: false,
4444
properties: {
4545
createdNote: {
4646
type: 'object',
@@ -207,6 +207,7 @@ export const paramDef = {
207207
},
208208
required: ['choices'],
209209
},
210+
noCreatedNote: { type: 'boolean', default: false },
210211
},
211212
// (re)note with text, files and poll are optional
212213
if: {
@@ -281,7 +282,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
281282
const note = await this.notesRepository.findOneBy({ id: idempotent });
282283
if (note) {
283284
logger.info('The request has already been processed.', { noteId: note.id });
284-
return { createdNote: await this.noteEntityService.pack(note, me) };
285+
if (ps.noCreatedNote) return;
286+
else return { createdNote: await this.noteEntityService.pack(note, me) };
285287
}
286288
}
287289

@@ -453,7 +455,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
453455
await this.redisForTimelines.set(`note:idempotent:${me.id}:${hash}`, note.id, 'EX', 60);
454456

455457
logger.info('Successfully created a note.', { noteId: note.id });
456-
return {
458+
if (ps.noCreatedNote) return;
459+
else return {
457460
createdNote: await this.noteEntityService.pack(note, me),
458461
};
459462
} catch (err) {

packages/backend/src/server/web/cli.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ window.onload = async () => {
4141

4242
document.getElementById('submit').addEventListener('click', () => {
4343
api('notes/create', {
44-
text: document.getElementById('text').value
44+
text: document.getElementById('text').value,
45+
noCreatedNote: true,
4546
}).then(() => {
4647
location.reload();
4748
});

packages/frontend/src/components/MkPostForm.vue

+1
Original file line numberDiff line numberDiff line change
@@ -773,6 +773,7 @@ async function post(ev?: MouseEvent) {
773773
visibility: visibility.value,
774774
visibleUserIds: visibility.value === 'specified' ? visibleUsers.value.map(u => u.id) : undefined,
775775
reactionAcceptance: reactionAcceptance.value,
776+
noCreatedNote: true,
776777
};
777778

778779
if (withHashtags.value && hashtags.value && hashtags.value.trim() !== '') {

packages/frontend/src/pages/reversi/game.vue

+1
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ function start(_game: Misskey.entities.ReversiGameDetailed) {
4646
misskeyApi('notes/create', {
4747
text: i18n.ts._reversi.iStartedAGame + '\n' + location.href,
4848
visibility: 'home',
49+
noCreatedNote: true,
4950
});
5051
}
5152

packages/frontend/src/scripts/get-note-menu.ts

+3
Original file line numberDiff line numberDiff line change
@@ -543,6 +543,7 @@ export function getRenoteMenu(props: {
543543
misskeyApi('notes/create', {
544544
renoteId: appearNote.id,
545545
channelId: appearNote.channelId,
546+
noCreatedNote: true,
546547
}).then(() => {
547548
os.toast(i18n.ts.renoted);
548549
});
@@ -589,6 +590,7 @@ export function getRenoteMenu(props: {
589590
localOnly,
590591
visibility,
591592
renoteId: appearNote.id,
593+
noCreatedNote: true,
592594
}).then(() => {
593595
os.toast(i18n.ts.renoted);
594596
});
@@ -630,6 +632,7 @@ export function getRenoteMenu(props: {
630632
misskeyApi('notes/create', {
631633
renoteId: appearNote.id,
632634
channelId: channel.id,
635+
noCreatedNote: true,
633636
}).then(() => {
634637
os.toast(i18n.tsx.renotedToX({ name: channel.name }));
635638
});

packages/misskey-js/src/autogen/types.ts

+6
Original file line numberDiff line numberDiff line change
@@ -23333,6 +23333,8 @@ export type operations = {
2333323333
expiresAt?: number | null;
2333423334
expiredAfter?: number | null;
2333523335
}) | null;
23336+
/** @default false */
23337+
noCreatedNote?: boolean;
2333623338
};
2333723339
};
2333823340
};
@@ -23345,6 +23347,10 @@ export type operations = {
2334523347
};
2334623348
};
2334723349
};
23350+
/** @description OK (without any results) */
23351+
204: {
23352+
content: never;
23353+
};
2334823354
/** @description Client error */
2334923355
400: {
2335023356
content: {

packages/sw/src/sw.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ globalThis.addEventListener('notificationclick', (ev: ServiceWorkerGlobalScopeEv
114114
if ('note' in data.body) client = await swos.openPost({ reply: data.body.note }, loginId);
115115
break;
116116
case 'renote':
117-
if ('note' in data.body) await swos.api('notes/create', loginId, { renoteId: data.body.note.id });
117+
if ('note' in data.body) await swos.api('notes/create', loginId, { renoteId: data.body.note.id, noCreatedNote: true });
118118
break;
119119
case 'accept':
120120
switch (data.body.type) {

0 commit comments

Comments
 (0)