Fix public favorites #390

Open
lamp wants to merge 1 commit from lamp/akkoma-fe:public-favorites into develop
4 changed files with 15 additions and 5 deletions

View file

@ -97,6 +97,9 @@ const UserProfile = {
followersTabVisible () {
return this.isUs || !this.user.hide_followers
},
favoritesTabVisible () {
return this.isUs || !this.user.hide_favorites
},
currentUser () {
return this.$store.state.users.currentUser
},
@ -114,14 +117,14 @@ const UserProfile = {
replies: 'replies',
media: 'media'
}
// only we can see our own favourites
if (this.isUs) timelineTabMap['favorites'] = 'favorites'
if (this.favoritesTabVisible) timelineTabMap['favorites'] = 'favorites'
Review

provided it works well with user_profile.vue (not sure tbh; frontend stuff isn’t my strong suit), it would imho be cleaner to properly distinguish one’s own favourites from publicly accessible favourites here and get rid off the userId checks and mangling in the other parts, i.e.:

-      // only we can see our own favourites
       if (this.isUs) timelineTabMap['favorites'] = 'favorites'
+      else if(this.favoritesTabVisible) timelineTabMap['favorites'] = 'publicFavorites'
provided it works well with `user_profile.vue` *(not sure tbh; frontend stuff isn’t my strong suit)*, it would imho be cleaner to properly distinguish one’s own favourites from publicly accessible favourites here and get rid off the `userId` checks and mangling in the other parts, i.e.: ```diff - // only we can see our own favourites if (this.isUs) timelineTabMap['favorites'] = 'favorites' + else if(this.favoritesTabVisible) timelineTabMap['favorites'] = 'publicFavorites' ```
const timeline = timelineTabMap[nextTab]
if (timeline) {
this.stopFetching()
this.$store.dispatch('startFetchingTimeline', { timeline: timeline, userId: this.userId })
this.$store.dispatch('startFetchingTimeline', { timeline: timeline, userId: nextTab == 'favorites' && this.isUs ? null : this.userId })
}
},
load (userNameOrId) {

View file

@ -165,14 +165,14 @@
:footer-slipgate="footerRef"
/>
<Timeline
v-if="isUs"
v-if="favoritesTabVisible"
key="favorites"
:label="$t('user_card.favorites')"
:disabled="!isUs"
:embedded="true"
:title="$t('user_card.favorites')"
timeline-name="favorites"
:timeline="favorites"
:user-id="isUs ? undefined : userId"
:in-profile="true"
:footer-slipgate="footerRef"
/>

View file

@ -107,6 +107,7 @@ const PLEROMA_ANNOUNCEMENTS_URL = '/api/v1/pleroma/admin/announcements'
const PLEROMA_POST_ANNOUNCEMENT_URL = '/api/v1/pleroma/admin/announcements'
const PLEROMA_EDIT_ANNOUNCEMENT_URL = id => `/api/v1/pleroma/admin/announcements/${id}`
const PLEROMA_DELETE_ANNOUNCEMENT_URL = id => `/api/v1/pleroma/admin/announcements/${id}`
const PLEROMA_USER_FAVORITES_TIMELINE_URL = id => `/api/v1/pleroma/accounts/${id}/favourites`
const AKKOMA_SETTING_PROFILE_URL = (name) => `/api/v1/akkoma/frontend_settings/pleroma-fe/${name}`
const AKKOMA_SETTING_PROFILE_LIST = `/api/v1/akkoma/frontend_settings/pleroma-fe`
const MASTODON_TAG_URL = (name) => `/api/v1/tags/${name}`
@ -709,6 +710,7 @@ const fetchTimeline = ({
media: MASTODON_USER_TIMELINE_URL,
list: MASTODON_LIST_TIMELINE_URL,
favorites: MASTODON_USER_FAVORITES_TIMELINE_URL,
publicFavorites: PLEROMA_USER_FAVORITES_TIMELINE_URL,
tag: MASTODON_TAG_TIMELINE_URL,
bookmarks: MASTODON_BOOKMARK_TIMELINE_URL
}
@ -717,6 +719,10 @@ const fetchTimeline = ({
let url = timelineUrls[timeline]
if (timeline === 'favorites' && userId) {
url = timelineUrls.publicFavorites(userId)
}
if (timeline === 'user' || timeline === 'media' || timeline === 'replies') {
url = url(userId)
}

View file

@ -110,6 +110,7 @@ export const parseUser = (data) => {
output.allow_following_move = data.pleroma.allow_following_move
output.hide_favorites = data.pleroma.hide_favorites
output.hide_follows = data.pleroma.hide_follows
output.hide_followers = data.pleroma.hide_followers
output.hide_follows_count = data.pleroma.hide_follows_count