refs #1307 Disable direct, local and public timeline when initial fetch is failed
This commit is contained in:
parent
3046a17fcd
commit
b4542d9c6d
@ -18,47 +18,37 @@ const confirm = async (account: LocalAccount, proxy: ProxyConfig | false) => {
|
||||
list: true
|
||||
}
|
||||
|
||||
try {
|
||||
await client.getHomeTimeline({ limit: 1 })
|
||||
} catch (err) {
|
||||
timelines = { ...timelines, home: false }
|
||||
}
|
||||
|
||||
try {
|
||||
await client.getNotifications({ limit: 1 })
|
||||
} catch (err) {
|
||||
const notification = async () => {
|
||||
return client.getNotifications({ limit: 1 }).catch(() => {
|
||||
timelines = { ...timelines, notification: false, mention: false }
|
||||
})
|
||||
}
|
||||
|
||||
try {
|
||||
await client.getConversationTimeline({ limit: 1 })
|
||||
} catch (err) {
|
||||
const direct = async () => {
|
||||
return client.getConversationTimeline({ limit: 1 }).catch(() => {
|
||||
timelines = { ...timelines, direct: false }
|
||||
})
|
||||
}
|
||||
|
||||
try {
|
||||
await client.getFavourites({ limit: 1 })
|
||||
} catch (err) {
|
||||
const favourite = async () => {
|
||||
return client.getFavourites({ limit: 1 }).catch(() => {
|
||||
timelines = { ...timelines, favourite: false }
|
||||
})
|
||||
}
|
||||
|
||||
try {
|
||||
await client.getLocalTimeline({ limit: 1 })
|
||||
} catch (err) {
|
||||
const local = async () => {
|
||||
return client.getLocalTimeline({ limit: 1 }).catch(() => {
|
||||
timelines = { ...timelines, local: false }
|
||||
})
|
||||
}
|
||||
|
||||
try {
|
||||
await client.getPublicTimeline({ limit: 1 })
|
||||
} catch (err) {
|
||||
const pub = async () => {
|
||||
return client.getPublicTimeline({ limit: 1 }).catch(() => {
|
||||
timelines = { ...timelines, public: false }
|
||||
})
|
||||
}
|
||||
|
||||
try {
|
||||
await client.getTagTimeline('whalebird', { limit: 1 })
|
||||
} catch (err) {
|
||||
const tag = async () => {
|
||||
return client.getTagTimeline('whalebird', { limit: 1 }).catch(() => {
|
||||
timelines = { ...timelines, tag: false }
|
||||
})
|
||||
}
|
||||
await Promise.all([notification(), direct(), favourite(), local(), pub(), tag()])
|
||||
|
||||
return timelines
|
||||
}
|
||||
|
@ -46,17 +46,22 @@
|
||||
<span>{{ $t('side_menu.home') }}</span>
|
||||
<el-badge is-dot :hidden="!unreadHomeTimeline"> </el-badge>
|
||||
</el-menu-item>
|
||||
<el-menu-item :index="`/${id()}/notifications`" role="menuitem" :title="$t('side_menu.notification')">
|
||||
<el-menu-item
|
||||
:index="`/${id()}/notifications`"
|
||||
role="menuitem"
|
||||
:title="$t('side_menu.notification')"
|
||||
v-if="enabledTimelines.notification"
|
||||
>
|
||||
<icon name="bell"></icon>
|
||||
<span>{{ $t('side_menu.notification') }}</span>
|
||||
<el-badge is-dot :hidden="!unreadNotifications"> </el-badge>
|
||||
</el-menu-item>
|
||||
<el-menu-item :index="`/${id()}/mentions`" role="menuitem" :title="$t('side_menu.mention')">
|
||||
<el-menu-item :index="`/${id()}/mentions`" role="menuitem" :title="$t('side_menu.mention')" v-if="enabledTimelines.mention">
|
||||
<icon name="at"></icon>
|
||||
<span>{{ $t('side_menu.mention') }}</span>
|
||||
<el-badge is-dot :hidden="!unreadMentions"> </el-badge>
|
||||
</el-menu-item>
|
||||
<el-menu-item :index="`/${id()}/direct-messages`" role="menuitem" :title="$t('side_menu.direct')">
|
||||
<el-menu-item :index="`/${id()}/direct-messages`" role="menuitem" :title="$t('side_menu.direct')" v-if="enabledTimelines.direct">
|
||||
<icon name="envelope"></icon>
|
||||
<span>{{ $t('side_menu.direct') }}</span>
|
||||
<el-badge is-dot :hidden="!unreadDirectMessagesTimeline"> </el-badge>
|
||||
@ -71,16 +76,16 @@
|
||||
<span>{{ $t('side_menu.follow_requests') }}</span>
|
||||
<el-badge is-dot></el-badge>
|
||||
</el-menu-item>
|
||||
<el-menu-item :index="`/${id()}/favourites`" role="menuitem" :title="$t('side_menu.favourite')">
|
||||
<el-menu-item :index="`/${id()}/favourites`" role="menuitem" :title="$t('side_menu.favourite')" v-if="enabledTimelines.favourite">
|
||||
<icon name="star"></icon>
|
||||
<span>{{ $t('side_menu.favourite') }}</span>
|
||||
</el-menu-item>
|
||||
<el-menu-item :index="`/${id()}/local`" role="menuitem" :title="$t('side_menu.local')">
|
||||
<el-menu-item :index="`/${id()}/local`" role="menuitem" :title="$t('side_menu.local')" v-if="enabledTimelines.local">
|
||||
<icon name="users"></icon>
|
||||
<span>{{ $t('side_menu.local') }}</span>
|
||||
<el-badge is-dot :hidden="!unreadLocalTimeline"> </el-badge>
|
||||
</el-menu-item>
|
||||
<el-menu-item :index="`/${id()}/public`" role="menuitem" :title="$t('side_menu.public')">
|
||||
<el-menu-item :index="`/${id()}/public`" role="menuitem" :title="$t('side_menu.public')" v-if="enabledTimelines.public">
|
||||
<icon name="globe"></icon>
|
||||
<span>{{ $t('side_menu.public') }}</span>
|
||||
<el-badge is-dot :hidden="!unreadPublicTimeline"> </el-badge>
|
||||
@ -93,7 +98,7 @@
|
||||
<icon name="hashtag"></icon>
|
||||
<span>{{ $t('side_menu.hashtag') }}</span>
|
||||
</el-menu-item>
|
||||
<template v-for="tag in tags">
|
||||
<template v-for="tag in tags" v-if="enabledTimelines.tag">
|
||||
<el-menu-item
|
||||
:index="`/${id()}/hashtag/${tag.tagName}`"
|
||||
:class="collapse ? '' : 'sub-menu'"
|
||||
@ -109,7 +114,7 @@
|
||||
<icon name="list-ul"></icon>
|
||||
<span>{{ $t('side_menu.lists') }}</span>
|
||||
</el-menu-item>
|
||||
<template v-for="list in lists">
|
||||
<template v-for="list in lists" v-if="enabledTimelines.list">
|
||||
<el-menu-item
|
||||
:index="`/${id()}/lists/${list.id}`"
|
||||
:class="collapse ? '' : 'sub-menu'"
|
||||
@ -147,7 +152,8 @@ export default {
|
||||
unreadFollowRequests: state => state.unreadFollowRequests,
|
||||
lists: state => state.lists,
|
||||
tags: state => state.tags,
|
||||
collapse: state => state.collapse
|
||||
collapse: state => state.collapse,
|
||||
enabledTimelines: state => state.enabledTimelines
|
||||
}),
|
||||
...mapState({
|
||||
account: state => state.TimelineSpace.account,
|
||||
|
@ -98,7 +98,7 @@ const mutations: MutationTree<DirectMessagesState> = {
|
||||
}
|
||||
|
||||
const actions: ActionTree<DirectMessagesState, RootState> = {
|
||||
fetchTimeline: async ({ commit, rootState }): Promise<Array<Entity.Status>> => {
|
||||
fetchTimeline: async ({ dispatch, commit, rootState }): Promise<Array<Entity.Status>> => {
|
||||
const client = generator(
|
||||
rootState.TimelineSpace.sns,
|
||||
rootState.TimelineSpace.account.baseURL,
|
||||
@ -106,10 +106,16 @@ const actions: ActionTree<DirectMessagesState, RootState> = {
|
||||
rootState.App.userAgent,
|
||||
rootState.App.proxyConfiguration
|
||||
)
|
||||
try {
|
||||
const res = await client.getConversationTimeline({ limit: 40 })
|
||||
const statuses: Array<Entity.Status> = res.data.map(con => con.last_status!)
|
||||
commit(MUTATION_TYPES.UPDATE_TIMELINE, statuses)
|
||||
return statuses
|
||||
} catch (err) {
|
||||
// Disable direct timeline
|
||||
dispatch('TimelineSpace/SideMenu/disableDirect', {}, { root: true })
|
||||
return []
|
||||
}
|
||||
},
|
||||
lazyFetchTimeline: ({ state, commit, rootState }, lastStatus: Entity.Status): Promise<Array<Entity.Status> | null> => {
|
||||
if (state.lazyLoading) {
|
||||
|
@ -97,7 +97,7 @@ const mutations: MutationTree<LocalState> = {
|
||||
}
|
||||
|
||||
const actions: ActionTree<LocalState, RootState> = {
|
||||
fetchLocalTimeline: async ({ commit, rootState }): Promise<Array<Entity.Status>> => {
|
||||
fetchLocalTimeline: async ({ dispatch, commit, rootState }): Promise<Array<Entity.Status>> => {
|
||||
const client = generator(
|
||||
rootState.TimelineSpace.sns,
|
||||
rootState.TimelineSpace.account.baseURL,
|
||||
@ -105,9 +105,16 @@ const actions: ActionTree<LocalState, RootState> = {
|
||||
rootState.App.userAgent,
|
||||
rootState.App.proxyConfiguration
|
||||
)
|
||||
|
||||
try {
|
||||
const res = await client.getLocalTimeline({ limit: 40 })
|
||||
commit(MUTATION_TYPES.UPDATE_TIMELINE, res.data)
|
||||
return res.data
|
||||
} catch (err) {
|
||||
// Disable local timeline
|
||||
dispatch('TimelineSpace/SideMenu/disableLocal', {}, { root: true })
|
||||
return []
|
||||
}
|
||||
},
|
||||
lazyFetchTimeline: async ({ state, commit, rootState }, lastStatus: Entity.Status): Promise<Array<Entity.Status> | null> => {
|
||||
if (state.lazyLoading) {
|
||||
|
@ -97,7 +97,7 @@ const mutations: MutationTree<PublicState> = {
|
||||
}
|
||||
|
||||
const actions: ActionTree<PublicState, RootState> = {
|
||||
fetchPublicTimeline: async ({ commit, rootState }): Promise<Array<Entity.Status>> => {
|
||||
fetchPublicTimeline: async ({ dispatch, commit, rootState }): Promise<Array<Entity.Status>> => {
|
||||
const client = generator(
|
||||
rootState.TimelineSpace.sns,
|
||||
rootState.TimelineSpace.account.baseURL,
|
||||
@ -105,9 +105,15 @@ const actions: ActionTree<PublicState, RootState> = {
|
||||
rootState.App.userAgent,
|
||||
rootState.App.proxyConfiguration
|
||||
)
|
||||
try {
|
||||
const res = await client.getPublicTimeline({ limit: 40 })
|
||||
commit(MUTATION_TYPES.UPDATE_TIMELINE, res.data)
|
||||
return res.data
|
||||
} catch (err) {
|
||||
// Disable public timeline
|
||||
dispatch('TimelineSpace/SideMenu/disablePublic', {}, { root: true })
|
||||
return []
|
||||
}
|
||||
},
|
||||
lazyFetchTimeline: ({ state, commit, rootState }, lastStatus: Entity.Status): Promise<Array<Entity.Status> | null> => {
|
||||
if (state.lazyLoading) {
|
||||
|
@ -128,6 +128,21 @@ const actions: ActionTree<SideMenuState, RootState> = {
|
||||
const timelines: EnabledTimelines = await win.ipcRenderer.invoke('confirm-timelines', account)
|
||||
commit(MUTATION_TYPES.UPDATE_ENABLED_TIMELINES, timelines)
|
||||
},
|
||||
disableLocal: ({ commit, state }) => {
|
||||
let timelines = state.enabledTimelines
|
||||
timelines = { ...timelines, local: false }
|
||||
commit(MUTATION_TYPES.UPDATE_ENABLED_TIMELINES, timelines)
|
||||
},
|
||||
disablePublic: ({ commit, state }) => {
|
||||
let timelines = state.enabledTimelines
|
||||
timelines = { ...timelines, public: false }
|
||||
commit(MUTATION_TYPES.UPDATE_ENABLED_TIMELINES, timelines)
|
||||
},
|
||||
disableDirect: ({ commit, state }) => {
|
||||
let timelines = state.enabledTimelines
|
||||
timelines = { ...timelines, direct: false }
|
||||
commit(MUTATION_TYPES.UPDATE_ENABLED_TIMELINES, timelines)
|
||||
},
|
||||
clearUnread: ({ commit }) => {
|
||||
commit(MUTATION_TYPES.CHANGE_UNREAD_HOME_TIMELINE, false)
|
||||
commit(MUTATION_TYPES.CHANGE_UNREAD_NOTIFICATIONS, false)
|
||||
|
Loading…
x
Reference in New Issue
Block a user