Merge branch 'develop' into s0ulf3re/contentWarningRework
All checks were successful
ci/woodpecker/pr/woodpecker Pipeline was successful
All checks were successful
ci/woodpecker/pr/woodpecker Pipeline was successful
This commit is contained in:
commit
2713ca0c3e
14 changed files with 78 additions and 23 deletions
|
@ -4,8 +4,6 @@
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1,user-scalable=no">
|
<meta name="viewport" content="width=device-width, initial-scale=1,user-scalable=no">
|
||||||
<title>Akkoma</title>
|
<title>Akkoma</title>
|
||||||
<link rel="stylesheet" href="/static/font/css/fontello.css">
|
|
||||||
<link rel="stylesheet" href="/static/font/css/animation.css">
|
|
||||||
<link rel="stylesheet" href="/static/font/tiresias.css">
|
<link rel="stylesheet" href="/static/font/tiresias.css">
|
||||||
<link rel="stylesheet" href="/static/font/css/lato.css">
|
<link rel="stylesheet" href="/static/font/css/lato.css">
|
||||||
<link rel="stylesheet" href="/static/mfm.css">
|
<link rel="stylesheet" href="/static/mfm.css">
|
||||||
|
|
|
@ -322,6 +322,9 @@ const getNodeInfo = async ({ store }) => {
|
||||||
: federation.enabled
|
: federation.enabled
|
||||||
})
|
})
|
||||||
|
|
||||||
|
store.dispatch('setInstanceOption', { name: 'publicTimelineVisibility', value: metadata.publicTimelineVisibility })
|
||||||
|
store.dispatch('setInstanceOption', { name: 'federatedTimelineAvailable', value: metadata.federatedTimelineAvailable })
|
||||||
|
|
||||||
const accountActivationRequired = metadata.accountActivationRequired
|
const accountActivationRequired = metadata.accountActivationRequired
|
||||||
store.dispatch('setInstanceOption', { name: 'accountActivationRequired', value: accountActivationRequired })
|
store.dispatch('setInstanceOption', { name: 'accountActivationRequired', value: accountActivationRequired })
|
||||||
|
|
||||||
|
@ -396,9 +399,6 @@ const afterStoreSetup = async ({ store, i18n }) => {
|
||||||
])
|
])
|
||||||
|
|
||||||
// Start fetching things that don't need to block the UI
|
// Start fetching things that don't need to block the UI
|
||||||
store.dispatch('fetchMutes')
|
|
||||||
store.dispatch('startFetchingAnnouncements')
|
|
||||||
store.dispatch('startFetchingReports')
|
|
||||||
getTOS({ store })
|
getTOS({ store })
|
||||||
getStickers({ store })
|
getStickers({ store })
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,11 @@
|
||||||
import SearchBar from 'components/search_bar/search_bar.vue'
|
import SearchBar from 'components/search_bar/search_bar.vue'
|
||||||
import ConfirmModal from '../confirm_modal/confirm_modal.vue'
|
import ConfirmModal from '../confirm_modal/confirm_modal.vue'
|
||||||
import { library } from '@fortawesome/fontawesome-svg-core'
|
import { library } from '@fortawesome/fontawesome-svg-core'
|
||||||
|
import {
|
||||||
|
publicTimelineVisible,
|
||||||
|
federatedTimelineVisible,
|
||||||
|
bubbleTimelineVisible,
|
||||||
|
} from '../../lib/timeline_visibility'
|
||||||
import {
|
import {
|
||||||
faSignInAlt,
|
faSignInAlt,
|
||||||
faSignOutAlt,
|
faSignOutAlt,
|
||||||
|
@ -19,6 +24,7 @@ import {
|
||||||
faInfoCircle,
|
faInfoCircle,
|
||||||
faUserTie
|
faUserTie
|
||||||
} from '@fortawesome/free-solid-svg-icons'
|
} from '@fortawesome/free-solid-svg-icons'
|
||||||
|
import { mapState } from 'vuex'
|
||||||
|
|
||||||
library.add(
|
library.add(
|
||||||
faSignInAlt,
|
faSignInAlt,
|
||||||
|
@ -103,7 +109,12 @@ export default {
|
||||||
},
|
},
|
||||||
showBubbleTimeline () {
|
showBubbleTimeline () {
|
||||||
return this.$store.state.instance.localBubbleInstances.length > 0
|
return this.$store.state.instance.localBubbleInstances.length > 0
|
||||||
}
|
},
|
||||||
|
...mapState({
|
||||||
|
publicTimelineVisible,
|
||||||
|
federatedTimelineVisible,
|
||||||
|
bubbleTimelineVisible,
|
||||||
|
})
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
scrollToTop () {
|
scrollToTop () {
|
||||||
|
|
|
@ -46,6 +46,7 @@
|
||||||
<router-link
|
<router-link
|
||||||
:to="{ name: 'public-timeline' }"
|
:to="{ name: 'public-timeline' }"
|
||||||
class="nav-icon"
|
class="nav-icon"
|
||||||
|
v-if="publicTimelineVisible"
|
||||||
>
|
>
|
||||||
<FAIcon
|
<FAIcon
|
||||||
fixed-width
|
fixed-width
|
||||||
|
@ -55,7 +56,7 @@
|
||||||
/>
|
/>
|
||||||
</router-link>
|
</router-link>
|
||||||
<router-link
|
<router-link
|
||||||
v-if="currentUser && showBubbleTimeline"
|
v-if="bubbleTimelineVisible"
|
||||||
:to="{ name: 'bubble-timeline' }"
|
:to="{ name: 'bubble-timeline' }"
|
||||||
class="nav-icon"
|
class="nav-icon"
|
||||||
>
|
>
|
||||||
|
@ -69,6 +70,7 @@
|
||||||
<router-link
|
<router-link
|
||||||
:to="{ name: 'public-external-timeline' }"
|
:to="{ name: 'public-external-timeline' }"
|
||||||
class="nav-icon"
|
class="nav-icon"
|
||||||
|
v-if="federatedTimelineVisible"
|
||||||
>
|
>
|
||||||
<FAIcon
|
<FAIcon
|
||||||
fixed-width
|
fixed-width
|
||||||
|
|
|
@ -15,6 +15,7 @@ import {
|
||||||
faBookmark as faBookmarkReg,
|
faBookmark as faBookmarkReg,
|
||||||
faFlag
|
faFlag
|
||||||
} from '@fortawesome/free-regular-svg-icons'
|
} from '@fortawesome/free-regular-svg-icons'
|
||||||
|
import { mapState } from 'vuex'
|
||||||
|
|
||||||
library.add(
|
library.add(
|
||||||
faEllipsisH,
|
faEllipsisH,
|
||||||
|
@ -191,7 +192,7 @@ const ExtraButtons = {
|
||||||
isEdited () {
|
isEdited () {
|
||||||
return this.status.edited_at !== null
|
return this.status.edited_at !== null
|
||||||
},
|
},
|
||||||
editingAvailable () { return this.$store.state.instance.editingAvailable }
|
editingAvailable () { return this.$store.state.instance.editingAvailable },
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -50,7 +50,7 @@ const NavPanel = {
|
||||||
...mapState({
|
...mapState({
|
||||||
currentUser: state => state.users.currentUser,
|
currentUser: state => state.users.currentUser,
|
||||||
privateMode: state => state.instance.private,
|
privateMode: state => state.instance.private,
|
||||||
federating: state => state.instance.federating
|
federating: state => state.instance.federating,
|
||||||
}),
|
}),
|
||||||
...mapGetters(['unreadAnnouncementCount']),
|
...mapGetters(['unreadAnnouncementCount']),
|
||||||
followRequestCount () {
|
followRequestCount () {
|
||||||
|
|
|
@ -8,6 +8,7 @@ import {
|
||||||
faHome,
|
faHome,
|
||||||
faCircle
|
faCircle
|
||||||
} from '@fortawesome/free-solid-svg-icons'
|
} from '@fortawesome/free-solid-svg-icons'
|
||||||
|
import { federatedTimelineVisible, publicTimelineVisible, bubbleTimelineVisible } from '../../lib/timeline_visibility'
|
||||||
|
|
||||||
library.add(
|
library.add(
|
||||||
faUsers,
|
faUsers,
|
||||||
|
@ -24,7 +25,9 @@ const TimelineMenuContent = {
|
||||||
currentUser: state => state.users.currentUser,
|
currentUser: state => state.users.currentUser,
|
||||||
privateMode: state => state.instance.private,
|
privateMode: state => state.instance.private,
|
||||||
federating: state => state.instance.federating,
|
federating: state => state.instance.federating,
|
||||||
showBubbleTimeline: state => (state.instance.localBubbleInstances.length > 0)
|
publicTimelineVisible,
|
||||||
|
federatedTimelineVisible,
|
||||||
|
bubbleTimelineVisible,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
>{{ $t("nav.home_timeline") }}</span>
|
>{{ $t("nav.home_timeline") }}</span>
|
||||||
</router-link>
|
</router-link>
|
||||||
</li>
|
</li>
|
||||||
<li v-if="currentUser && showBubbleTimeline">
|
<li v-if="bubbleTimelineVisible">
|
||||||
<router-link
|
<router-link
|
||||||
class="menu-item"
|
class="menu-item"
|
||||||
:to="{ name: 'bubble-timeline' }"
|
:to="{ name: 'bubble-timeline' }"
|
||||||
|
@ -32,7 +32,7 @@
|
||||||
>{{ $t("nav.bubble_timeline") }}</span>
|
>{{ $t("nav.bubble_timeline") }}</span>
|
||||||
</router-link>
|
</router-link>
|
||||||
</li>
|
</li>
|
||||||
<li v-if="currentUser || !privateMode">
|
<li v-if="publicTimelineVisible">
|
||||||
<router-link
|
<router-link
|
||||||
class="menu-item"
|
class="menu-item"
|
||||||
:to="{ name: 'public-timeline' }"
|
:to="{ name: 'public-timeline' }"
|
||||||
|
@ -48,7 +48,7 @@
|
||||||
>{{ $t("nav.public_tl") }}</span>
|
>{{ $t("nav.public_tl") }}</span>
|
||||||
</router-link>
|
</router-link>
|
||||||
</li>
|
</li>
|
||||||
<li v-if="federating && (currentUser || !privateMode)">
|
<li v-if="federatedTimelineVisible">
|
||||||
<router-link
|
<router-link
|
||||||
class="menu-item"
|
class="menu-item"
|
||||||
:to="{ name: 'public-external-timeline' }"
|
:to="{ name: 'public-external-timeline' }"
|
||||||
|
@ -62,6 +62,7 @@
|
||||||
:title="$t('nav.twkn_timeline_description')"
|
:title="$t('nav.twkn_timeline_description')"
|
||||||
:aria-label="$t('nav.twkn_timeline_description')"
|
:aria-label="$t('nav.twkn_timeline_description')"
|
||||||
>{{ $t("nav.twkn") }}</span>
|
>{{ $t("nav.twkn") }}</span>
|
||||||
|
|
||||||
</router-link>
|
</router-link>
|
||||||
</li>
|
</li>
|
||||||
<li v-if="currentUser">
|
<li v-if="currentUser">
|
||||||
|
|
|
@ -8,6 +8,7 @@ import {
|
||||||
faHome
|
faHome
|
||||||
} from '@fortawesome/free-solid-svg-icons'
|
} from '@fortawesome/free-solid-svg-icons'
|
||||||
import { faCircle } from '@fortawesome/free-regular-svg-icons'
|
import { faCircle } from '@fortawesome/free-regular-svg-icons'
|
||||||
|
import { federatedTimelineVisible, publicTimelineVisible, bubbleTimelineVisible } from '../../lib/timeline_visibility'
|
||||||
library.add(
|
library.add(
|
||||||
faUsers,
|
faUsers,
|
||||||
faGlobe,
|
faGlobe,
|
||||||
|
@ -22,7 +23,10 @@ const TimelineMenuContent = {
|
||||||
...mapState({
|
...mapState({
|
||||||
currentUser: state => state.users.currentUser,
|
currentUser: state => state.users.currentUser,
|
||||||
privateMode: state => state.instance.private,
|
privateMode: state => state.instance.private,
|
||||||
federating: state => state.instance.federating
|
federating: state => state.instance.federating,
|
||||||
|
publicTimelineVisible,
|
||||||
|
federatedTimelineVisible,
|
||||||
|
bubbleTimelineVisible,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
>{{ $t("nav.home_timeline") }}</span>
|
>{{ $t("nav.home_timeline") }}</span>
|
||||||
</router-link>
|
</router-link>
|
||||||
</li>
|
</li>
|
||||||
<li v-if="currentUser">
|
<li v-if="bubbleTimelineVisible">
|
||||||
<router-link
|
<router-link
|
||||||
class="menu-item"
|
class="menu-item"
|
||||||
:to="{ name: 'bubble-timeline' }"
|
:to="{ name: 'bubble-timeline' }"
|
||||||
|
@ -32,7 +32,7 @@
|
||||||
>{{ $t("nav.bubble_timeline") }}</span>
|
>{{ $t("nav.bubble_timeline") }}</span>
|
||||||
</router-link>
|
</router-link>
|
||||||
</li>
|
</li>
|
||||||
<li v-if="currentUser || !privateMode">
|
<li v-if="publicTimelineVisible">
|
||||||
<router-link
|
<router-link
|
||||||
class="menu-item"
|
class="menu-item"
|
||||||
:to="{ name: 'public-timeline' }"
|
:to="{ name: 'public-timeline' }"
|
||||||
|
@ -48,7 +48,7 @@
|
||||||
>{{ $t("nav.public_tl") }}</span>
|
>{{ $t("nav.public_tl") }}</span>
|
||||||
</router-link>
|
</router-link>
|
||||||
</li>
|
</li>
|
||||||
<li v-if="federating && (currentUser || !privateMode)">
|
<li v-if="federatedTimelineVisible">
|
||||||
<router-link
|
<router-link
|
||||||
class="menu-item"
|
class="menu-item"
|
||||||
:to="{ name: 'public-external-timeline' }"
|
:to="{ name: 'public-external-timeline' }"
|
||||||
|
|
|
@ -4,6 +4,12 @@ import { library } from '@fortawesome/fontawesome-svg-core'
|
||||||
import {
|
import {
|
||||||
faChevronDown
|
faChevronDown
|
||||||
} from '@fortawesome/free-solid-svg-icons'
|
} from '@fortawesome/free-solid-svg-icons'
|
||||||
|
import { mapState } from 'vuex'
|
||||||
|
import {
|
||||||
|
publicTimelineVisible,
|
||||||
|
federatedTimelineVisible,
|
||||||
|
bubbleTimelineVisible,
|
||||||
|
} from '../../lib/timeline_visibility'
|
||||||
|
|
||||||
library.add(faChevronDown)
|
library.add(faChevronDown)
|
||||||
|
|
||||||
|
@ -36,12 +42,15 @@ const TimelineMenuTabs = {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
currentUser () {
|
|
||||||
return this.$store.state.users.currentUser
|
|
||||||
},
|
|
||||||
privateMode () {
|
privateMode () {
|
||||||
return this.$store.state.instance.private
|
return this.$store.state.instance.private
|
||||||
}
|
},
|
||||||
|
...mapState({
|
||||||
|
currentUser: state => state.users.currentUser,
|
||||||
|
publicTimelineVisible,
|
||||||
|
federatedTimelineVisible,
|
||||||
|
bubbleTimelineVisible,
|
||||||
|
})
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
timelineName () {
|
timelineName () {
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
<router-link
|
<router-link
|
||||||
:to="{ name: 'public-timeline' }"
|
:to="{ name: 'public-timeline' }"
|
||||||
class="nav-icon"
|
class="nav-icon"
|
||||||
|
v-if="publicTimelineVisible"
|
||||||
>
|
>
|
||||||
<FAIcon
|
<FAIcon
|
||||||
fixed-width
|
fixed-width
|
||||||
|
@ -27,7 +28,7 @@
|
||||||
/>
|
/>
|
||||||
</router-link>
|
</router-link>
|
||||||
<router-link
|
<router-link
|
||||||
v-if="currentUser"
|
v-if="bubbleTimelineVisible"
|
||||||
:to="{ name: 'bubble-timeline' }"
|
:to="{ name: 'bubble-timeline' }"
|
||||||
class="nav-icon"
|
class="nav-icon"
|
||||||
>
|
>
|
||||||
|
@ -41,6 +42,7 @@
|
||||||
<router-link
|
<router-link
|
||||||
:to="{ name: 'public-external-timeline' }"
|
:to="{ name: 'public-external-timeline' }"
|
||||||
class="nav-icon"
|
class="nav-icon"
|
||||||
|
v-if="federatedTimelineVisible"
|
||||||
>
|
>
|
||||||
<FAIcon
|
<FAIcon
|
||||||
fixed-width
|
fixed-width
|
||||||
|
|
23
src/lib/timeline_visibility.js
Normal file
23
src/lib/timeline_visibility.js
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
const timelineVisibleUnauthenticated = (state, timeline) => (
|
||||||
|
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')
|
||||||
|
);
|
|
@ -637,13 +637,14 @@ const users = {
|
||||||
|
|
||||||
// Get user mutes
|
// Get user mutes
|
||||||
store.dispatch('fetchMutes')
|
store.dispatch('fetchMutes')
|
||||||
|
|
||||||
store.dispatch('setLayoutWidth', windowWidth())
|
store.dispatch('setLayoutWidth', windowWidth())
|
||||||
store.dispatch('setLayoutHeight', windowHeight())
|
store.dispatch('setLayoutHeight', windowHeight())
|
||||||
store.dispatch('getSupportedTranslationlanguages')
|
store.dispatch('getSupportedTranslationlanguages')
|
||||||
store.dispatch('getSettingsProfile')
|
store.dispatch('getSettingsProfile')
|
||||||
store.dispatch('listSettingsProfiles')
|
store.dispatch('listSettingsProfiles')
|
||||||
store.dispatch('startFetchingConfig')
|
store.dispatch('startFetchingConfig')
|
||||||
|
store.dispatch('startFetchingAnnouncements')
|
||||||
|
store.dispatch('startFetchingReports')
|
||||||
|
|
||||||
// Fetch our friends
|
// Fetch our friends
|
||||||
store.rootState.api.backendInteractor.fetchFriends({ id: user.id })
|
store.rootState.api.backendInteractor.fetchFriends({ id: user.id })
|
||||||
|
|
Loading…
Reference in a new issue