From 18ae7bd5f366598d46a65e9da1312c98f7bb00e7 Mon Sep 17 00:00:00 2001 From: shpuld <shp@cock.li> Date: Sun, 3 Feb 2019 11:58:49 +0200 Subject: [PATCH] Combine friends/followers --- .../follow_list.js} | 23 +++---- src/components/follow_list/follow_list.vue | 33 ++++++++++ .../followers_list/followers_list.vue | 12 ---- src/components/friends_list/friends_list.js | 61 ------------------- src/components/friends_list/friends_list.vue | 12 ---- src/components/user_profile/user_profile.js | 6 +- src/components/user_profile/user_profile.vue | 4 +- src/i18n/en.json | 10 +-- src/i18n/fi.json | 4 +- 9 files changed, 58 insertions(+), 107 deletions(-) rename src/components/{followers_list/followers_list.js => follow_list/follow_list.js} (69%) create mode 100644 src/components/follow_list/follow_list.vue delete mode 100644 src/components/followers_list/followers_list.vue delete mode 100644 src/components/friends_list/friends_list.js delete mode 100644 src/components/friends_list/friends_list.vue diff --git a/src/components/followers_list/followers_list.js b/src/components/follow_list/follow_list.js similarity index 69% rename from src/components/followers_list/followers_list.js rename to src/components/follow_list/follow_list.js index 13aace18..6d00eb94 100644 --- a/src/components/followers_list/followers_list.js +++ b/src/components/follow_list/follow_list.js @@ -1,6 +1,6 @@ import UserCard from '../user_card/user_card.vue' -const FollowersList = { +const FollowList = { data () { return { loading: false, @@ -8,11 +8,11 @@ const FollowersList = { error: false } }, - props: ['userId'], + props: ['userId', 'showFollowers'], created () { window.addEventListener('scroll', this.scrollLoad) - if (this.user.followers.length === 0) { - this.fetchFollowers() + if (this.entries.length === 0) { + this.fetchEntries() } }, destroyed () { @@ -23,18 +23,19 @@ const FollowersList = { user () { return this.$store.getters.userById(this.userId) }, - followers () { - return this.user.followers + entries () { + return this.showFollowers ? this.user.followers : this.user.friends } }, methods: { - fetchFollowers () { + fetchEntries () { if (!this.loading) { + const command = this.showFollowers ? 'addFollowers' : 'addFriends' this.loading = true - this.$store.dispatch('addFollowers', this.userId).then(followers => { + this.$store.dispatch(command, this.userId).then(entries => { this.error = false this.loading = false - this.bottomedOut = followers.length === 0 + this.bottomedOut = entries.length === 0 }).catch(() => { this.error = true this.loading = false @@ -49,7 +50,7 @@ const FollowersList = { this.$el.offsetHeight > 0 && (window.innerHeight + window.pageYOffset) >= (height - 750) ) { - this.fetchFollowers() + this.fetchEntries() } } }, @@ -58,4 +59,4 @@ const FollowersList = { } } -export default FollowersList +export default FollowList diff --git a/src/components/follow_list/follow_list.vue b/src/components/follow_list/follow_list.vue new file mode 100644 index 00000000..24ab97d8 --- /dev/null +++ b/src/components/follow_list/follow_list.vue @@ -0,0 +1,33 @@ +<template> + <div class="follow-list"> + <user-card + v-for="entry in entries" + :key="entry.id" :user="entry" + :showFollows="true" + /> + <div class="text-center panel-footer"> + <a v-if="error" @click="fetchEntries" class="alert error"> + {{$t('general.generic_error')}} + </a> + <i v-else-if="loading" class="icon-spin3 animate-spin"/> + <span v-else-if="bottomedOut"></span> + <a v-else @click="fetchEntries">{{$t('general.more')}}</a> + </div> + </div> +</template> + +<script src="./follow_list.js"></script> + +<style lang="scss"> + +.follow-list { + .panel-footer { + padding: 10px; + } + + .error { + font-size: 14px; + } +} + +</style> diff --git a/src/components/followers_list/followers_list.vue b/src/components/followers_list/followers_list.vue deleted file mode 100644 index b6bd35e1..00000000 --- a/src/components/followers_list/followers_list.vue +++ /dev/null @@ -1,12 +0,0 @@ -<template> - <div> - <user-card v-for="follower in followers" :key="follower.id" :user="follower" :showFollows="true"></user-card> - <div @click="fetchFollowers" class="new-status-notification text-center panel-footer"> - <span v-if="error" class="alert error">Error loading followers</span> - <i v-else-if="loading" class="icon-spin3 animate-spin"/> - <span v-else-if="bottomedOut"></span> - </div> - </div> -</template> - -<script src="./followers_list.js" /> diff --git a/src/components/friends_list/friends_list.js b/src/components/friends_list/friends_list.js deleted file mode 100644 index d5c1837a..00000000 --- a/src/components/friends_list/friends_list.js +++ /dev/null @@ -1,61 +0,0 @@ -import UserCard from '../user_card/user_card.vue' - -const FriendsList = { - data () { - return { - loading: false, - bottomedOut: false, - error: false - } - }, - props: ['userId'], - created () { - window.addEventListener('scroll', this.scrollLoad) - if (this.user.followers.length === 0) { - this.fetchFriends() - } - }, - destroyed () { - window.removeEventListener('scroll', this.scrollLoad) - this.$store.dispatch('clearFriendsAndFollowers', this.userId) - }, - computed: { - user () { - return this.$store.getters.userById(this.userId) - }, - friends () { - return this.user.friends - } - }, - methods: { - fetchFriends () { - if (!this.loading) { - this.loading = true - this.$store.dispatch('addFriends', this.userId).then(friends => { - this.error = false - this.loading = false - this.bottomedOut = friends.length === 0 - }).catch(() => { - this.error = true - this.loading = false - }) - } - }, - scrollLoad (e) { - const bodyBRect = document.body.getBoundingClientRect() - const height = Math.max(bodyBRect.height, -(bodyBRect.y)) - if (this.loading === false && - this.bottomedOut === false && - this.$el.offsetHeight > 0 && - (window.innerHeight + window.pageYOffset) >= (height - 750) - ) { - this.fetchFriends() - } - } - }, - components: { - UserCard - } -} - -export default FriendsList diff --git a/src/components/friends_list/friends_list.vue b/src/components/friends_list/friends_list.vue deleted file mode 100644 index 75657cc8..00000000 --- a/src/components/friends_list/friends_list.vue +++ /dev/null @@ -1,12 +0,0 @@ -<template> - <div> - <user-card v-for="friend in friends" :key="friend.id" :user="friend" :showFollows="true"></user-card> - <div @click="fetchFriends" class="new-status-notification text-center panel-footer"> - <span v-if="error" class="alert error">Error loading follows</span> - <i v-else-if="loading" class="icon-spin3 animate-spin"/> - <span v-else-if="bottomedOut"></span> - </div> - </div> -</template> - -<script src="./friends_list.js" /> diff --git a/src/components/user_profile/user_profile.js b/src/components/user_profile/user_profile.js index 0361d253..7b0ab705 100644 --- a/src/components/user_profile/user_profile.js +++ b/src/components/user_profile/user_profile.js @@ -1,8 +1,7 @@ import UserCardContent from '../user_card_content/user_card_content.vue' import UserCard from '../user_card/user_card.vue' import Timeline from '../timeline/timeline.vue' -import FriendsList from '../friends_list/friends_list.vue' -import FollowersList from '../followers_list/followers_list.vue' +import FollowList from '../follow_list/follow_list.vue' const UserProfile = { created () { @@ -102,8 +101,7 @@ const UserProfile = { UserCardContent, UserCard, Timeline, - FriendsList, - FollowersList + FollowList } } diff --git a/src/components/user_profile/user_profile.vue b/src/components/user_profile/user_profile.vue index c431c729..6d5b00d1 100644 --- a/src/components/user_profile/user_profile.vue +++ b/src/components/user_profile/user_profile.vue @@ -16,13 +16,13 @@ :user-id="fetchBy" /> <div :label="$t('user_card.followees')"> - <FriendsList v-if="user.friends_count > 0" :userId="userId" /> + <FollowList v-if="user.friends_count > 0" :userId="userId" :showFollowers="false" /> <div class="userlist-placeholder" v-else> <i class="icon-spin3 animate-spin"></i> </div> </div> <div :label="$t('user_card.followers')"> - <FollowersList v-if="user.followers_count > 0" :userId="userId" /> + <FollowList v-if="user.followers_count > 0" :userId="userId" :showFollowers="true" /> <div class="userlist-placeholder" v-else> <i class="icon-spin3 animate-spin"></i> </div> diff --git a/src/i18n/en.json b/src/i18n/en.json index d3b0e407..dc10fa7f 100644 --- a/src/i18n/en.json +++ b/src/i18n/en.json @@ -17,7 +17,9 @@ }, "general": { "apply": "Apply", - "submit": "Submit" + "submit": "Submit", + "more": "More", + "generic_error": "An error occured" }, "login": { "login": "Log in", @@ -365,9 +367,9 @@ }, "upload":{ "error": { - "base": "Upload failed.", - "file_too_big": "File too big [{filesize}{filesizeunit} / {allowedsize}{allowedsizeunit}]", - "default": "Try again later" + "base": "Upload failed.", + "file_too_big": "File too big [{filesize}{filesizeunit} / {allowedsize}{allowedsizeunit}]", + "default": "Try again later" }, "file_size_units": { "B": "B", diff --git a/src/i18n/fi.json b/src/i18n/fi.json index 0d62f295..5a0c1ea8 100644 --- a/src/i18n/fi.json +++ b/src/i18n/fi.json @@ -17,7 +17,9 @@ }, "general": { "apply": "Aseta", - "submit": "Lähetä" + "submit": "Lähetä", + "more": "Lisää", + "generic_error": "Virhe tapahtui" }, "login": { "login": "Kirjaudu sisään",