forked from AkkomaGang/akkoma-fe
Revert "some initial work to make it possible to use "unregistered" timelines, i.e. not"
and some stuff to make favorites still work
This reverts commit 039a407400
.
This commit is contained in:
parent
0f8baff5a3
commit
cab87744c8
6 changed files with 38 additions and 43 deletions
|
@ -7,6 +7,7 @@ import { throttle } from 'lodash'
|
||||||
const Timeline = {
|
const Timeline = {
|
||||||
props: [
|
props: [
|
||||||
'timeline',
|
'timeline',
|
||||||
|
'timelineName',
|
||||||
'title',
|
'title',
|
||||||
'userId',
|
'userId',
|
||||||
'tag',
|
'tag',
|
||||||
|
@ -54,7 +55,7 @@ const Timeline = {
|
||||||
timelineFetcher.fetchAndUpdate({
|
timelineFetcher.fetchAndUpdate({
|
||||||
store,
|
store,
|
||||||
credentials,
|
credentials,
|
||||||
timeline: this.timeline,
|
timeline: this.timelineName,
|
||||||
showImmediately,
|
showImmediately,
|
||||||
userId: this.userId,
|
userId: this.userId,
|
||||||
tag: this.tag
|
tag: this.tag
|
||||||
|
@ -69,32 +70,32 @@ const Timeline = {
|
||||||
destroyed () {
|
destroyed () {
|
||||||
window.removeEventListener('scroll', this.scrollLoad)
|
window.removeEventListener('scroll', this.scrollLoad)
|
||||||
if (typeof document.hidden !== 'undefined') document.removeEventListener('visibilitychange', this.handleVisibilityChange, false)
|
if (typeof document.hidden !== 'undefined') document.removeEventListener('visibilitychange', this.handleVisibilityChange, false)
|
||||||
this.$store.commit('setLoading', { timeline: this.timeline, value: false })
|
this.$store.commit('setLoading', { timeline: this.timelineName, value: false })
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
showNewStatuses () {
|
showNewStatuses () {
|
||||||
if (this.timeline.flushMarker !== 0) {
|
if (this.timeline.flushMarker !== 0) {
|
||||||
this.$store.commit('clearTimeline', { timeline: this.timeline })
|
this.$store.commit('clearTimeline', { timeline: this.timelineName })
|
||||||
this.$store.commit('queueFlush', { timeline: this.timeline, id: 0 })
|
this.$store.commit('queueFlush', { timeline: this.timelineName, id: 0 })
|
||||||
this.fetchOlderStatuses()
|
this.fetchOlderStatuses()
|
||||||
} else {
|
} else {
|
||||||
this.$store.commit('showNewStatuses', { timeline: this.timeline })
|
this.$store.commit('showNewStatuses', { timeline: this.timelineName })
|
||||||
this.paused = false
|
this.paused = false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
fetchOlderStatuses: throttle(function () {
|
fetchOlderStatuses: throttle(function () {
|
||||||
const store = this.$store
|
const store = this.$store
|
||||||
const credentials = store.state.users.currentUser.credentials
|
const credentials = store.state.users.currentUser.credentials
|
||||||
store.commit('setLoading', { timeline: this.timeline, value: true })
|
store.commit('setLoading', { timeline: this.timelineName, value: true })
|
||||||
timelineFetcher.fetchAndUpdate({
|
timelineFetcher.fetchAndUpdate({
|
||||||
store,
|
store,
|
||||||
credentials,
|
credentials,
|
||||||
timeline: this.timeline,
|
timeline: this.timelineName,
|
||||||
older: true,
|
older: true,
|
||||||
showImmediately: true,
|
showImmediately: true,
|
||||||
userId: this.userId,
|
userId: this.userId,
|
||||||
tag: this.tag
|
tag: this.tag
|
||||||
}).then(() => store.commit('setLoading', { timeline: this.timeline, value: false }))
|
}).then(() => store.commit('setLoading', { timeline: this.timelineName, value: false }))
|
||||||
}, 1000, this),
|
}, 1000, this),
|
||||||
scrollLoad (e) {
|
scrollLoad (e) {
|
||||||
const bodyBRect = document.body.getBoundingClientRect()
|
const bodyBRect = document.body.getBoundingClientRect()
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
import UserCardContent from '../user_card_content/user_card_content.vue'
|
import UserCardContent from '../user_card_content/user_card_content.vue'
|
||||||
import UserCard from '../user_card/user_card.vue'
|
import UserCard from '../user_card/user_card.vue'
|
||||||
import Timeline from '../timeline/timeline.vue'
|
import Timeline from '../timeline/timeline.vue'
|
||||||
import { emptyTl } from '../../modules/statuses.js'
|
|
||||||
|
|
||||||
const UserProfile = {
|
const UserProfile = {
|
||||||
created () {
|
created () {
|
||||||
|
@ -14,15 +13,13 @@ const UserProfile = {
|
||||||
destroyed () {
|
destroyed () {
|
||||||
this.$store.dispatch('stopFetching', 'user')
|
this.$store.dispatch('stopFetching', 'user')
|
||||||
},
|
},
|
||||||
data () {
|
|
||||||
return {
|
|
||||||
favorites: emptyTl({ type: 'favorites', userId: this.userId })
|
|
||||||
}
|
|
||||||
},
|
|
||||||
computed: {
|
computed: {
|
||||||
timeline () {
|
timeline () {
|
||||||
return this.$store.state.statuses.timelines.user
|
return this.$store.state.statuses.timelines.user
|
||||||
},
|
},
|
||||||
|
favorites () {
|
||||||
|
return this.$store.state.statuses.timelines.favorites
|
||||||
|
},
|
||||||
userId () {
|
userId () {
|
||||||
return this.$route.params.id || this.user.id
|
return this.$route.params.id || this.user.id
|
||||||
},
|
},
|
||||||
|
|
|
@ -5,7 +5,7 @@ import { Socket } from 'phoenix'
|
||||||
const api = {
|
const api = {
|
||||||
state: {
|
state: {
|
||||||
backendInteractor: backendInteractorService(),
|
backendInteractor: backendInteractorService(),
|
||||||
fetchers: new Map(),
|
fetchers: {},
|
||||||
socket: null,
|
socket: null,
|
||||||
chatDisabled: false,
|
chatDisabled: false,
|
||||||
followRequests: []
|
followRequests: []
|
||||||
|
@ -15,10 +15,10 @@ const api = {
|
||||||
state.backendInteractor = backendInteractor
|
state.backendInteractor = backendInteractor
|
||||||
},
|
},
|
||||||
addFetcher (state, {timeline, fetcher}) {
|
addFetcher (state, {timeline, fetcher}) {
|
||||||
state.fetchers.set(timeline, fetcher)
|
state.fetchers[timeline] = fetcher
|
||||||
},
|
},
|
||||||
removeFetcher (state, {timeline}) {
|
removeFetcher (state, {timeline}) {
|
||||||
delete state.fetchers.delete(timeline)
|
delete state.fetchers[timeline]
|
||||||
},
|
},
|
||||||
setSocket (state, socket) {
|
setSocket (state, socket) {
|
||||||
state.socket = socket
|
state.socket = socket
|
||||||
|
@ -41,13 +41,13 @@ const api = {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Don't start fetching if we already are.
|
// Don't start fetching if we already are.
|
||||||
if (!store.state.fetchers.has(timeline)) {
|
if (!store.state.fetchers[timeline]) {
|
||||||
const fetcher = store.state.backendInteractor.startFetching({timeline, store, userId})
|
const fetcher = store.state.backendInteractor.startFetching({timeline, store, userId})
|
||||||
store.commit('addFetcher', {timeline, fetcher})
|
store.commit('addFetcher', {timeline, fetcher})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
stopFetching (store, timeline) {
|
stopFetching (store, timeline) {
|
||||||
const fetcher = store.state.fetchers.get(timeline)
|
const fetcher = store.state.fetchers[timeline]
|
||||||
window.clearInterval(fetcher)
|
window.clearInterval(fetcher)
|
||||||
store.commit('removeFetcher', {timeline})
|
store.commit('removeFetcher', {timeline})
|
||||||
},
|
},
|
||||||
|
|
|
@ -2,7 +2,7 @@ import { remove, slice, each, find, maxBy, minBy, merge, last, isArray } from 'l
|
||||||
import apiService from '../services/api/api.service.js'
|
import apiService from '../services/api/api.service.js'
|
||||||
// import parse from '../services/status_parser/status_parser.js'
|
// import parse from '../services/status_parser/status_parser.js'
|
||||||
|
|
||||||
export const emptyTl = (tl, userId = 0) => (Object.assign(tl, {
|
const emptyTl = () => ({
|
||||||
statuses: [],
|
statuses: [],
|
||||||
statusesObject: {},
|
statusesObject: {},
|
||||||
faves: [],
|
faves: [],
|
||||||
|
@ -14,9 +14,9 @@ export const emptyTl = (tl, userId = 0) => (Object.assign(tl, {
|
||||||
loading: false,
|
loading: false,
|
||||||
followers: [],
|
followers: [],
|
||||||
friends: [],
|
friends: [],
|
||||||
flushMarker: 0,
|
userId: 0,
|
||||||
userId
|
flushMarker: 0
|
||||||
}))
|
})
|
||||||
|
|
||||||
export const defaultState = {
|
export const defaultState = {
|
||||||
allStatuses: [],
|
allStatuses: [],
|
||||||
|
@ -33,13 +33,14 @@ export const defaultState = {
|
||||||
favorites: new Set(),
|
favorites: new Set(),
|
||||||
error: false,
|
error: false,
|
||||||
timelines: {
|
timelines: {
|
||||||
mentions: emptyTl({ type: 'mentions' }),
|
mentions: emptyTl(),
|
||||||
public: emptyTl({ type: 'public' }),
|
public: emptyTl(),
|
||||||
user: emptyTl({ type: 'user' }), // TODO: switch to unregistered
|
user: emptyTl(),
|
||||||
publicAndExternal: emptyTl({ type: 'publicAndExternal' }),
|
favorites: emptyTl(),
|
||||||
friends: emptyTl({ type: 'friends' }),
|
publicAndExternal: emptyTl(),
|
||||||
tag: emptyTl({ type: 'tag' }),
|
friends: emptyTl(),
|
||||||
dms: emptyTl({ type: 'dms' })
|
tag: emptyTl(),
|
||||||
|
dms: emptyTl()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -100,7 +101,7 @@ const addNewStatuses = (state, { statuses, showImmediately = false, timeline, us
|
||||||
|
|
||||||
const allStatuses = state.allStatuses
|
const allStatuses = state.allStatuses
|
||||||
const allStatusesObject = state.allStatusesObject
|
const allStatusesObject = state.allStatusesObject
|
||||||
const timelineObject = typeof timeline === 'object' ? timeline : state.timelines[timeline]
|
const timelineObject = state.timelines[timeline]
|
||||||
|
|
||||||
const maxNew = statuses.length > 0 ? maxBy(statuses, 'id').id : 0
|
const maxNew = statuses.length > 0 ? maxBy(statuses, 'id').id : 0
|
||||||
const older = timeline && maxNew < timelineObject.maxId
|
const older = timeline && maxNew < timelineObject.maxId
|
||||||
|
@ -297,7 +298,7 @@ export const mutations = {
|
||||||
addNewStatuses,
|
addNewStatuses,
|
||||||
addNewNotifications,
|
addNewNotifications,
|
||||||
showNewStatuses (state, { timeline }) {
|
showNewStatuses (state, { timeline }) {
|
||||||
const oldTimeline = (typeof timeline === 'object' ? timeline : state.timelines[timeline])
|
const oldTimeline = (state.timelines[timeline])
|
||||||
|
|
||||||
oldTimeline.newStatusCount = 0
|
oldTimeline.newStatusCount = 0
|
||||||
oldTimeline.visibleStatuses = slice(oldTimeline.statuses, 0, 50)
|
oldTimeline.visibleStatuses = slice(oldTimeline.statuses, 0, 50)
|
||||||
|
@ -306,8 +307,7 @@ export const mutations = {
|
||||||
each(oldTimeline.visibleStatuses, (status) => { oldTimeline.visibleStatusesObject[status.id] = status })
|
each(oldTimeline.visibleStatuses, (status) => { oldTimeline.visibleStatusesObject[status.id] = status })
|
||||||
},
|
},
|
||||||
clearTimeline (state, { timeline }) {
|
clearTimeline (state, { timeline }) {
|
||||||
const timelineObject = typeof timeline === 'object' ? timeline : state.timelines[timeline]
|
state.timelines[timeline] = emptyTl()
|
||||||
emptyTl(timelineObject, timeline.userId)
|
|
||||||
},
|
},
|
||||||
setFavorited (state, { status, value }) {
|
setFavorited (state, { status, value }) {
|
||||||
const newStatus = state.allStatusesObject[status.id]
|
const newStatus = state.allStatusesObject[status.id]
|
||||||
|
@ -327,8 +327,7 @@ export const mutations = {
|
||||||
newStatus.deleted = true
|
newStatus.deleted = true
|
||||||
},
|
},
|
||||||
setLoading (state, { timeline, value }) {
|
setLoading (state, { timeline, value }) {
|
||||||
const timelineObject = typeof timeline === 'object' ? timeline : state.timelines[timeline]
|
state.timelines[timeline].loading = value
|
||||||
timelineObject.loading = value
|
|
||||||
},
|
},
|
||||||
setNsfw (state, { id, nsfw }) {
|
setNsfw (state, { id, nsfw }) {
|
||||||
const newStatus = state.allStatusesObject[id]
|
const newStatus = state.allStatusesObject[id]
|
||||||
|
@ -349,8 +348,7 @@ export const mutations = {
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
queueFlush (state, { timeline, id }) {
|
queueFlush (state, { timeline, id }) {
|
||||||
const timelineObject = typeof timeline === 'object' ? timeline : state.timelines[timeline]
|
state.timelines[timeline].flushMarker = id
|
||||||
timelineObject.flushMarker = id
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -327,11 +327,10 @@ const fetchTimeline = ({timeline, credentials, since = false, until = false, use
|
||||||
favorites: MASTODON_USER_FAVORITES_TIMELINE_URL,
|
favorites: MASTODON_USER_FAVORITES_TIMELINE_URL,
|
||||||
tag: TAG_TIMELINE_URL
|
tag: TAG_TIMELINE_URL
|
||||||
}
|
}
|
||||||
const type = timeline.type || timeline
|
const isNotifications = timeline === 'notifications'
|
||||||
const isNotifications = type === 'notifications'
|
|
||||||
const params = []
|
const params = []
|
||||||
|
|
||||||
let url = timelineUrls[type]
|
let url = timelineUrls[timeline]
|
||||||
|
|
||||||
if (since) {
|
if (since) {
|
||||||
params.push(['since_id', since])
|
params.push(['since_id', since])
|
||||||
|
|
|
@ -3,7 +3,7 @@ import { camelCase } from 'lodash'
|
||||||
import apiService from '../api/api.service.js'
|
import apiService from '../api/api.service.js'
|
||||||
|
|
||||||
const update = ({store, statuses, timeline, showImmediately, userId}) => {
|
const update = ({store, statuses, timeline, showImmediately, userId}) => {
|
||||||
const ccTimeline = typeof timeline === 'object' ? timeline : camelCase(timeline)
|
const ccTimeline = camelCase(timeline)
|
||||||
|
|
||||||
store.dispatch('setError', { value: false })
|
store.dispatch('setError', { value: false })
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ const update = ({store, statuses, timeline, showImmediately, userId}) => {
|
||||||
const fetchAndUpdate = ({store, credentials, timeline = 'friends', older = false, showImmediately = false, userId = false, tag = false, until}) => {
|
const fetchAndUpdate = ({store, credentials, timeline = 'friends', older = false, showImmediately = false, userId = false, tag = false, until}) => {
|
||||||
const args = { timeline, credentials }
|
const args = { timeline, credentials }
|
||||||
const rootState = store.rootState || store.state
|
const rootState = store.rootState || store.state
|
||||||
const timelineData = typeof timeline === 'object' ? timeline : rootState.statuses.timelines[camelCase(timeline)]
|
const timelineData = rootState.statuses.timelines[camelCase(timeline)]
|
||||||
|
|
||||||
if (older) {
|
if (older) {
|
||||||
args['until'] = until || timelineData.minVisibleId
|
args['until'] = until || timelineData.minVisibleId
|
||||||
|
|
Loading…
Reference in a new issue