summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-06-02 12:58:56 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-06-02 12:58:56 +0900
commit56fa24e40166f59482d25ebc04a8335a60b072ff (patch)
treee152be342313068b276254de8be4b05857ca2abe /src
parentwip (diff)
downloadsharkey-56fa24e40166f59482d25ebc04a8335a60b072ff.tar.gz
sharkey-56fa24e40166f59482d25ebc04a8335a60b072ff.tar.bz2
sharkey-56fa24e40166f59482d25ebc04a8335a60b072ff.zip
wip
Diffstat (limited to 'src')
-rw-r--r--src/client/app/desktop/views/components/notifications.vue4
-rw-r--r--src/client/app/mobile/views/components/follow-button.vue84
-rw-r--r--src/client/app/mobile/views/components/notification-preview.vue4
-rw-r--r--src/client/app/mobile/views/components/notification.vue4
-rw-r--r--src/server/api/endpoints/following/create.ts4
-rw-r--r--src/server/api/endpoints/following/delete.ts4
-rw-r--r--src/server/api/endpoints/following/requests/accept.ts6
-rw-r--r--src/server/api/endpoints/following/requests/cancel.ts22
-rw-r--r--src/server/api/endpoints/following/requests/reject.ts6
-rw-r--r--src/services/following/requests/create.ts4
10 files changed, 67 insertions, 75 deletions
diff --git a/src/client/app/desktop/views/components/notifications.vue b/src/client/app/desktop/views/components/notifications.vue
index aff21b14d8..368655095f 100644
--- a/src/client/app/desktop/views/components/notifications.vue
+++ b/src/client/app/desktop/views/components/notifications.vue
@@ -50,7 +50,7 @@
</div>
</template>
- <template v-if="notification.type == 'followRequest'">
+ <template v-if="notification.type == 'reciveFollowRequest'">
<mk-avatar class="avatar" :user="notification.user"/>
<div class="text">
<p>%fa:user-clock%
@@ -268,7 +268,7 @@ root(isDark)
.text p i
color #53c7ce
- &.followRequest
+ &.reciveFollowRequest
.text p i
color #888
diff --git a/src/client/app/mobile/views/components/follow-button.vue b/src/client/app/mobile/views/components/follow-button.vue
index 9c363d7164..a247db95f6 100644
--- a/src/client/app/mobile/views/components/follow-button.vue
+++ b/src/client/app/mobile/views/components/follow-button.vue
@@ -1,14 +1,14 @@
<template>
<button class="mk-follow-button"
- :class="{ wait: wait, following: user.isFollowing, unfollow: user.isFollowing }"
+ :class="{ wait: wait, following: u.isFollowing }"
@click="onClick"
:disabled="wait"
>
<template v-if="!wait">
- <template v-if="user.hasPendingFollowRequestFromYou">%fa:hourglass-half% %i18n:@request-pending%</template>
- <template v-else-if="user.isFollowing">%fa:minus% %i18n:@unfollow%</template>
- <template v-else-if="!user.isFollowing && user.isLocked">%fa:plus% %i18n:@follow-request%</template>
- <template v-else-if="!user.isFollowing && !user.isLocked">%fa:plus% %i18n:@follow%</template>
+ <template v-if="u.hasPendingFollowRequestFromYou">%fa:hourglass-half% %i18n:@request-pending%</template>
+ <template v-else-if="u.isFollowing">%fa:minus% %i18n:@unfollow%</template>
+ <template v-else-if="!u.isFollowing && u.isLocked">%fa:plus% %i18n:@follow-request%</template>
+ <template v-else-if="!u.isFollowing && !u.isLocked">%fa:plus% %i18n:@follow%</template>
</template>
<template v-else>%fa:spinner .pulse .fw%</template>
</button>
@@ -25,6 +25,7 @@ export default Vue.extend({
},
data() {
return {
+ u: this.user,
wait: false,
connection: null,
connectionId: null
@@ -45,51 +46,44 @@ export default Vue.extend({
methods: {
onFollow(user) {
- if (user.id == this.user.id) {
- this.user.isFollowing = user.isFollowing;
+ if (user.id == this.u.id) {
+ this.u.isFollowing = user.isFollowing;
}
},
onUnfollow(user) {
- if (user.id == this.user.id) {
- this.user.isFollowing = user.isFollowing;
+ if (user.id == this.u.id) {
+ this.u.isFollowing = user.isFollowing;
}
},
- onClick() {
+ async onClick() {
this.wait = true;
- if (this.user.isFollowing) {
- (this as any).api('following/delete', {
- userId: this.user.id
- }).then(() => {
- this.user.isFollowing = false;
- }).catch(err => {
- console.error(err);
- }).then(() => {
- this.wait = false;
- });
- } else {
- if (this.user.isLocked && this.user.hasPendingFollowRequestFromYou) {
- (this as any).api('following/requests/cancel', {
- userId: this.user.id
- }).then(() => {
- this.user.hasPendingFollowRequestFromYou = false;
- }).catch(err => {
- console.error(err);
- }).then(() => {
- this.wait = false;
+
+ try {
+ if (this.u.isFollowing) {
+ this.u = await (this as any).api('following/delete', {
+ userId: this.u.id
});
} else {
- (this as any).api('following/create', {
- userId: this.user.id
- }).then(() => {
- this.user.isFollowing = true;
- }).catch(err => {
- console.error(err);
- }).then(() => {
- this.wait = false;
- });
+ if (this.u.isLocked && this.u.hasPendingFollowRequestFromYou) {
+ this.u = await (this as any).api('following/requests/cancel', {
+ userId: this.u.id
+ });
+ } else if (this.u.isLocked) {
+ this.u = await (this as any).api('following/create', {
+ userId: this.u.id
+ });
+ } else {
+ this.u = await (this as any).api('following/create', {
+ userId: this.user.id
+ });
+ }
}
+ } catch (e) {
+ console.error(e);
+ } finally {
+ this.wait = false;
}
}
}
@@ -107,6 +101,8 @@ export default Vue.extend({
margin 0
line-height 36px
font-size 14px
+ color $theme-color
+ background transparent
outline none
border solid 1px $theme-color
border-radius 36px
@@ -114,9 +110,9 @@ export default Vue.extend({
*
pointer-events none
- &.follow
- color $theme-color
- background transparent
+ &.following
+ color $theme-color-foreground
+ background $theme-color
&:hover
background rgba($theme-color, 0.1)
@@ -124,10 +120,6 @@ export default Vue.extend({
&:active
background rgba($theme-color, 0.2)
- &.unfollow
- color $theme-color-foreground
- background $theme-color
-
&.wait
cursor wait !important
opacity 0.7
diff --git a/src/client/app/mobile/views/components/notification-preview.vue b/src/client/app/mobile/views/components/notification-preview.vue
index b1f6fd1495..6046f77242 100644
--- a/src/client/app/mobile/views/components/notification-preview.vue
+++ b/src/client/app/mobile/views/components/notification-preview.vue
@@ -31,7 +31,7 @@
</div>
</template>
- <template v-if="notification.type == 'followRequest'">
+ <template v-if="notification.type == 'reciveFollowRequest'">
<mk-avatar class="avatar" :user="notification.user"/>
<div class="text">
<p>%fa:user-clock%{{ notification.user | userName }}</p>
@@ -125,7 +125,7 @@ export default Vue.extend({
.text p i
color #53c7ce
- &.followRequest
+ &.reciveFollowRequest
.text p i
color #888
diff --git a/src/client/app/mobile/views/components/notification.vue b/src/client/app/mobile/views/components/notification.vue
index da69fc79cc..8109bef38e 100644
--- a/src/client/app/mobile/views/components/notification.vue
+++ b/src/client/app/mobile/views/components/notification.vue
@@ -40,7 +40,7 @@
</div>
</div>
- <div class="notification followRequest" v-if="notification.type == 'followRequest'">
+ <div class="notification followRequest" v-if="notification.type == 'reciveFollowRequest'">
<mk-avatar class="avatar" :user="notification.user"/>
<div>
<header>
@@ -167,7 +167,7 @@ root(isDark)
> div > header i
color #53c7ce
- &.followRequest
+ &.reciveFollowRequest
> div > header i
color #888
diff --git a/src/server/api/endpoints/following/create.ts b/src/server/api/endpoints/following/create.ts
index 766a8c03d0..48205232e6 100644
--- a/src/server/api/endpoints/following/create.ts
+++ b/src/server/api/endpoints/following/create.ts
@@ -2,7 +2,7 @@
* Module dependencies
*/
import $ from 'cafy'; import ID from '../../../../cafy-id';
-import User from '../../../../models/user';
+import User, { pack } from '../../../../models/user';
import Following from '../../../../models/following';
import create from '../../../../services/following/create';
@@ -49,5 +49,5 @@ module.exports = (params, user) => new Promise(async (res, rej) => {
create(follower, followee);
// Send response
- res();
+ res(await pack(followee, user));
});
diff --git a/src/server/api/endpoints/following/delete.ts b/src/server/api/endpoints/following/delete.ts
index 396b19a6f6..f4030c247a 100644
--- a/src/server/api/endpoints/following/delete.ts
+++ b/src/server/api/endpoints/following/delete.ts
@@ -2,7 +2,7 @@
* Module dependencies
*/
import $ from 'cafy'; import ID from '../../../../cafy-id';
-import User from '../../../../models/user';
+import User, { pack } from '../../../../models/user';
import Following from '../../../../models/following';
import deleteFollowing from '../../../../services/following/delete';
@@ -49,5 +49,5 @@ module.exports = (params, user) => new Promise(async (res, rej) => {
deleteFollowing(follower, followee);
// Send response
- res();
+ res(await pack(followee, user));
});
diff --git a/src/server/api/endpoints/following/requests/accept.ts b/src/server/api/endpoints/following/requests/accept.ts
index f8df3b7850..705d3b161a 100644
--- a/src/server/api/endpoints/following/requests/accept.ts
+++ b/src/server/api/endpoints/following/requests/accept.ts
@@ -6,9 +6,9 @@ import User from '../../../../../models/user';
* Accept a follow request
*/
module.exports = (params, user) => new Promise(async (res, rej) => {
- // Get 'followerId' parameter
- const [followerId, followerIdErr] = $.type(ID).get(params.followerId);
- if (followerIdErr) return rej('invalid followerId param');
+ // Get 'userId' parameter
+ const [followerId, followerIdErr] = $.type(ID).get(params.userId);
+ if (followerIdErr) return rej('invalid userId param');
// Fetch follower
const follower = await User.findOne({
diff --git a/src/server/api/endpoints/following/requests/cancel.ts b/src/server/api/endpoints/following/requests/cancel.ts
index 417422e06b..388a54890b 100644
--- a/src/server/api/endpoints/following/requests/cancel.ts
+++ b/src/server/api/endpoints/following/requests/cancel.ts
@@ -1,26 +1,26 @@
import $ from 'cafy'; import ID from '../../../../../cafy-id';
import cancelFollowRequest from '../../../../../services/following/requests/cancel';
-import User from '../../../../../models/user';
+import User, { pack } from '../../../../../models/user';
/**
* Cancel a follow request
*/
module.exports = (params, user) => new Promise(async (res, rej) => {
- // Get 'followerId' parameter
- const [followerId, followerIdErr] = $.type(ID).get(params.followerId);
- if (followerIdErr) return rej('invalid followerId param');
+ // Get 'userId' parameter
+ const [followeeId, followeeIdErr] = $.type(ID).get(params.userId);
+ if (followeeIdErr) return rej('invalid userId param');
- // Fetch follower
- const follower = await User.findOne({
- _id: followerId
+ // Fetch followee
+ const followee = await User.findOne({
+ _id: followeeId
});
- if (follower === null) {
- return rej('follower not found');
+ if (followee === null) {
+ return rej('followee not found');
}
- await cancelFollowRequest(user, follower);
+ await cancelFollowRequest(followee, user);
// Send response
- res();
+ res(await pack(followee._id, user));
});
diff --git a/src/server/api/endpoints/following/requests/reject.ts b/src/server/api/endpoints/following/requests/reject.ts
index 4900127a57..1cfb562b55 100644
--- a/src/server/api/endpoints/following/requests/reject.ts
+++ b/src/server/api/endpoints/following/requests/reject.ts
@@ -6,9 +6,9 @@ import User from '../../../../../models/user';
* Reject a follow request
*/
module.exports = (params, user) => new Promise(async (res, rej) => {
- // Get 'followerId' parameter
- const [followerId, followerIdErr] = $.type(ID).get(params.followerId);
- if (followerIdErr) return rej('invalid followerId param');
+ // Get 'userId' parameter
+ const [followerId, followerIdErr] = $.type(ID).get(params.userId);
+ if (followerIdErr) return rej('invalid userId param');
// Fetch follower
const follower = await User.findOne({
diff --git a/src/services/following/requests/create.ts b/src/services/following/requests/create.ts
index 1285c21ea8..b69eb5acb0 100644
--- a/src/services/following/requests/create.ts
+++ b/src/services/following/requests/create.ts
@@ -33,10 +33,10 @@ export default async function(follower: IUser, followee: IUser) {
// Publish reciveRequest event
if (isLocalUser(followee)) {
- packUser(follower, followee).then(packed => event(followee._id, 'reciveRequest', packed)),
+ packUser(follower, followee).then(packed => event(followee._id, 'reciveFollowRequest', packed)),
// 通知を作成
- notify(followee._id, follower._id, 'reciveRequest');
+ notify(followee._id, follower._id, 'reciveFollowRequest');
}
if (isLocalUser(follower) && isRemoteUser(followee)) {