diff --git a/src/client/components/note.vue b/src/client/components/note.vue index ae47748505..963e2045f1 100644 --- a/src/client/components/note.vue +++ b/src/client/components/note.vue @@ -58,7 +58,7 @@ <template v-else><fa :icon="faReply"/></template> <p class="count" v-if="appearNote.repliesCount > 0">{{ appearNote.repliesCount }}</p> </button> - <button v-if="['public', 'home'].includes(appearNote.visibility)" @click="renote()" class="button _button" ref="renoteButton"> + <button v-if="canRenote" @click="renote()" class="button _button" ref="renoteButton"> <fa :icon="faRetweet"/><p class="count" v-if="appearNote.renoteCount > 0">{{ appearNote.renoteCount }}</p> </button> <button v-else class="button _button"> @@ -190,6 +190,10 @@ export default Vue.extend({ return this.$store.getters.isSignedIn && (this.$store.state.i.id === this.appearNote.userId); }, + canRenote(): boolean { + return ['public', 'home'].includes(this.appearNote.visibility) || this.isMyNote; + }, + reactionsCount(): number { return this.appearNote.reactions ? sum(Object.values(this.appearNote.reactions)) diff --git a/src/services/note/create.ts b/src/services/note/create.ts index 8bcf0d7d09..a904e5e252 100644 --- a/src/services/note/create.ts +++ b/src/services/note/create.ts @@ -117,7 +117,7 @@ export default async (user: User, data: Option, silent = false) => new Promise<N } // Renote対象が「ホームまたは全体」以外の公開範囲ならreject - if (data.renote && data.renote.visibility != 'public' && data.renote.visibility != 'home') { + if (data.renote && data.renote.visibility != 'public' && data.renote.visibility != 'home' && data.renote.userId !== user.id) { return rej('Renote target is not public or home'); } @@ -126,6 +126,11 @@ export default async (user: User, data: Option, silent = false) => new Promise<N data.visibility = 'home'; } + // Renote対象がfollowersならfollowersにする + if (data.renote && data.renote.visibility === 'followers') { + data.visibility = 'followers'; + } + // 返信対象がpublicではないならhomeにする if (data.reply && data.reply.visibility != 'public' && data.visibility == 'public') { data.visibility = 'home';