ユーザーページからグループに招待できるように
This commit is contained in:
parent
18628b821e
commit
514eb39a14
3 changed files with 44 additions and 2 deletions
|
@ -5,6 +5,7 @@ unreleased
|
||||||
--------------------
|
--------------------
|
||||||
### ✨Improvements
|
### ✨Improvements
|
||||||
* リンクにホバーするとURLプレビューを表示するように
|
* リンクにホバーするとURLプレビューを表示するように
|
||||||
|
* ユーザーページからグループに招待できるように
|
||||||
|
|
||||||
### 🐛Fixes
|
### 🐛Fixes
|
||||||
* 要素の幅を判定する処理が上手くいかないことがある問題を修正
|
* 要素の幅を判定する処理が上手くいかないことがある問題を修正
|
||||||
|
|
|
@ -377,6 +377,7 @@ enable: "有効にする"
|
||||||
next: "次"
|
next: "次"
|
||||||
retype: "再入力"
|
retype: "再入力"
|
||||||
noteOf: "{user}のノート"
|
noteOf: "{user}のノート"
|
||||||
|
inviteToGroup: "グループに招待"
|
||||||
|
|
||||||
_tutorial:
|
_tutorial:
|
||||||
title: "Misskeyの使い方"
|
title: "Misskeyの使い方"
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import { faAt, faListUl, faEye, faEyeSlash, faBan, faPencilAlt, faComments } from '@fortawesome/free-solid-svg-icons';
|
import { faAt, faListUl, faEye, faEyeSlash, faBan, faPencilAlt, faComments, faUsers } from '@fortawesome/free-solid-svg-icons';
|
||||||
import { faSnowflake, faEnvelope } from '@fortawesome/free-regular-svg-icons';
|
import { faSnowflake, faEnvelope } from '@fortawesome/free-regular-svg-icons';
|
||||||
import i18n from '../i18n';
|
import i18n from '../i18n';
|
||||||
import XMenu from './menu.vue';
|
import XMenu from './menu.vue';
|
||||||
|
@ -43,7 +43,11 @@ export default Vue.extend({
|
||||||
icon: faListUl,
|
icon: faListUl,
|
||||||
text: this.$t('addToList'),
|
text: this.$t('addToList'),
|
||||||
action: this.pushList
|
action: this.pushList
|
||||||
}] as any;
|
}, this.$store.state.i.id != this.user.id ? {
|
||||||
|
icon: faUsers,
|
||||||
|
text: this.$t('inviteToGroup'),
|
||||||
|
action: this.inviteGroup
|
||||||
|
} : undefined] as any;
|
||||||
|
|
||||||
if (this.$store.getters.isSignedIn && this.$store.state.i.id != this.user.id) {
|
if (this.$store.getters.isSignedIn && this.$store.state.i.id != this.user.id) {
|
||||||
menu = menu.concat([null, {
|
menu = menu.concat([null, {
|
||||||
|
@ -118,6 +122,42 @@ export default Vue.extend({
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
async inviteGroup() {
|
||||||
|
const groups = await this.$root.api('users/groups/owned');
|
||||||
|
if (groups.length === 0) {
|
||||||
|
this.$root.dialog({
|
||||||
|
type: 'error',
|
||||||
|
text: this.$t('youHaveNoGroups')
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const { canceled, result: groupId } = await this.$root.dialog({
|
||||||
|
type: null,
|
||||||
|
title: this.$t('group'),
|
||||||
|
select: {
|
||||||
|
items: groups.map(group => ({
|
||||||
|
value: group.id, text: group.name
|
||||||
|
}))
|
||||||
|
},
|
||||||
|
showCancelButton: true
|
||||||
|
});
|
||||||
|
if (canceled) return;
|
||||||
|
this.$root.api('users/groups/invite', {
|
||||||
|
groupId: groupId,
|
||||||
|
userId: this.user.id
|
||||||
|
}).then(() => {
|
||||||
|
this.$root.dialog({
|
||||||
|
type: 'success',
|
||||||
|
iconOnly: true, autoClose: true
|
||||||
|
});
|
||||||
|
}).catch(e => {
|
||||||
|
this.$root.dialog({
|
||||||
|
type: 'error',
|
||||||
|
text: e
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
async toggleMute() {
|
async toggleMute() {
|
||||||
this.$root.api(this.user.isMuted ? 'mute/delete' : 'mute/create', {
|
this.$root.api(this.user.isMuted ? 'mute/delete' : 'mute/create', {
|
||||||
userId: this.user.id
|
userId: this.user.id
|
||||||
|
|
Loading…
Reference in a new issue