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:
Henry Jameson 2019-01-17 21:46:03 +03:00
parent 0f8baff5a3
commit cab87744c8
6 changed files with 38 additions and 43 deletions

View file

@ -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()

View file

@ -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
},

View file

@ -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})
},

View file

@ -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
}
}

View file

@ -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])

View file

@ -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