Sharkey/src/client/app/desktop/views/components/received-follow-requests-window.vue

71 lines
1.6 KiB
Vue
Raw Normal View History

2018-06-02 07:34:53 +03:00
<template>
<mk-window ref="window" is-modal width="450px" height="500px" @closed="destroyDom">
2019-02-18 02:48:00 +02:00
<template v-slot:header><fa :icon="['far', 'envelope']"/> {{ $t('title') }}</template>
2018-06-02 07:34:53 +03:00
2018-09-28 08:26:20 +03:00
<div class="slpqaxdoxhvglersgjukmvizkqbmbokc">
2018-06-02 09:51:43 +03:00
<div v-for="req in requests">
<router-link :key="req.id" :to="req.follower | userPage">
2018-12-06 09:09:33 +02:00
<mk-user-name :user="req.follower"/>
</router-link>
2018-06-02 09:51:43 +03:00
<span>
<a @click="accept(req.follower)">{{ $t('accept') }}</a>|<a @click="reject(req.follower)">{{ $t('reject') }}</a>
2018-06-02 09:51:43 +03:00
</span>
</div>
2018-06-02 07:34:53 +03:00
</div>
</mk-window>
</template>
<script lang="ts">
import Vue from 'vue';
import i18n from '../../../i18n';
2018-06-02 07:34:53 +03:00
export default Vue.extend({
i18n: i18n('desktop/views/components/received-follow-requests-window.vue'),
2018-06-02 07:34:53 +03:00
data() {
return {
fetching: true,
requests: []
};
},
mounted() {
2018-11-09 01:13:34 +02:00
this.$root.api('following/requests/list').then(requests => {
2018-06-02 07:34:53 +03:00
this.fetching = false;
this.requests = requests;
});
},
methods: {
2018-06-02 09:51:43 +03:00
accept(user) {
2018-11-09 01:13:34 +02:00
this.$root.api('following/requests/accept', { userId: user.id }).then(() => {
2018-06-02 09:51:43 +03:00
this.requests = this.requests.filter(r => r.follower.id != user.id);
});
},
reject(user) {
2018-11-09 01:13:34 +02:00
this.$root.api('following/requests/reject', { userId: user.id }).then(() => {
2018-06-02 09:51:43 +03:00
this.requests = this.requests.filter(r => r.follower.id != user.id);
});
},
2018-06-02 07:34:53 +03:00
close() {
(this as any).$refs.window.close();
}
}
});
</script>
<style lang="stylus" scoped>
2018-09-28 09:34:34 +03:00
.slpqaxdoxhvglersgjukmvizkqbmbokc
2018-06-02 07:34:53 +03:00
padding 16px
> button
margin-bottom 16px
2018-06-02 09:51:43 +03:00
> div
display flex
2018-06-02 07:34:53 +03:00
padding 16px
2018-09-28 09:34:34 +03:00
border solid 1px var(--faceDivider)
2018-06-02 07:34:53 +03:00
border-radius 4px
2018-06-02 09:51:43 +03:00
> span
margin 0 0 0 auto
2018-06-02 07:34:53 +03:00
</style>