@@ -1,7 +1,7 @@
 | 
			
		||||
<template>
 | 
			
		||||
<mk-window ref="window" width="500px" height="560px" :popout-url="popout" @closed="destroyDom">
 | 
			
		||||
	<template #header><fa icon="comments"/> {{ $t('@.messaging') }}: <mk-user-name :user="user"/></template>
 | 
			
		||||
	<x-messaging-room :user="user" :class="$style.content"/>
 | 
			
		||||
	<template #header><fa icon="comments"/> {{ $t('@.messaging') }}: <mk-user-name v-if="user" :user="user"/><span v-else>{{ group.name }}</span></template>
 | 
			
		||||
	<x-messaging-room :user="user" :group="group" :class="$style.content"/>
 | 
			
		||||
</mk-window>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
@@ -16,10 +16,14 @@ export default Vue.extend({
 | 
			
		||||
	components: {
 | 
			
		||||
		XMessagingRoom: () => import('../../../common/views/components/messaging-room.vue').then(m => m.default)
 | 
			
		||||
	},
 | 
			
		||||
	props: ['user'],
 | 
			
		||||
	props: ['user', 'group'],
 | 
			
		||||
	computed: {
 | 
			
		||||
		popout(): string {
 | 
			
		||||
			return `${url}/i/messaging/${getAcct(this.user)}`;
 | 
			
		||||
			if (this.user) {
 | 
			
		||||
				return `${url}/i/messaging/${getAcct(this.user)}`;
 | 
			
		||||
			} else if (this.group) {
 | 
			
		||||
				return `${url}/i/messaging/group/${this.group.id}`;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<template>
 | 
			
		||||
<mk-window ref="window" width="500px" height="560px" @closed="destroyDom">
 | 
			
		||||
	<template #header :class="$style.header"><fa icon="comments"/>{{ $t('@.messaging') }}</template>
 | 
			
		||||
	<x-messaging :class="$style.content" @navigate="navigate"/>
 | 
			
		||||
	<x-messaging :class="$style.content" @navigate="navigate" @navigateGroup="navigateGroup"/>
 | 
			
		||||
</mk-window>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
@@ -20,6 +20,11 @@ export default Vue.extend({
 | 
			
		||||
			this.$root.new(MkMessagingRoomWindow, {
 | 
			
		||||
				user: user
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		navigateGroup(group) {
 | 
			
		||||
			this.$root.new(MkMessagingRoomWindow, {
 | 
			
		||||
				group: group
 | 
			
		||||
			});
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -1,70 +0,0 @@
 | 
			
		||||
<template>
 | 
			
		||||
<mk-window ref="window" is-modal width="450px" height="500px" @closed="destroyDom">
 | 
			
		||||
	<template #header><fa :icon="['far', 'envelope']"/> {{ $t('title') }}</template>
 | 
			
		||||
 | 
			
		||||
	<div class="slpqaxdoxhvglersgjukmvizkqbmbokc">
 | 
			
		||||
		<div v-for="req in requests">
 | 
			
		||||
			<router-link :key="req.id" :to="req.follower | userPage">
 | 
			
		||||
				<mk-user-name :user="req.follower"/>
 | 
			
		||||
			</router-link>
 | 
			
		||||
			<span>
 | 
			
		||||
				<a @click="accept(req.follower)">{{ $t('accept') }}</a>|<a @click="reject(req.follower)">{{ $t('reject') }}</a>
 | 
			
		||||
			</span>
 | 
			
		||||
		</div>
 | 
			
		||||
	</div>
 | 
			
		||||
</mk-window>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
import Vue from 'vue';
 | 
			
		||||
import i18n from '../../../i18n';
 | 
			
		||||
 | 
			
		||||
export default Vue.extend({
 | 
			
		||||
	i18n: i18n('desktop/views/components/received-follow-requests-window.vue'),
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			fetching: true,
 | 
			
		||||
			requests: []
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	mounted() {
 | 
			
		||||
		this.$root.api('following/requests/list').then(requests => {
 | 
			
		||||
			this.fetching = false;
 | 
			
		||||
			this.requests = requests;
 | 
			
		||||
		});
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		accept(user) {
 | 
			
		||||
			this.$root.api('following/requests/accept', { userId: user.id }).then(() => {
 | 
			
		||||
				this.requests = this.requests.filter(r => r.follower.id != user.id);
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		reject(user) {
 | 
			
		||||
			this.$root.api('following/requests/reject', { userId: user.id }).then(() => {
 | 
			
		||||
				this.requests = this.requests.filter(r => r.follower.id != user.id);
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		close() {
 | 
			
		||||
			(this as any).$refs.window.close();
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
});
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="stylus" scoped>
 | 
			
		||||
.slpqaxdoxhvglersgjukmvizkqbmbokc
 | 
			
		||||
	padding 16px
 | 
			
		||||
 | 
			
		||||
	> button
 | 
			
		||||
		margin-bottom 16px
 | 
			
		||||
 | 
			
		||||
	> div
 | 
			
		||||
		display flex
 | 
			
		||||
		padding 16px
 | 
			
		||||
		border solid 1px var(--faceDivider)
 | 
			
		||||
		border-radius 4px
 | 
			
		||||
 | 
			
		||||
		> span
 | 
			
		||||
			margin 0 0 0 auto
 | 
			
		||||
 | 
			
		||||
</style>
 | 
			
		||||
@@ -28,12 +28,19 @@
 | 
			
		||||
						<i><fa icon="angle-right"/></i>
 | 
			
		||||
					</router-link>
 | 
			
		||||
				</li>
 | 
			
		||||
				<li @click="list">
 | 
			
		||||
					<p>
 | 
			
		||||
				<li>
 | 
			
		||||
					<router-link to="/i/lists">
 | 
			
		||||
						<i><fa icon="list" fixed-width/></i>
 | 
			
		||||
						<span>{{ $t('lists') }}</span>
 | 
			
		||||
						<i><fa icon="angle-right"/></i>
 | 
			
		||||
					</p>
 | 
			
		||||
					</router-link>
 | 
			
		||||
				</li>
 | 
			
		||||
				<li>
 | 
			
		||||
					<router-link to="/i/groups">
 | 
			
		||||
						<i><fa :icon="faUsers" fixed-width/></i>
 | 
			
		||||
						<span>{{ $t('groups') }}</span>
 | 
			
		||||
						<i><fa icon="angle-right"/></i>
 | 
			
		||||
					</router-link>
 | 
			
		||||
				</li>
 | 
			
		||||
				<li>
 | 
			
		||||
					<router-link to="/i/pages">
 | 
			
		||||
@@ -42,12 +49,12 @@
 | 
			
		||||
						<i><fa icon="angle-right"/></i>
 | 
			
		||||
					</router-link>
 | 
			
		||||
				</li>
 | 
			
		||||
				<li @click="followRequests" v-if="($store.state.i.isLocked || $store.state.i.carefulBot)">
 | 
			
		||||
					<p>
 | 
			
		||||
				<li v-if="($store.state.i.isLocked || $store.state.i.carefulBot)">
 | 
			
		||||
					<router-link to="/i/follow-requests">
 | 
			
		||||
						<i><fa :icon="['far', 'envelope']" fixed-width/></i>
 | 
			
		||||
						<span>{{ $t('follow-requests') }}<i v-if="$store.state.i.pendingReceivedFollowRequestsCount">{{ $store.state.i.pendingReceivedFollowRequestsCount }}</i></span>
 | 
			
		||||
						<i><fa icon="angle-right"/></i>
 | 
			
		||||
					</p>
 | 
			
		||||
					</router-link>
 | 
			
		||||
				</li>
 | 
			
		||||
			</ul>
 | 
			
		||||
			<ul>
 | 
			
		||||
@@ -96,12 +103,10 @@
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
import Vue from 'vue';
 | 
			
		||||
import i18n from '../../../i18n';
 | 
			
		||||
import MkUserListsWindow from './user-lists-window.vue';
 | 
			
		||||
import MkFollowRequestsWindow from './received-follow-requests-window.vue';
 | 
			
		||||
// import MkSettingsWindow from './settings-window.vue';
 | 
			
		||||
import MkDriveWindow from './drive-window.vue';
 | 
			
		||||
import contains from '../../../common/scripts/contains';
 | 
			
		||||
import { faHome, faColumns } from '@fortawesome/free-solid-svg-icons';
 | 
			
		||||
import { faHome, faColumns, faUsers } from '@fortawesome/free-solid-svg-icons';
 | 
			
		||||
import { faMoon, faSun, faStickyNote } from '@fortawesome/free-regular-svg-icons';
 | 
			
		||||
 | 
			
		||||
export default Vue.extend({
 | 
			
		||||
@@ -109,7 +114,7 @@ export default Vue.extend({
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			isOpen: false,
 | 
			
		||||
			faHome, faColumns, faMoon, faSun, faStickyNote
 | 
			
		||||
			faHome, faColumns, faMoon, faSun, faStickyNote, faUsers
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	computed: {
 | 
			
		||||
@@ -147,14 +152,6 @@ export default Vue.extend({
 | 
			
		||||
			this.close();
 | 
			
		||||
			this.$root.new(MkDriveWindow);
 | 
			
		||||
		},
 | 
			
		||||
		list() {
 | 
			
		||||
			this.close();
 | 
			
		||||
			this.$root.new(MkUserListsWindow);
 | 
			
		||||
		},
 | 
			
		||||
		followRequests() {
 | 
			
		||||
			this.close();
 | 
			
		||||
			this.$root.new(MkFollowRequestsWindow);
 | 
			
		||||
		},
 | 
			
		||||
		signout() {
 | 
			
		||||
			this.$root.signout();
 | 
			
		||||
		},
 | 
			
		||||
 
 | 
			
		||||
@@ -72,8 +72,6 @@
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
import Vue from 'vue';
 | 
			
		||||
import i18n from '../../../i18n';
 | 
			
		||||
import MkUserListsWindow from './user-lists-window.vue';
 | 
			
		||||
import MkFollowRequestsWindow from './received-follow-requests-window.vue';
 | 
			
		||||
import MkSettingsWindow from './settings-window.vue';
 | 
			
		||||
import MkDriveWindow from './drive-window.vue';
 | 
			
		||||
import MkMessagingWindow from './messaging-window.vue';
 | 
			
		||||
 
 | 
			
		||||
@@ -1,24 +0,0 @@
 | 
			
		||||
<template>
 | 
			
		||||
<mk-window ref="window" width="450px" height="500px" @closed="destroyDom">
 | 
			
		||||
	<template #header><fa icon="list"/> {{ list.name }}</template>
 | 
			
		||||
 | 
			
		||||
	<x-editor :list="list"/>
 | 
			
		||||
</mk-window>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
import Vue from 'vue';
 | 
			
		||||
import XEditor from '../../../common/views/components/user-list-editor.vue';
 | 
			
		||||
 | 
			
		||||
export default Vue.extend({
 | 
			
		||||
	components: {
 | 
			
		||||
		XEditor
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
	props: {
 | 
			
		||||
		list: {
 | 
			
		||||
			required: true
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
});
 | 
			
		||||
</script>
 | 
			
		||||
@@ -1,36 +0,0 @@
 | 
			
		||||
<template>
 | 
			
		||||
<mk-window ref="window" width="450px" height="500px" @closed="destroyDom">
 | 
			
		||||
	<template #header><fa icon="list"/> {{ $t('title') }}</template>
 | 
			
		||||
	<x-lists :class="$style.content" @choosen="choosen"/>
 | 
			
		||||
</mk-window>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
import Vue from 'vue';
 | 
			
		||||
import i18n from '../../../i18n';
 | 
			
		||||
import MkUserListWindow from './user-list-window.vue';
 | 
			
		||||
 | 
			
		||||
export default Vue.extend({
 | 
			
		||||
	i18n: i18n('desktop/views/components/user-lists-window.vue'),
 | 
			
		||||
	components: {
 | 
			
		||||
		XLists: () => import('../../../common/views/components/user-lists.vue').then(m => m.default)
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		close() {
 | 
			
		||||
			(this as any).$refs.window.close();
 | 
			
		||||
		},
 | 
			
		||||
		choosen(list) {
 | 
			
		||||
			this.$root.new(MkUserListWindow, {
 | 
			
		||||
				list
 | 
			
		||||
			});
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
});
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="stylus" module>
 | 
			
		||||
.content
 | 
			
		||||
	height 100%
 | 
			
		||||
	overflow auto
 | 
			
		||||
 | 
			
		||||
</style>
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
<template>
 | 
			
		||||
<div class="mk-messaging-room-page">
 | 
			
		||||
	<x-messaging-room v-if="user" :user="user" :is-naked="true"/>
 | 
			
		||||
	<x-messaging-room v-if="user || group" :user="user" :group="group" :is-naked="true"/>
 | 
			
		||||
</div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
@@ -19,7 +19,8 @@ export default Vue.extend({
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			fetching: true,
 | 
			
		||||
			user: null
 | 
			
		||||
			user: null,
 | 
			
		||||
			group: null
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	watch: {
 | 
			
		||||
@@ -47,14 +48,25 @@ export default Vue.extend({
 | 
			
		||||
			Progress.start();
 | 
			
		||||
			this.fetching = true;
 | 
			
		||||
 | 
			
		||||
			this.$root.api('users/show', parseAcct(this.$route.params.user)).then(user => {
 | 
			
		||||
				this.user = user;
 | 
			
		||||
				this.fetching = false;
 | 
			
		||||
			if (this.$route.params.user) {
 | 
			
		||||
				this.$root.api('users/show', parseAcct(this.$route.params.user)).then(user => {
 | 
			
		||||
					this.user = user;
 | 
			
		||||
					this.fetching = false;
 | 
			
		||||
 | 
			
		||||
				document.title = this.$t('@.messaging') + ': ' + getUserName(this.user);
 | 
			
		||||
					document.title = this.$t('@.messaging') + ': ' + getUserName(this.user);
 | 
			
		||||
 | 
			
		||||
				Progress.done();
 | 
			
		||||
			});
 | 
			
		||||
					Progress.done();
 | 
			
		||||
				});
 | 
			
		||||
			} else {
 | 
			
		||||
				this.$root.api('users/groups/show', { groupId: this.$route.params.group }).then(group => {
 | 
			
		||||
					this.group = group;
 | 
			
		||||
					this.fetching = false;
 | 
			
		||||
 | 
			
		||||
					document.title = this.$t('@.messaging') + ': ' + this.group.name;
 | 
			
		||||
 | 
			
		||||
					Progress.done();
 | 
			
		||||
				});
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
		<template #header><fa icon="comments"/>{{ $t('@.messaging') }}</template>
 | 
			
		||||
		<template #func><button @click="add"><fa icon="plus"/></button></template>
 | 
			
		||||
 | 
			
		||||
		<x-messaging ref="index" compact @navigate="navigate"/>
 | 
			
		||||
		<x-messaging ref="index" compact @navigate="navigate" @navigateGroup="navigateGroup"/>
 | 
			
		||||
	</ui-container>
 | 
			
		||||
</div>
 | 
			
		||||
</template>
 | 
			
		||||
@@ -31,6 +31,11 @@ export default define({
 | 
			
		||||
				user: user
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		navigateGroup(group) {
 | 
			
		||||
			this.$root.new(MkMessagingRoomWindow, {
 | 
			
		||||
				group: group
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		add() {
 | 
			
		||||
			this.$root.new(MkMessagingWindow);
 | 
			
		||||
		},
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user