From f74a6b4b5777211dcda979b0e390305f46efdd95 Mon Sep 17 00:00:00 2001 From: Brenden Bice Date: Tue, 9 Apr 2019 04:00:09 -0400 Subject: display favs & reblogged users on expanded post in timeline view --- src/components/timeline/timeline.vue | 1 + 1 file changed, 1 insertion(+) (limited to 'src/components/timeline/timeline.vue') diff --git a/src/components/timeline/timeline.vue b/src/components/timeline/timeline.vue index e0a34bd1..147e8a1d 100644 --- a/src/components/timeline/timeline.vue +++ b/src/components/timeline/timeline.vue @@ -22,6 +22,7 @@ :key="status.id" :statusoid="status" :collapsable="true" + :timelineName="timelineName" /> -- cgit v1.2.3-70-g09d2 From 8ed4eb8a7ffe0e370cfc06017d2bce34b2c9d987 Mon Sep 17 00:00:00 2001 From: Brenden Bice Date: Tue, 9 Apr 2019 11:45:33 -0400 Subject: refactor showing favs and repeats logic --- src/components/conversation/conversation.js | 6 ++-- src/components/status/status.js | 7 +++- src/components/status/status.vue | 8 ++--- src/components/timeline/timeline.vue | 3 +- src/modules/statuses.js | 39 +++++----------------- .../backend_interactor_service.js | 4 +-- 6 files changed, 23 insertions(+), 44 deletions(-) (limited to 'src/components/timeline/timeline.vue') diff --git a/src/components/conversation/conversation.js b/src/components/conversation/conversation.js index 5cc7f4ee..ffeb7244 100644 --- a/src/components/conversation/conversation.js +++ b/src/components/conversation/conversation.js @@ -41,8 +41,7 @@ const conversation = { props: [ 'statusoid', 'collapsable', - 'isPage', - 'timelineName' + 'isPage' ], created () { if (this.isPage) { @@ -121,8 +120,6 @@ const conversation = { if (this.status) { this.$store.state.api.backendInteractor.fetchConversation({id: this.status.id}) .then(({ancestors, descendants}) => { - this.$store.dispatch('fetchFavoritedByUsers', { id: this.statusId, retweetedStatusId: this.status.id, timelineName: this.timelineName }) - this.$store.dispatch('fetchRebloggedByUsers', { id: this.statusId, retweetedStatusId: this.status.id, timelineName: this.timelineName }) this.$store.dispatch('addNewStatuses', { statuses: ancestors }) this.$store.dispatch('addNewStatuses', { statuses: descendants }) }) @@ -142,6 +139,7 @@ const conversation = { }, setHighlight (id) { this.highlight = id + this.$store.dispatch('fetchFavsAndRepeats', id) }, getHighlight () { return this.isExpanded ? this.highlight : null diff --git a/src/components/status/status.js b/src/components/status/status.js index 44caf3af..db234ec1 100644 --- a/src/components/status/status.js +++ b/src/components/status/status.js @@ -98,6 +98,10 @@ const Status = { return this.statusoid } }, + statusFromGlobalRepository () { + // NOTE: Consider to replace status with statusFromGlobalRepository + return this.$store.state.statuses.allStatusesObject[this.status.id] + }, loggedIn () { return !!this.$store.state.users.currentUser }, @@ -260,7 +264,8 @@ const Status = { return this.status.summary_html + '
' + this.status.statusnet_html }, combinedFavsAndRepeatsAvatars () { - const combinedAvatars = [].concat(this.statusoid.favoritedBy, this.statusoid.rebloggedBy).filter(_ => _) + // Use the status from the global status repository since favs and repeats are saved in it + const combinedAvatars = [].concat(this.statusFromGlobalRepository.favoritedBy, this.statusFromGlobalRepository.rebloggedBy).filter(_ => _) return uniqBy(combinedAvatars, 'id') } }, diff --git a/src/components/status/status.vue b/src/components/status/status.vue index 34bb64d0..b0882964 100644 --- a/src/components/status/status.vue +++ b/src/components/status/status.vue @@ -136,13 +136,13 @@
    -
  • +
  • {{ $t('settings.notification_visibility_repeats') }} -
    {{ statusoid.rebloggedBy.length }}
    +
    {{ statusFromGlobalRepository.rebloggedBy.length }}
  • -
  • +
  • {{ $t('user_card.favorites') }} -
    {{ statusoid.favoritedBy.length }}
    +
    {{ statusFromGlobalRepository.favoritedBy.length }}
  • diff --git a/src/components/timeline/timeline.vue b/src/components/timeline/timeline.vue index 147e8a1d..e6a8d458 100644 --- a/src/components/timeline/timeline.vue +++ b/src/components/timeline/timeline.vue @@ -16,13 +16,12 @@
-
diff --git a/src/modules/statuses.js b/src/modules/statuses.js index 023f132e..527cafc2 100644 --- a/src/modules/statuses.js +++ b/src/modules/statuses.js @@ -460,32 +460,11 @@ export const mutations = { queueFlush (state, { timeline, id }) { state.timelines[timeline].flushMarker = id }, - addFavoritedByUsers (state, { favoritedByUsers, id, timelineName }) { - if (timelineName) { - state.timelines[timelineName].visibleStatusesObject[id] = { - ...state.timelines[timelineName].visibleStatusesObject[id], - favoritedBy: favoritedByUsers - } - state.timelines[timelineName].visibleStatuses = state.timelines[timelineName].visibleStatuses.map(visibleStatus => visibleStatus.id === id ? { ...visibleStatus, favoritedBy: favoritedByUsers } : visibleStatus) - } else { - state.allStatusesObject[id] = { - ...state.allStatusesObject[id], - favoritedBy: favoritedByUsers - } - } - }, - addRebloggedByUsers (state, { rebloggedByUsers, id, timelineName }) { - if (timelineName) { - state.timelines[timelineName].visibleStatusesObject[id] = { - ...state.timelines[timelineName].visibleStatusesObject[id], - rebloggedBy: rebloggedByUsers - } - state.timelines[timelineName].visibleStatuses = state.timelines[timelineName].visibleStatuses.map(visibleStatus => visibleStatus.id === id ? { ...visibleStatus, rebloggedBy: rebloggedByUsers } : visibleStatus) - } else { - state.allStatusesObject[id] = { - ...state.allStatusesObject[id], - rebloggedBy: rebloggedByUsers - } + addFavsAndRepeats (state, { id, favoritedByUsers, rebloggedByUsers }) { + state.allStatusesObject[id] = { + ...state.allStatusesObject[id], + favoritedBy: favoritedByUsers, + rebloggedBy: rebloggedByUsers } } } @@ -553,11 +532,9 @@ const statuses = { credentials: rootState.users.currentUser.credentials }) }, - fetchFavoritedByUsers ({ rootState, commit }, { id, retweetedStatusId, timelineName }) { - rootState.api.backendInteractor.fetchFavoritedByUsers({id}).then((favoritedByUsers) => commit('addFavoritedByUsers', { favoritedByUsers, id: retweetedStatusId, timelineName })) - }, - fetchRebloggedByUsers ({ rootState, commit }, { id, retweetedStatusId, timelineName }) { - rootState.api.backendInteractor.fetchRebloggedByUsers({id}).then((rebloggedByUsers) => commit('addRebloggedByUsers', { rebloggedByUsers, id: retweetedStatusId, timelineName })) + fetchFavsAndRepeats ({ rootState, commit }, id) { + Promise.all([rootState.api.backendInteractor.fetchFavoritedByUsers(id), rootState.api.backendInteractor.fetchRebloggedByUsers(id)]) + .then(([favoritedByUsers, rebloggedByUsers]) => commit('addFavsAndRepeats', { id, favoritedByUsers, rebloggedByUsers })) } }, mutations diff --git a/src/services/backend_interactor_service/backend_interactor_service.js b/src/services/backend_interactor_service/backend_interactor_service.js index 0768c806..c6742d26 100644 --- a/src/services/backend_interactor_service/backend_interactor_service.js +++ b/src/services/backend_interactor_service/backend_interactor_service.js @@ -112,8 +112,8 @@ const backendInteractorService = (credentials) => { const deleteAccount = ({password}) => apiService.deleteAccount({credentials, password}) const changePassword = ({password, newPassword, newPasswordConfirmation}) => apiService.changePassword({credentials, password, newPassword, newPasswordConfirmation}) - const fetchFavoritedByUsers = ({id}) => apiService.fetchFavoritedByUsers({id}) - const fetchRebloggedByUsers = ({id}) => apiService.fetchRebloggedByUsers({id}) + const fetchFavoritedByUsers = (id) => apiService.fetchFavoritedByUsers({id}) + const fetchRebloggedByUsers = (id) => apiService.fetchRebloggedByUsers({id}) const backendInteractorServiceInstance = { fetchStatus, -- cgit v1.2.3-70-g09d2 From 8d6750d9c2816e33a0444cd978f94009d8b85d47 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Fri, 5 Jul 2019 10:17:44 +0300 Subject: eslint --fix --ext .js,.vue src --- src/App.vue | 108 ++- src/components/about/about.vue | 6 +- src/components/attachment/attachment.vue | 100 ++- src/components/autosuggest/autosuggest.vue | 22 +- src/components/avatar_list/avatar_list.vue | 9 +- src/components/basic_user_card/basic_user_card.vue | 41 +- src/components/block_card/block_card.vue | 14 +- src/components/chat_panel/chat_panel.vue | 59 +- src/components/checkbox/checkbox.vue | 9 +- src/components/color_input/color_input.vue | 65 +- src/components/contrast_ratio/contrast_ratio.vue | 52 +- .../conversation-page/conversation-page.vue | 4 +- src/components/conversation/conversation.vue | 27 +- src/components/dialog_modal/dialog_modal.vue | 16 +- src/components/dm_timeline/dm_timeline.vue | 6 +- src/components/emoji-input/emoji-input.vue | 44 +- src/components/export_import/export_import.vue | 33 +- src/components/exporter/exporter.vue | 12 +- src/components/extra_buttons/extra_buttons.vue | 39 +- src/components/favorite_button/favorite_button.vue | 17 +- src/components/features_panel/features_panel.vue | 22 +- src/components/follow_card/follow_card.vue | 19 +- .../follow_request_card/follow_request_card.vue | 14 +- src/components/follow_requests/follow_requests.vue | 9 +- src/components/font_control/font_control.vue | 80 +- .../friends_timeline/friends_timeline.vue | 6 +- src/components/gallery/gallery.vue | 18 +- src/components/image_cropper/image_cropper.vue | 55 +- src/components/importer/importer.vue | 33 +- .../instance_specific_panel.vue | 8 +- src/components/interactions/interactions.vue | 30 +- .../interface_language_switcher.vue | 69 +- src/components/link-preview/link-preview.vue | 18 +- src/components/list/list.vue | 16 +- src/components/login_form/login_form.vue | 114 +-- src/components/media_modal/media_modal.vue | 22 +- src/components/media_upload/media_upload.vue | 30 +- src/components/mentions/mentions.vue | 6 +- src/components/mfa_form/recovery_form.vue | 85 ++- src/components/mfa_form/totp_form.vue | 90 ++- src/components/mobile_nav/mobile_nav.vue | 71 +- .../mobile_post_status_modal.vue | 42 +- .../moderation_tools/moderation_tools.vue | 237 ++++-- src/components/mute_card/mute_card.vue | 14 +- src/components/nav_panel/nav_panel.vue | 17 +- src/components/notification/notification.vue | 97 ++- src/components/notifications/notifications.vue | 66 +- src/components/opacity_input/opacity_input.vue | 58 +- src/components/poll/poll.vue | 39 +- src/components/poll/poll_form.vue | 65 +- .../post_status_form/post_status_form.vue | 363 +++++---- src/components/progress_button/progress_button.vue | 5 +- .../public_and_external_timeline.vue | 6 +- src/components/public_timeline/public_timeline.vue | 6 +- src/components/range_input/range_input.vue | 79 +- src/components/registration/registration.vue | 222 ++++-- src/components/remote_follow/remote_follow.vue | 22 +- src/components/retweet_button/retweet_button.vue | 23 +- src/components/scope_selector/scope_selector.vue | 59 +- src/components/selectable_list/selectable_list.vue | 47 +- src/components/settings/settings.vue | 732 +++++++++++------- src/components/shadow_control/shadow_control.vue | 292 +++++--- src/components/side_drawer/side_drawer.vue | 97 ++- src/components/status/status.vue | 409 +++++++--- src/components/still-image/still-image.vue | 18 +- src/components/style_switcher/preview.vue | 151 ++-- src/components/style_switcher/style_switcher.vue | 825 ++++++++++++++------- src/components/tag_timeline/tag_timeline.vue | 9 +- .../terms_of_service_panel.vue | 6 +- src/components/timeago/timeago.vue | 19 +- src/components/timeline/timeline.vue | 57 +- src/components/user_avatar/user_avatar.vue | 2 +- src/components/user_card/user_card.vue | 360 ++++++--- src/components/user_finder/user_finder.vue | 37 +- src/components/user_panel/user_panel.vue | 20 +- src/components/user_profile/user_profile.vue | 159 ++-- .../user_reporting_modal/user_reporting_modal.vue | 100 ++- src/components/user_search/user_search.vue | 36 +- src/components/user_settings/confirm.vue | 26 +- src/components/user_settings/mfa.vue | 186 +++-- src/components/user_settings/mfa_backup_codes.vue | 24 +- src/components/user_settings/mfa_totp.vue | 56 +- src/components/user_settings/user_settings.vue | 523 +++++++++---- .../video_attachment/video_attachment.vue | 5 +- src/components/who_to_follow/who_to_follow.vue | 9 +- .../who_to_follow_panel/who_to_follow_panel.vue | 17 +- 86 files changed, 4910 insertions(+), 2230 deletions(-) (limited to 'src/components/timeline/timeline.vue') diff --git a/src/App.vue b/src/App.vue index 769e075d..758c9fce 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,53 +1,111 @@