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…
Add table
Add a link
Reference in a new issue