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 = {
|
||||
props: [
|
||||
'timeline',
|
||||
'timelineName',
|
||||
'title',
|
||||
'userId',
|
||||
'tag',
|
||||
|
|
@ -54,7 +55,7 @@ const Timeline = {
|
|||
timelineFetcher.fetchAndUpdate({
|
||||
store,
|
||||
credentials,
|
||||
timeline: this.timeline,
|
||||
timeline: this.timelineName,
|
||||
showImmediately,
|
||||
userId: this.userId,
|
||||
tag: this.tag
|
||||
|
|
@ -69,32 +70,32 @@ const Timeline = {
|
|||
destroyed () {
|
||||
window.removeEventListener('scroll', this.scrollLoad)
|
||||
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: {
|
||||
showNewStatuses () {
|
||||
if (this.timeline.flushMarker !== 0) {
|
||||
this.$store.commit('clearTimeline', { timeline: this.timeline })
|
||||
this.$store.commit('queueFlush', { timeline: this.timeline, id: 0 })
|
||||
this.$store.commit('clearTimeline', { timeline: this.timelineName })
|
||||
this.$store.commit('queueFlush', { timeline: this.timelineName, id: 0 })
|
||||
this.fetchOlderStatuses()
|
||||
} else {
|
||||
this.$store.commit('showNewStatuses', { timeline: this.timeline })
|
||||
this.$store.commit('showNewStatuses', { timeline: this.timelineName })
|
||||
this.paused = false
|
||||
}
|
||||
},
|
||||
fetchOlderStatuses: throttle(function () {
|
||||
const store = this.$store
|
||||
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({
|
||||
store,
|
||||
credentials,
|
||||
timeline: this.timeline,
|
||||
timeline: this.timelineName,
|
||||
older: true,
|
||||
showImmediately: true,
|
||||
userId: this.userId,
|
||||
tag: this.tag
|
||||
}).then(() => store.commit('setLoading', { timeline: this.timeline, value: false }))
|
||||
}).then(() => store.commit('setLoading', { timeline: this.timelineName, value: false }))
|
||||
}, 1000, this),
|
||||
scrollLoad (e) {
|
||||
const bodyBRect = document.body.getBoundingClientRect()
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
import UserCardContent from '../user_card_content/user_card_content.vue'
|
||||
import UserCard from '../user_card/user_card.vue'
|
||||
import Timeline from '../timeline/timeline.vue'
|
||||
import { emptyTl } from '../../modules/statuses.js'
|
||||
|
||||
const UserProfile = {
|
||||
created () {
|
||||
|
|
@ -14,15 +13,13 @@ const UserProfile = {
|
|||
destroyed () {
|
||||
this.$store.dispatch('stopFetching', 'user')
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
favorites: emptyTl({ type: 'favorites', userId: this.userId })
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
timeline () {
|
||||
return this.$store.state.statuses.timelines.user
|
||||
},
|
||||
favorites () {
|
||||
return this.$store.state.statuses.timelines.favorites
|
||||
},
|
||||
userId () {
|
||||
return this.$route.params.id || this.user.id
|
||||
},
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import { Socket } from 'phoenix'
|
|||
const api = {
|
||||
state: {
|
||||
backendInteractor: backendInteractorService(),
|
||||
fetchers: new Map(),
|
||||
fetchers: {},
|
||||
socket: null,
|
||||
chatDisabled: false,
|
||||
followRequests: []
|
||||
|
|
@ -15,10 +15,10 @@ const api = {
|
|||
state.backendInteractor = backendInteractor
|
||||
},
|
||||
addFetcher (state, {timeline, fetcher}) {
|
||||
state.fetchers.set(timeline, fetcher)
|
||||
state.fetchers[timeline] = fetcher
|
||||
},
|
||||
removeFetcher (state, {timeline}) {
|
||||
delete state.fetchers.delete(timeline)
|
||||
delete state.fetchers[timeline]
|
||||
},
|
||||
setSocket (state, socket) {
|
||||
state.socket = socket
|
||||
|
|
@ -41,13 +41,13 @@ const api = {
|
|||
}
|
||||
|
||||
// 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})
|
||||
store.commit('addFetcher', {timeline, fetcher})
|
||||
}
|
||||
},
|
||||
stopFetching (store, timeline) {
|
||||
const fetcher = store.state.fetchers.get(timeline)
|
||||
const fetcher = store.state.fetchers[timeline]
|
||||
window.clearInterval(fetcher)
|
||||
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 parse from '../services/status_parser/status_parser.js'
|
||||
|
||||
export const emptyTl = (tl, userId = 0) => (Object.assign(tl, {
|
||||
const emptyTl = () => ({
|
||||
statuses: [],
|
||||
statusesObject: {},
|
||||
faves: [],
|
||||
|
|
@ -14,9 +14,9 @@ export const emptyTl = (tl, userId = 0) => (Object.assign(tl, {
|
|||
loading: false,
|
||||
followers: [],
|
||||
friends: [],
|
||||
flushMarker: 0,
|
||||
userId
|
||||
}))
|
||||
userId: 0,
|
||||
flushMarker: 0
|
||||
})
|
||||
|
||||
export const defaultState = {
|
||||
allStatuses: [],
|
||||
|
|
@ -33,13 +33,14 @@ export const defaultState = {
|
|||
favorites: new Set(),
|
||||
error: false,
|
||||
timelines: {
|
||||
mentions: emptyTl({ type: 'mentions' }),
|
||||
public: emptyTl({ type: 'public' }),
|
||||
user: emptyTl({ type: 'user' }), // TODO: switch to unregistered
|
||||
publicAndExternal: emptyTl({ type: 'publicAndExternal' }),
|
||||
friends: emptyTl({ type: 'friends' }),
|
||||
tag: emptyTl({ type: 'tag' }),
|
||||
dms: emptyTl({ type: 'dms' })
|
||||
mentions: emptyTl(),
|
||||
public: emptyTl(),
|
||||
user: emptyTl(),
|
||||
favorites: emptyTl(),
|
||||
publicAndExternal: emptyTl(),
|
||||
friends: emptyTl(),
|
||||
tag: emptyTl(),
|
||||
dms: emptyTl()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -100,7 +101,7 @@ const addNewStatuses = (state, { statuses, showImmediately = false, timeline, us
|
|||
|
||||
const allStatuses = state.allStatuses
|
||||
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 older = timeline && maxNew < timelineObject.maxId
|
||||
|
|
@ -297,7 +298,7 @@ export const mutations = {
|
|||
addNewStatuses,
|
||||
addNewNotifications,
|
||||
showNewStatuses (state, { timeline }) {
|
||||
const oldTimeline = (typeof timeline === 'object' ? timeline : state.timelines[timeline])
|
||||
const oldTimeline = (state.timelines[timeline])
|
||||
|
||||
oldTimeline.newStatusCount = 0
|
||||
oldTimeline.visibleStatuses = slice(oldTimeline.statuses, 0, 50)
|
||||
|
|
@ -306,8 +307,7 @@ export const mutations = {
|
|||
each(oldTimeline.visibleStatuses, (status) => { oldTimeline.visibleStatusesObject[status.id] = status })
|
||||
},
|
||||
clearTimeline (state, { timeline }) {
|
||||
const timelineObject = typeof timeline === 'object' ? timeline : state.timelines[timeline]
|
||||
emptyTl(timelineObject, timeline.userId)
|
||||
state.timelines[timeline] = emptyTl()
|
||||
},
|
||||
setFavorited (state, { status, value }) {
|
||||
const newStatus = state.allStatusesObject[status.id]
|
||||
|
|
@ -327,8 +327,7 @@ export const mutations = {
|
|||
newStatus.deleted = true
|
||||
},
|
||||
setLoading (state, { timeline, value }) {
|
||||
const timelineObject = typeof timeline === 'object' ? timeline : state.timelines[timeline]
|
||||
timelineObject.loading = value
|
||||
state.timelines[timeline].loading = value
|
||||
},
|
||||
setNsfw (state, { id, nsfw }) {
|
||||
const newStatus = state.allStatusesObject[id]
|
||||
|
|
@ -349,8 +348,7 @@ export const mutations = {
|
|||
})
|
||||
},
|
||||
queueFlush (state, { timeline, id }) {
|
||||
const timelineObject = typeof timeline === 'object' ? timeline : state.timelines[timeline]
|
||||
timelineObject.flushMarker = id
|
||||
state.timelines[timeline].flushMarker = id
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -327,11 +327,10 @@ const fetchTimeline = ({timeline, credentials, since = false, until = false, use
|
|||
favorites: MASTODON_USER_FAVORITES_TIMELINE_URL,
|
||||
tag: TAG_TIMELINE_URL
|
||||
}
|
||||
const type = timeline.type || timeline
|
||||
const isNotifications = type === 'notifications'
|
||||
const isNotifications = timeline === 'notifications'
|
||||
const params = []
|
||||
|
||||
let url = timelineUrls[type]
|
||||
let url = timelineUrls[timeline]
|
||||
|
||||
if (since) {
|
||||
params.push(['since_id', since])
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import { camelCase } from 'lodash'
|
|||
import apiService from '../api/api.service.js'
|
||||
|
||||
const update = ({store, statuses, timeline, showImmediately, userId}) => {
|
||||
const ccTimeline = typeof timeline === 'object' ? timeline : camelCase(timeline)
|
||||
const ccTimeline = camelCase(timeline)
|
||||
|
||||
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 args = { timeline, credentials }
|
||||
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) {
|
||||
args['until'] = until || timelineData.minVisibleId
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue