非ログイン時の警告処理 (#5219)

* Update note-mixin.ts

* Update note-mixin.ts

* ✌️

* Update note-mixin.ts

* Update note-menu.vue
This commit is contained in:
syuilo 2019-07-28 10:35:53 +09:00 committed by GitHub
parent ad9b9aad5a
commit b2f9080a2e
4 changed files with 104 additions and 65 deletions

View file

@ -37,6 +37,7 @@ common:
reload-to-apply-the-setting: "この設定を反映するにはページをリロードする必要があります。今すぐリロードしますか?" reload-to-apply-the-setting: "この設定を反映するにはページをリロードする必要があります。今すぐリロードしますか?"
fetching-as-ap-object: "連合に照会中" fetching-as-ap-object: "連合に照会中"
unfollow-confirm: "{name}さんをフォロー解除しますか?" unfollow-confirm: "{name}さんをフォロー解除しますか?"
signin-required: "ログインしてください"
notification-type: "通知の種類" notification-type: "通知の種類"
notification-types: notification-types:
all: "すべて" all: "すべて"

View file

@ -3,6 +3,7 @@ import { sum, unique } from '../../../../prelude/array';
import shouldMuteNote from './should-mute-note'; import shouldMuteNote from './should-mute-note';
import MkNoteMenu from '../views/components/note-menu.vue'; import MkNoteMenu from '../views/components/note-menu.vue';
import MkReactionPicker from '../views/components/reaction-picker.vue'; import MkReactionPicker from '../views/components/reaction-picker.vue';
import pleaseLogin from './please-login';
function focus(el, fn) { function focus(el, fn) {
const target = fn(el); const target = fn(el);
@ -108,6 +109,7 @@ export default (opts: Opts = {}) => ({
methods: { methods: {
reply(viaKeyboard = false) { reply(viaKeyboard = false) {
pleaseLogin(this.$root);
this.$root.$post({ this.$root.$post({
reply: this.appearNote, reply: this.appearNote,
animation: !viaKeyboard, animation: !viaKeyboard,
@ -118,6 +120,7 @@ export default (opts: Opts = {}) => ({
}, },
renote(viaKeyboard = false) { renote(viaKeyboard = false) {
pleaseLogin(this.$root);
this.$root.$post({ this.$root.$post({
renote: this.appearNote, renote: this.appearNote,
animation: !viaKeyboard, animation: !viaKeyboard,
@ -134,6 +137,7 @@ export default (opts: Opts = {}) => ({
}, },
react(viaKeyboard = false) { react(viaKeyboard = false) {
pleaseLogin(this.$root);
this.blur(); this.blur();
this.$root.new(MkReactionPicker, { this.$root.new(MkReactionPicker, {
source: this.$refs.reactButton, source: this.$refs.reactButton,
@ -159,6 +163,7 @@ export default (opts: Opts = {}) => ({
}, },
favorite() { favorite() {
pleaseLogin(this.$root);
this.$root.api('notes/favorites/create', { this.$root.api('notes/favorites/create', {
noteId: this.appearNote.id noteId: this.appearNote.id
}).then(() => { }).then(() => {

View file

@ -0,0 +1,10 @@
export default ($root: any) => {
if ($root.$store.getters.isSignedIn) return;
$root.dialog({
title: $root.$t('@.signin-required'),
text: null
});
throw new Error('signin required');
};

View file

@ -22,6 +22,7 @@ export default Vue.extend({
}, },
computed: { computed: {
items(): any[] { items(): any[] {
if (this.$store.getters.isSignedIn) {
return [{ return [{
icon: 'at', icon: 'at',
text: this.$t('mention'), text: this.$t('mention'),
@ -87,7 +88,29 @@ export default Vue.extend({
}] }]
: [] : []
)] )]
.filter(x => x !== undefined) .filter(x => x !== undefined);
} else {
return [{
icon: 'info-circle',
text: this.$t('detail'),
action: this.detail
}, {
icon: faCopy,
text: this.$t('copy-content'),
action: this.copyContent
}, {
icon: 'link',
text: this.$t('copy-link'),
action: this.copyLink
}, this.note.uri ? {
icon: 'external-link-square-alt',
text: this.$t('remote'),
action: () => {
window.open(this.note.uri, '_blank');
}
} : undefined]
.filter(x => x !== undefined);
}
} }
}, },