mirror of
https://iceshrimp.dev/limepotato/jormungandr-bite.git
synced 2024-11-26 11:57:34 -07:00
非ログイン時の警告処理 (#5219)
* Update note-mixin.ts
* Update note-mixin.ts
* ✌️
* Update note-mixin.ts
* Update note-menu.vue
This commit is contained in:
parent
ad9b9aad5a
commit
b2f9080a2e
4 changed files with 104 additions and 65 deletions
|
@ -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: "すべて"
|
||||||
|
|
|
@ -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(() => {
|
||||||
|
|
10
src/client/app/common/scripts/please-login.ts
Normal file
10
src/client/app/common/scripts/please-login.ts
Normal 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');
|
||||||
|
};
|
|
@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue