diff --git a/src/components/desktop_nav/desktop_nav.js b/src/components/desktop_nav/desktop_nav.js index 1978ce8f..d7538f5b 100644 --- a/src/components/desktop_nav/desktop_nav.js +++ b/src/components/desktop_nav/desktop_nav.js @@ -1,6 +1,11 @@ import SearchBar from 'components/search_bar/search_bar.vue' import ConfirmModal from '../confirm_modal/confirm_modal.vue' import { library } from '@fortawesome/fontawesome-svg-core' +import { + publicTimelineVisible, + federatedTimelineVisible, + bubbleTimelineVisible, +} from '../../lib/timeline_visibility' import { faSignInAlt, faSignOutAlt, @@ -106,8 +111,9 @@ export default { return this.$store.state.instance.localBubbleInstances.length > 0 }, ...mapState({ - publicTimelineVisibility: state => state.instance.publicTimelineVisibility, - federatedTimelineAvailable: state => state.instance.federatedTimelineAvailable, + publicTimelineVisible, + federatedTimelineVisible, + bubbleTimelineVisible, }) }, methods: { diff --git a/src/components/desktop_nav/desktop_nav.vue b/src/components/desktop_nav/desktop_nav.vue index 61fd838c..f50d1b3e 100644 --- a/src/components/desktop_nav/desktop_nav.vue +++ b/src/components/desktop_nav/desktop_nav.vue @@ -46,7 +46,7 @@ @@ -70,7 +70,7 @@ state.users.currentUser, privateMode: state => state.instance.private, federating: state => state.instance.federating, - showBubbleTimeline: state => (state.instance.localBubbleInstances.length > 0), - publicTimelineVisibility: state => state.instance.publicTimelineVisibility, - federatedTimelineAvailable: state => state.instance.federatedTimelineAvailable, + publicTimelineVisible, + federatedTimelineVisible, + bubbleTimelineVisible, }) } } diff --git a/src/components/timeline_menu/timeline_menu_content.vue b/src/components/timeline_menu/timeline_menu_content.vue index 8f636a0e..bb170b82 100644 --- a/src/components/timeline_menu/timeline_menu_content.vue +++ b/src/components/timeline_menu/timeline_menu_content.vue @@ -16,7 +16,7 @@ >{{ $t("nav.home_timeline") }} -
  • +
  • {{ $t("nav.bubble_timeline") }}
  • -
  • +
  • {{ $t("nav.public_tl") }}
  • -
  • +
  • state.users.currentUser, privateMode: state => state.instance.private, federating: state => state.instance.federating, - showBubbleTimeline: state => (state.instance.localBubbleInstances.length > 0), - publicTimelineVisibility: state => state.instance.publicTimelineVisibility, - federatedTimelineAvailable: state => state.instance.federatedTimelineAvailable, + publicTimelineVisible, + federatedTimelineVisible, + bubbleTimelineVisible, }) } } diff --git a/src/components/timeline_menu_tabs/timeline_menu_content.vue b/src/components/timeline_menu_tabs/timeline_menu_content.vue index bb54595d..28e58714 100644 --- a/src/components/timeline_menu_tabs/timeline_menu_content.vue +++ b/src/components/timeline_menu_tabs/timeline_menu_content.vue @@ -16,7 +16,7 @@ >{{ $t("nav.home_timeline") }}
  • -
  • +
  • {{ $t("nav.bubble_timeline") }}
  • -
  • +
  • {{ $t("nav.public_tl") }}
  • -
  • +
  • state.users.currentUser, - publicTimelineVisibility: state => state.instance.publicTimelineVisibility, - federatedTimelineAvailable: state => state.instance.federatedTimelineAvailable, - showBubbleTimeline: state => (state.instance.localBubbleInstances.length > 0), + publicTimelineVisible, + federatedTimelineVisible, + bubbleTimelineVisible, }) }, methods: { diff --git a/src/components/timeline_menu_tabs/timeline_menu_tabs.vue b/src/components/timeline_menu_tabs/timeline_menu_tabs.vue index 1f0d47ee..96340508 100644 --- a/src/components/timeline_menu_tabs/timeline_menu_tabs.vue +++ b/src/components/timeline_menu_tabs/timeline_menu_tabs.vue @@ -18,7 +18,7 @@ @@ -42,7 +42,7 @@ ( + state.instance.publicTimelineVisibility[timeline] ?? false +); + +const currentUser = (state) => state.users.currentUser; + +const currentUserOrTimelineVisibleUnauthenticated = (state, timeline) => ( + currentUser(state) || timelineVisibleUnauthenticated(state, timeline) +); + +const federatedTimelineAvailable = (state) => state.instance.federatedTimelineAvailable; + +export const federatedTimelineVisible = (state) => ( + federatedTimelineAvailable(state) && currentUserOrTimelineVisibleUnauthenticated(state, 'federated') +); + +export const publicTimelineVisible = (state) => ( + currentUserOrTimelineVisibleUnauthenticated(state, 'local') +); + +export const bubbleTimelineVisible = (state) => ( + state.instance.localBubbleInstances.length > 0 && currentUserOrTimelineVisibleUnauthenticated(state, 'bubble') +);