mirror of
https://github.com/h3poteto/whalebird-desktop
synced 2025-01-29 16:49:24 +01:00
[refactor] Disable reload in some timelines
This commit is contained in:
parent
6ed9206bb4
commit
3462aacafb
@ -1,228 +0,0 @@
|
|||||||
import { Entity } from 'megalodon'
|
|
||||||
import DirectMessages, { DirectMessagesState, MUTATION_TYPES } from '@/store/TimelineSpace/Contents/DirectMessages'
|
|
||||||
|
|
||||||
const account: Entity.Account = {
|
|
||||||
id: '1',
|
|
||||||
username: 'h3poteto',
|
|
||||||
acct: 'h3poteto@pleroma.io',
|
|
||||||
display_name: 'h3poteto',
|
|
||||||
locked: false,
|
|
||||||
created_at: '2019-03-26T21:30:32',
|
|
||||||
followers_count: 10,
|
|
||||||
following_count: 10,
|
|
||||||
statuses_count: 100,
|
|
||||||
note: 'engineer',
|
|
||||||
url: 'https://pleroma.io',
|
|
||||||
avatar: '',
|
|
||||||
avatar_static: '',
|
|
||||||
header: '',
|
|
||||||
header_static: '',
|
|
||||||
emojis: [],
|
|
||||||
moved: null,
|
|
||||||
fields: null,
|
|
||||||
bot: false
|
|
||||||
}
|
|
||||||
const status1: Entity.Status = {
|
|
||||||
id: '1',
|
|
||||||
uri: 'http://example.com',
|
|
||||||
url: 'http://example.com',
|
|
||||||
account: account,
|
|
||||||
in_reply_to_id: null,
|
|
||||||
in_reply_to_account_id: null,
|
|
||||||
reblog: null,
|
|
||||||
content: 'hoge',
|
|
||||||
plain_content: 'hoge',
|
|
||||||
created_at: '2019-03-26T21:40:32',
|
|
||||||
emojis: [],
|
|
||||||
replies_count: 0,
|
|
||||||
reblogs_count: 0,
|
|
||||||
favourites_count: 0,
|
|
||||||
reblogged: null,
|
|
||||||
favourited: null,
|
|
||||||
muted: null,
|
|
||||||
sensitive: false,
|
|
||||||
spoiler_text: '',
|
|
||||||
visibility: 'public',
|
|
||||||
media_attachments: [],
|
|
||||||
mentions: [],
|
|
||||||
tags: [],
|
|
||||||
card: null,
|
|
||||||
poll: null,
|
|
||||||
application: {
|
|
||||||
name: 'Web'
|
|
||||||
} as Entity.Application,
|
|
||||||
language: null,
|
|
||||||
pinned: null,
|
|
||||||
emoji_reactions: [],
|
|
||||||
bookmarked: false,
|
|
||||||
quote: false
|
|
||||||
}
|
|
||||||
const status2: Entity.Status = {
|
|
||||||
id: '2',
|
|
||||||
uri: 'http://example.com',
|
|
||||||
url: 'http://example.com',
|
|
||||||
account: account,
|
|
||||||
in_reply_to_id: null,
|
|
||||||
in_reply_to_account_id: null,
|
|
||||||
reblog: null,
|
|
||||||
content: 'fuga',
|
|
||||||
plain_content: 'fuga',
|
|
||||||
created_at: '2019-03-26T21:40:32',
|
|
||||||
emojis: [],
|
|
||||||
replies_count: 0,
|
|
||||||
reblogs_count: 0,
|
|
||||||
favourites_count: 0,
|
|
||||||
reblogged: null,
|
|
||||||
favourited: null,
|
|
||||||
muted: null,
|
|
||||||
sensitive: false,
|
|
||||||
spoiler_text: '',
|
|
||||||
visibility: 'public',
|
|
||||||
media_attachments: [],
|
|
||||||
mentions: [],
|
|
||||||
tags: [],
|
|
||||||
card: null,
|
|
||||||
poll: null,
|
|
||||||
application: {
|
|
||||||
name: 'Web'
|
|
||||||
} as Entity.Application,
|
|
||||||
language: null,
|
|
||||||
pinned: null,
|
|
||||||
emoji_reactions: [],
|
|
||||||
bookmarked: false,
|
|
||||||
quote: false
|
|
||||||
}
|
|
||||||
|
|
||||||
const rebloggedStatus: Entity.Status = {
|
|
||||||
id: '3',
|
|
||||||
uri: 'http://example.com',
|
|
||||||
url: 'http://example.com',
|
|
||||||
account: account,
|
|
||||||
in_reply_to_id: null,
|
|
||||||
in_reply_to_account_id: null,
|
|
||||||
reblog: status1,
|
|
||||||
content: '',
|
|
||||||
plain_content: null,
|
|
||||||
created_at: '2019-03-31T21:40:32',
|
|
||||||
emojis: [],
|
|
||||||
replies_count: 0,
|
|
||||||
reblogs_count: 0,
|
|
||||||
favourites_count: 0,
|
|
||||||
reblogged: null,
|
|
||||||
favourited: null,
|
|
||||||
muted: null,
|
|
||||||
sensitive: false,
|
|
||||||
spoiler_text: '',
|
|
||||||
visibility: 'public',
|
|
||||||
media_attachments: [],
|
|
||||||
mentions: [],
|
|
||||||
tags: [],
|
|
||||||
card: null,
|
|
||||||
poll: null,
|
|
||||||
application: {
|
|
||||||
name: 'Web'
|
|
||||||
} as Entity.Application,
|
|
||||||
language: null,
|
|
||||||
pinned: null,
|
|
||||||
emoji_reactions: [],
|
|
||||||
bookmarked: false,
|
|
||||||
quote: false
|
|
||||||
}
|
|
||||||
|
|
||||||
describe('TimelineSpace/Contents/DirectMessages', () => {
|
|
||||||
describe('mutations', () => {
|
|
||||||
let state: DirectMessagesState
|
|
||||||
|
|
||||||
describe('deleteToot', () => {
|
|
||||||
describe('message is not reblogged', () => {
|
|
||||||
beforeEach(() => {
|
|
||||||
state = {
|
|
||||||
lazyLoading: false,
|
|
||||||
heading: true,
|
|
||||||
timeline: [status2, status1]
|
|
||||||
}
|
|
||||||
})
|
|
||||||
it('should be deleted', () => {
|
|
||||||
DirectMessages.mutations![MUTATION_TYPES.DELETE_TOOT](state, status1.id)
|
|
||||||
expect(state.timeline).toEqual([status2])
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
describe('message is reblogged', () => {
|
|
||||||
beforeEach(() => {
|
|
||||||
state = {
|
|
||||||
lazyLoading: false,
|
|
||||||
heading: true,
|
|
||||||
timeline: [status2, rebloggedStatus]
|
|
||||||
}
|
|
||||||
})
|
|
||||||
it('should be deleted', () => {
|
|
||||||
DirectMessages.mutations![MUTATION_TYPES.DELETE_TOOT](state, status1.id)
|
|
||||||
expect(state.timeline).toEqual([status2])
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
describe('appendTimeline', () => {
|
|
||||||
describe('heading', () => {
|
|
||||||
describe('normal', () => {
|
|
||||||
beforeEach(() => {
|
|
||||||
state = {
|
|
||||||
lazyLoading: false,
|
|
||||||
heading: true,
|
|
||||||
timeline: [status2, status1]
|
|
||||||
}
|
|
||||||
})
|
|
||||||
it('should be updated timeline', () => {
|
|
||||||
DirectMessages.mutations![MUTATION_TYPES.APPEND_TIMELINE](state, rebloggedStatus)
|
|
||||||
expect(state.timeline).toEqual([rebloggedStatus, status2, status1])
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
describe('duplicated status', () => {
|
|
||||||
beforeEach(() => {
|
|
||||||
state = {
|
|
||||||
lazyLoading: false,
|
|
||||||
heading: true,
|
|
||||||
timeline: [rebloggedStatus, status2, status1]
|
|
||||||
}
|
|
||||||
})
|
|
||||||
it('should not be updated timeline', () => {
|
|
||||||
DirectMessages.mutations![MUTATION_TYPES.APPEND_TIMELINE](state, rebloggedStatus)
|
|
||||||
expect(state.timeline).toEqual([rebloggedStatus, status2, status1])
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
describe('not heading', () => {
|
|
||||||
describe('normal', () => {
|
|
||||||
beforeEach(() => {
|
|
||||||
state = {
|
|
||||||
lazyLoading: false,
|
|
||||||
heading: false,
|
|
||||||
timeline: [status2, status1]
|
|
||||||
}
|
|
||||||
})
|
|
||||||
it('should be updated timeline', () => {
|
|
||||||
DirectMessages.mutations![MUTATION_TYPES.APPEND_TIMELINE](state, rebloggedStatus)
|
|
||||||
expect(state.timeline).toEqual([rebloggedStatus, status2, status1])
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
describe('duplicated status', () => {
|
|
||||||
beforeEach(() => {
|
|
||||||
state = {
|
|
||||||
lazyLoading: false,
|
|
||||||
heading: false,
|
|
||||||
timeline: [rebloggedStatus, status2, status1]
|
|
||||||
}
|
|
||||||
})
|
|
||||||
it('should not be updated timeline', () => {
|
|
||||||
DirectMessages.mutations![MUTATION_TYPES.APPEND_TIMELINE](state, rebloggedStatus)
|
|
||||||
expect(state.timeline).toEqual([rebloggedStatus, status2, status1])
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
@ -37,13 +37,10 @@ import { useI18next } from 'vue3-i18next'
|
|||||||
import { useRoute } from 'vue-router'
|
import { useRoute } from 'vue-router'
|
||||||
import { ElMessage } from 'element-plus'
|
import { ElMessage } from 'element-plus'
|
||||||
import { Entity } from 'megalodon'
|
import { Entity } from 'megalodon'
|
||||||
import useReloadable from '@/components/utils/reloadable'
|
|
||||||
import Toot from '@/components/organisms/Toot.vue'
|
import Toot from '@/components/organisms/Toot.vue'
|
||||||
import { EventEmitter } from '@/components/event'
|
import { EventEmitter } from '@/components/event'
|
||||||
import { ACTION_TYPES, MUTATION_TYPES } from '@/store/TimelineSpace/Contents/DirectMessages'
|
import { ACTION_TYPES, MUTATION_TYPES } from '@/store/TimelineSpace/Contents/DirectMessages'
|
||||||
import { MUTATION_TYPES as SIDE_MENU_MUTATION } from '@/store/TimelineSpace/SideMenu'
|
import { MUTATION_TYPES as SIDE_MENU_MUTATION } from '@/store/TimelineSpace/SideMenu'
|
||||||
import { MUTATION_TYPES as TIMELINE_MUTATION } from '@/store/TimelineSpace'
|
|
||||||
import { MUTATION_TYPES as HEADER_MUTATION } from '@/store/TimelineSpace/HeaderMenu'
|
|
||||||
import { LocalAccount } from '~/src/types/localAccount'
|
import { LocalAccount } from '~/src/types/localAccount'
|
||||||
import { LocalServer } from '~/src/types/localServer'
|
import { LocalServer } from '~/src/types/localServer'
|
||||||
import { MyWindow } from '~/src/types/global'
|
import { MyWindow } from '~/src/types/global'
|
||||||
@ -56,8 +53,7 @@ export default defineComponent({
|
|||||||
const store = useStore()
|
const store = useStore()
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const i18n = useI18next()
|
const i18n = useI18next()
|
||||||
const { reloadable } = useReloadable(store, route, i18n)
|
const { j, k } = useMagicKeys()
|
||||||
const { j, k, Ctrl_r } = useMagicKeys()
|
|
||||||
|
|
||||||
const win = (window as any) as MyWindow
|
const win = (window as any) as MyWindow
|
||||||
const id = computed(() => parseInt(route.params.id as string))
|
const id = computed(() => parseInt(route.params.id as string))
|
||||||
@ -73,7 +69,6 @@ export default defineComponent({
|
|||||||
|
|
||||||
const timeline = computed(() => store.state.TimelineSpace.Contents.DirectMessages.timeline[id.value])
|
const timeline = computed(() => store.state.TimelineSpace.Contents.DirectMessages.timeline[id.value])
|
||||||
const openSideBar = computed(() => store.state.TimelineSpace.Contents.SideBar.openSideBar)
|
const openSideBar = computed(() => store.state.TimelineSpace.Contents.SideBar.openSideBar)
|
||||||
const startReload = computed(() => store.state.TimelineSpace.HeaderMenu.reload)
|
|
||||||
const modalOpened = computed<boolean>(() => store.getters[`TimelineSpace/Modals/modalOpened`])
|
const modalOpened = computed<boolean>(() => store.getters[`TimelineSpace/Modals/modalOpened`])
|
||||||
const currentFocusedIndex = computed(() => timeline.value.findIndex(toot => focusedId.value === toot.uri + toot.id))
|
const currentFocusedIndex = computed(() => timeline.value.findIndex(toot => focusedId.value === toot.uri + toot.id))
|
||||||
const shortcutEnabled = computed(() => !modalOpened.value)
|
const shortcutEnabled = computed(() => !modalOpened.value)
|
||||||
@ -94,13 +89,6 @@ export default defineComponent({
|
|||||||
onBeforeUnmount(() => {
|
onBeforeUnmount(() => {
|
||||||
EventEmitter.off('focus-timeline')
|
EventEmitter.off('focus-timeline')
|
||||||
})
|
})
|
||||||
watch(startReload, (newVal, oldVal) => {
|
|
||||||
if (!oldVal && newVal) {
|
|
||||||
reload().finally(() => {
|
|
||||||
store.commit(`TimelineSpace/HeaderMenu/${HEADER_MUTATION.CHANGE_RELOAD}`, false)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
watch(focusedId, (newVal, _oldVal) => {
|
watch(focusedId, (newVal, _oldVal) => {
|
||||||
if (newVal && heading.value) {
|
if (newVal && heading.value) {
|
||||||
heading.value = false
|
heading.value = false
|
||||||
@ -118,9 +106,6 @@ export default defineComponent({
|
|||||||
whenever(logicAnd(k, shortcutEnabled), () => {
|
whenever(logicAnd(k, shortcutEnabled), () => {
|
||||||
focusPrev()
|
focusPrev()
|
||||||
})
|
})
|
||||||
whenever(logicAnd(Ctrl_r, shortcutEnabled), () => {
|
|
||||||
reload()
|
|
||||||
})
|
|
||||||
|
|
||||||
const onScroll = (event: Event) => {
|
const onScroll = (event: Event) => {
|
||||||
// for lazyLoading
|
// for lazyLoading
|
||||||
@ -163,14 +148,6 @@ export default defineComponent({
|
|||||||
store.commit(`${space}/${MUTATION_TYPES.DELETE_TOOT}`, { statusId: message.id, accountId: account.account.id })
|
store.commit(`${space}/${MUTATION_TYPES.DELETE_TOOT}`, { statusId: message.id, accountId: account.account.id })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const reload = async () => {
|
|
||||||
store.commit(`TimelineSpace/${TIMELINE_MUTATION.CHANGE_LOADING}`, true)
|
|
||||||
try {
|
|
||||||
await reloadable()
|
|
||||||
} finally {
|
|
||||||
store.commit(`TimelineSpace/${TIMELINE_MUTATION.CHANGE_LOADING}`, false)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const upper = () => {
|
const upper = () => {
|
||||||
scroller.value.scrollToItem(0)
|
scroller.value.scrollToItem(0)
|
||||||
focusedId.value = null
|
focusedId.value = null
|
||||||
|
@ -50,9 +50,6 @@ import StatusLoading from '@/components/organisms/StatusLoading.vue'
|
|||||||
import { EventEmitter } from '@/components/event'
|
import { EventEmitter } from '@/components/event'
|
||||||
import { ACTION_TYPES, MUTATION_TYPES } from '@/store/TimelineSpace/Contents/Home'
|
import { ACTION_TYPES, MUTATION_TYPES } from '@/store/TimelineSpace/Contents/Home'
|
||||||
import { MUTATION_TYPES as SIDE_MENU_MUTATION } from '@/store/TimelineSpace/SideMenu'
|
import { MUTATION_TYPES as SIDE_MENU_MUTATION } from '@/store/TimelineSpace/SideMenu'
|
||||||
import { MUTATION_TYPES as TIMELINE_MUTATION } from '@/store/TimelineSpace'
|
|
||||||
import { MUTATION_TYPES as HEADER_MUTATION } from '@/store/TimelineSpace/HeaderMenu'
|
|
||||||
import useReloadable from '@/components/utils/reloadable'
|
|
||||||
import { LocalAccount } from '~/src/types/localAccount'
|
import { LocalAccount } from '~/src/types/localAccount'
|
||||||
import { LocalServer } from '~/src/types/localServer'
|
import { LocalServer } from '~/src/types/localServer'
|
||||||
import { MyWindow } from '~/src/types/global'
|
import { MyWindow } from '~/src/types/global'
|
||||||
@ -65,8 +62,7 @@ export default defineComponent({
|
|||||||
const store = useStore()
|
const store = useStore()
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const i18n = useI18next()
|
const i18n = useI18next()
|
||||||
const { reloadable } = useReloadable(store, route, i18n)
|
const { j, k } = useMagicKeys()
|
||||||
const { j, k, Ctrl_r } = useMagicKeys()
|
|
||||||
|
|
||||||
const win = (window as any) as MyWindow
|
const win = (window as any) as MyWindow
|
||||||
|
|
||||||
@ -87,7 +83,6 @@ export default defineComponent({
|
|||||||
const timeline = computed(() => store.state.TimelineSpace.Contents.Home.timeline[id.value])
|
const timeline = computed(() => store.state.TimelineSpace.Contents.Home.timeline[id.value])
|
||||||
|
|
||||||
const openSideBar = computed(() => store.state.TimelineSpace.Contents.SideBar.openSideBar)
|
const openSideBar = computed(() => store.state.TimelineSpace.Contents.SideBar.openSideBar)
|
||||||
const startReload = computed(() => store.state.TimelineSpace.HeaderMenu.reload)
|
|
||||||
const modalOpened = computed<boolean>(() => store.getters[`TimelineSpace/Modals/modalOpened`])
|
const modalOpened = computed<boolean>(() => store.getters[`TimelineSpace/Modals/modalOpened`])
|
||||||
const filters = computed(() => store.getters[`${space}/filters`])
|
const filters = computed(() => store.getters[`${space}/filters`])
|
||||||
const currentFocusedIndex = computed(() => timeline.value.findIndex(toot => focusedId.value === toot.uri + toot.id))
|
const currentFocusedIndex = computed(() => timeline.value.findIndex(toot => focusedId.value === toot.uri + toot.id))
|
||||||
@ -131,13 +126,6 @@ export default defineComponent({
|
|||||||
el.scrollTop = 0
|
el.scrollTop = 0
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
watch(startReload, (newVal, oldVal) => {
|
|
||||||
if (!oldVal && newVal) {
|
|
||||||
reload().finally(() => {
|
|
||||||
store.commit(`TimelineSpace/HeaderMenu/${HEADER_MUTATION.CHANGE_RELOAD}`, false)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
watch(
|
watch(
|
||||||
timeline,
|
timeline,
|
||||||
(newState, _oldState) => {
|
(newState, _oldState) => {
|
||||||
@ -164,9 +152,6 @@ export default defineComponent({
|
|||||||
whenever(logicAnd(k, shortcutEnabled), () => {
|
whenever(logicAnd(k, shortcutEnabled), () => {
|
||||||
focusPrev()
|
focusPrev()
|
||||||
})
|
})
|
||||||
whenever(logicAnd(Ctrl_r, shortcutEnabled), () => {
|
|
||||||
reload()
|
|
||||||
})
|
|
||||||
|
|
||||||
const onScroll = (event: Event) => {
|
const onScroll = (event: Event) => {
|
||||||
// for lazyLoading
|
// for lazyLoading
|
||||||
@ -219,14 +204,6 @@ export default defineComponent({
|
|||||||
}, 500)
|
}, 500)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
const reload = async () => {
|
|
||||||
store.commit(`TimelineSpace/${TIMELINE_MUTATION.CHANGE_LOADING}`, true)
|
|
||||||
try {
|
|
||||||
await reloadable()
|
|
||||||
} finally {
|
|
||||||
store.commit(`TimelineSpace/${TIMELINE_MUTATION.CHANGE_LOADING}`, false)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const upper = () => {
|
const upper = () => {
|
||||||
scroller.value.scrollToItem(0)
|
scroller.value.scrollToItem(0)
|
||||||
focusedId.value = null
|
focusedId.value = null
|
||||||
|
@ -39,11 +39,8 @@ import { useRoute } from 'vue-router'
|
|||||||
import { useStore } from '@/store'
|
import { useStore } from '@/store'
|
||||||
import Toot from '@/components/organisms/Toot.vue'
|
import Toot from '@/components/organisms/Toot.vue'
|
||||||
import { EventEmitter } from '@/components/event'
|
import { EventEmitter } from '@/components/event'
|
||||||
import useReloadable from '@/components/utils/reloadable'
|
|
||||||
import { ACTION_TYPES, MUTATION_TYPES } from '@/store/TimelineSpace/Contents/Local'
|
import { ACTION_TYPES, MUTATION_TYPES } from '@/store/TimelineSpace/Contents/Local'
|
||||||
import { MUTATION_TYPES as SIDE_MENU_MUTATION } from '@/store/TimelineSpace/SideMenu'
|
import { MUTATION_TYPES as SIDE_MENU_MUTATION } from '@/store/TimelineSpace/SideMenu'
|
||||||
import { MUTATION_TYPES as TIMELINE_MUTATION } from '@/store/TimelineSpace'
|
|
||||||
import { MUTATION_TYPES as HEADER_MUTATION } from '@/store/TimelineSpace/HeaderMenu'
|
|
||||||
import { LocalAccount } from '~/src/types/localAccount'
|
import { LocalAccount } from '~/src/types/localAccount'
|
||||||
import { LocalServer } from '~/src/types/localServer'
|
import { LocalServer } from '~/src/types/localServer'
|
||||||
import { MyWindow } from '~/src/types/global'
|
import { MyWindow } from '~/src/types/global'
|
||||||
@ -56,8 +53,7 @@ export default defineComponent({
|
|||||||
const store = useStore()
|
const store = useStore()
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const i18n = useI18next()
|
const i18n = useI18next()
|
||||||
const { reloadable } = useReloadable(store, route, i18n)
|
const { j, k } = useMagicKeys()
|
||||||
const { j, k, Ctrl_r } = useMagicKeys()
|
|
||||||
|
|
||||||
const win = (window as any) as MyWindow
|
const win = (window as any) as MyWindow
|
||||||
const id = computed(() => parseInt(route.params.id as string))
|
const id = computed(() => parseInt(route.params.id as string))
|
||||||
@ -74,7 +70,6 @@ export default defineComponent({
|
|||||||
const timeline = computed(() => store.state.TimelineSpace.Contents.Local.timeline[id.value])
|
const timeline = computed(() => store.state.TimelineSpace.Contents.Local.timeline[id.value])
|
||||||
|
|
||||||
const openSideBar = computed(() => store.state.TimelineSpace.Contents.SideBar.openSideBar)
|
const openSideBar = computed(() => store.state.TimelineSpace.Contents.SideBar.openSideBar)
|
||||||
const startReload = computed(() => store.state.TimelineSpace.HeaderMenu.reload)
|
|
||||||
const modalOpened = computed<boolean>(() => store.getters[`TimelineSpace/Modals/modalOpened`])
|
const modalOpened = computed<boolean>(() => store.getters[`TimelineSpace/Modals/modalOpened`])
|
||||||
const currentFocusedIndex = computed(() => timeline.value.findIndex(toot => focusedId.value === toot.uri + toot.id))
|
const currentFocusedIndex = computed(() => timeline.value.findIndex(toot => focusedId.value === toot.uri + toot.id))
|
||||||
const shortcutEnabled = computed(() => !modalOpened.value)
|
const shortcutEnabled = computed(() => !modalOpened.value)
|
||||||
@ -102,13 +97,6 @@ export default defineComponent({
|
|||||||
el.scrollTop = 0
|
el.scrollTop = 0
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
watch(startReload, (newVal, oldVal) => {
|
|
||||||
if (!oldVal && newVal) {
|
|
||||||
reload().finally(() => {
|
|
||||||
store.commit(`TimelineSpace/HeaderMenu/${HEADER_MUTATION.CHANGE_RELOAD}`, false)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
watch(focusedId, (newVal, _oldVal) => {
|
watch(focusedId, (newVal, _oldVal) => {
|
||||||
if (newVal && heading.value) {
|
if (newVal && heading.value) {
|
||||||
@ -127,9 +115,6 @@ export default defineComponent({
|
|||||||
whenever(logicAnd(k, shortcutEnabled), () => {
|
whenever(logicAnd(k, shortcutEnabled), () => {
|
||||||
focusPrev()
|
focusPrev()
|
||||||
})
|
})
|
||||||
whenever(logicAnd(Ctrl_r, shortcutEnabled), () => {
|
|
||||||
reload()
|
|
||||||
})
|
|
||||||
|
|
||||||
const onScroll = (event: Event) => {
|
const onScroll = (event: Event) => {
|
||||||
if (
|
if (
|
||||||
@ -160,14 +145,7 @@ export default defineComponent({
|
|||||||
heading.value = true
|
heading.value = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const reload = async () => {
|
|
||||||
store.commit(`TimelineSpace/${TIMELINE_MUTATION.CHANGE_LOADING}`, true)
|
|
||||||
try {
|
|
||||||
await reloadable()
|
|
||||||
} finally {
|
|
||||||
store.commit(`TimelineSpace/${TIMELINE_MUTATION.CHANGE_LOADING}`, false)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const updateToot = (message: Entity.Status) => {
|
const updateToot = (message: Entity.Status) => {
|
||||||
if (account.account) {
|
if (account.account) {
|
||||||
store.commit(`${space}/${MUTATION_TYPES.UPDATE_TOOT}`, { status: message, accountId: account.account.id })
|
store.commit(`${space}/${MUTATION_TYPES.UPDATE_TOOT}`, { status: message, accountId: account.account.id })
|
||||||
|
@ -46,7 +46,6 @@ import { EventEmitter } from '@/components/event'
|
|||||||
import { useStore } from '@/store'
|
import { useStore } from '@/store'
|
||||||
import { useRoute } from 'vue-router'
|
import { useRoute } from 'vue-router'
|
||||||
import { useI18next } from 'vue3-i18next'
|
import { useI18next } from 'vue3-i18next'
|
||||||
import useReloadable from '@/components/utils/reloadable'
|
|
||||||
import { ACTION_TYPES, MUTATION_TYPES } from '@/store/TimelineSpace/Contents/Notifications'
|
import { ACTION_TYPES, MUTATION_TYPES } from '@/store/TimelineSpace/Contents/Notifications'
|
||||||
import { MUTATION_TYPES as SIDE_MENU_MUTATION } from '@/store/TimelineSpace/SideMenu'
|
import { MUTATION_TYPES as SIDE_MENU_MUTATION } from '@/store/TimelineSpace/SideMenu'
|
||||||
import { MUTATION_TYPES as TIMELINE_MUTATION } from '@/store/TimelineSpace'
|
import { MUTATION_TYPES as TIMELINE_MUTATION } from '@/store/TimelineSpace'
|
||||||
@ -64,8 +63,7 @@ export default defineComponent({
|
|||||||
const store = useStore()
|
const store = useStore()
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const i18n = useI18next()
|
const i18n = useI18next()
|
||||||
const { reloadable } = useReloadable(store, route, i18n)
|
const { j, k } = useMagicKeys()
|
||||||
const { j, k, Ctrl_r } = useMagicKeys()
|
|
||||||
|
|
||||||
const win = (window as any) as MyWindow
|
const win = (window as any) as MyWindow
|
||||||
|
|
||||||
@ -83,7 +81,6 @@ export default defineComponent({
|
|||||||
|
|
||||||
const notifications = computed(() => store.state.TimelineSpace.Contents.Notifications.notifications[id.value])
|
const notifications = computed(() => store.state.TimelineSpace.Contents.Notifications.notifications[id.value])
|
||||||
const openSideBar = computed(() => store.state.TimelineSpace.Contents.SideBar.openSideBar)
|
const openSideBar = computed(() => store.state.TimelineSpace.Contents.SideBar.openSideBar)
|
||||||
const startReload = computed(() => store.state.TimelineSpace.HeaderMenu.reload)
|
|
||||||
const modalOpened = computed<boolean>(() => store.getters[`TimelineSpace/Modals/modalOpened`])
|
const modalOpened = computed<boolean>(() => store.getters[`TimelineSpace/Modals/modalOpened`])
|
||||||
const filters = computed(() => store.getters[`${space}/filters}`])
|
const filters = computed(() => store.getters[`${space}/filters}`])
|
||||||
const currentFocusedIndex = computed(() => notifications.value.findIndex(notification => focusedId.value === notification.id))
|
const currentFocusedIndex = computed(() => notifications.value.findIndex(notification => focusedId.value === notification.id))
|
||||||
@ -114,13 +111,6 @@ export default defineComponent({
|
|||||||
el.scrollTop = 0
|
el.scrollTop = 0
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
watch(startReload, (newVal, oldVal) => {
|
|
||||||
if (!oldVal && newVal) {
|
|
||||||
reload().finally(() => {
|
|
||||||
store.commit(`TimelineSpace/HeaderMenu/${HEADER_MUTATION.CHANGE_RELOAD}`, false)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
watch(
|
watch(
|
||||||
notifications,
|
notifications,
|
||||||
(newState, _oldState) => {
|
(newState, _oldState) => {
|
||||||
@ -148,9 +138,6 @@ export default defineComponent({
|
|||||||
whenever(logicAnd(k, shortcutEnabled), () => {
|
whenever(logicAnd(k, shortcutEnabled), () => {
|
||||||
focusPrev()
|
focusPrev()
|
||||||
})
|
})
|
||||||
whenever(logicAnd(Ctrl_r, shortcutEnabled), () => {
|
|
||||||
reload()
|
|
||||||
})
|
|
||||||
|
|
||||||
const onScroll = (event: Event) => {
|
const onScroll = (event: Event) => {
|
||||||
if (
|
if (
|
||||||
@ -203,15 +190,6 @@ export default defineComponent({
|
|||||||
}, 500)
|
}, 500)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
const reload = async () => {
|
|
||||||
store.commit(`TimelineSpace/${TIMELINE_MUTATION.CHANGE_LOADING}`, true)
|
|
||||||
try {
|
|
||||||
await reloadable()
|
|
||||||
store.dispatch(`${space}/${ACTION_TYPES.RESET_BADGE}`)
|
|
||||||
} finally {
|
|
||||||
store.commit(`TimelineSpace/${TIMELINE_MUTATION.CHANGE_LOADING}`, false)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const upper = () => {
|
const upper = () => {
|
||||||
scroller.value.scrollToItem(0)
|
scroller.value.scrollToItem(0)
|
||||||
focusedId.value = null
|
focusedId.value = null
|
||||||
|
@ -39,10 +39,7 @@ import { useRoute } from 'vue-router'
|
|||||||
import { useStore } from '@/store'
|
import { useStore } from '@/store'
|
||||||
import Toot from '@/components/organisms/Toot.vue'
|
import Toot from '@/components/organisms/Toot.vue'
|
||||||
import { EventEmitter } from '@/components/event'
|
import { EventEmitter } from '@/components/event'
|
||||||
import useReloadable from '@/components/utils/reloadable'
|
|
||||||
import { MUTATION_TYPES as SIDE_MENU_MUTATION } from '@/store/TimelineSpace/SideMenu'
|
import { MUTATION_TYPES as SIDE_MENU_MUTATION } from '@/store/TimelineSpace/SideMenu'
|
||||||
import { MUTATION_TYPES as TIMELINE_MUTATION } from '@/store/TimelineSpace'
|
|
||||||
import { MUTATION_TYPES as HEADER_MUTATION } from '@/store/TimelineSpace/HeaderMenu'
|
|
||||||
import { ACTION_TYPES, MUTATION_TYPES } from '@/store/TimelineSpace/Contents/Public'
|
import { ACTION_TYPES, MUTATION_TYPES } from '@/store/TimelineSpace/Contents/Public'
|
||||||
import { LocalAccount } from '~/src/types/localAccount'
|
import { LocalAccount } from '~/src/types/localAccount'
|
||||||
import { LocalServer } from '~/src/types/localServer'
|
import { LocalServer } from '~/src/types/localServer'
|
||||||
@ -56,8 +53,7 @@ export default defineComponent({
|
|||||||
const store = useStore()
|
const store = useStore()
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const i18n = useI18next()
|
const i18n = useI18next()
|
||||||
const { reloadable } = useReloadable(store, route, i18n)
|
const { j, k } = useMagicKeys()
|
||||||
const { j, k, Ctrl_r } = useMagicKeys()
|
|
||||||
|
|
||||||
const win = (window as any) as MyWindow
|
const win = (window as any) as MyWindow
|
||||||
const id = computed(() => parseInt(route.params.id as string))
|
const id = computed(() => parseInt(route.params.id as string))
|
||||||
@ -73,7 +69,6 @@ export default defineComponent({
|
|||||||
|
|
||||||
const timeline = computed(() => store.state.TimelineSpace.Contents.Public.timeline[id.value])
|
const timeline = computed(() => store.state.TimelineSpace.Contents.Public.timeline[id.value])
|
||||||
const openSideBar = computed(() => store.state.TimelineSpace.Contents.SideBar.openSideBar)
|
const openSideBar = computed(() => store.state.TimelineSpace.Contents.SideBar.openSideBar)
|
||||||
const startReload = computed(() => store.state.TimelineSpace.HeaderMenu.reload)
|
|
||||||
const modalOpened = computed<boolean>(() => store.getters[`TimelineSpace/Modals/modalOpened`])
|
const modalOpened = computed<boolean>(() => store.getters[`TimelineSpace/Modals/modalOpened`])
|
||||||
const filters = computed(() => store.getters[`${space}/filters`])
|
const filters = computed(() => store.getters[`${space}/filters`])
|
||||||
const currentFocusedIndex = computed(() => timeline.value.findIndex(toot => focusedId.value === toot.uri + toot.id))
|
const currentFocusedIndex = computed(() => timeline.value.findIndex(toot => focusedId.value === toot.uri + toot.id))
|
||||||
@ -102,13 +97,6 @@ export default defineComponent({
|
|||||||
el.scrollTop = 0
|
el.scrollTop = 0
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
watch(startReload, (newVal, oldVal) => {
|
|
||||||
if (!oldVal && newVal) {
|
|
||||||
reload().finally(() => {
|
|
||||||
store.commit(`TimelineSpace/HeaderMenu/${HEADER_MUTATION.CHANGE_RELOAD}`, false)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
watch(focusedId, (newVal, _oldVal) => {
|
watch(focusedId, (newVal, _oldVal) => {
|
||||||
if (newVal && heading.value) {
|
if (newVal && heading.value) {
|
||||||
@ -127,9 +115,6 @@ export default defineComponent({
|
|||||||
whenever(logicAnd(k, shortcutEnabled), () => {
|
whenever(logicAnd(k, shortcutEnabled), () => {
|
||||||
focusPrev()
|
focusPrev()
|
||||||
})
|
})
|
||||||
whenever(logicAnd(Ctrl_r, shortcutEnabled), () => {
|
|
||||||
reload()
|
|
||||||
})
|
|
||||||
|
|
||||||
const onScroll = (event: Event) => {
|
const onScroll = (event: Event) => {
|
||||||
if (
|
if (
|
||||||
@ -161,14 +146,7 @@ export default defineComponent({
|
|||||||
heading.value = true
|
heading.value = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const reload = async () => {
|
|
||||||
store.commit(`TimelineSpace/${TIMELINE_MUTATION.CHANGE_LOADING}`, true)
|
|
||||||
try {
|
|
||||||
await reloadable()
|
|
||||||
} finally {
|
|
||||||
store.commit(`TimelineSpace/${TIMELINE_MUTATION.CHANGE_LOADING}`, false)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const updateToot = (message: Entity.Status) => {
|
const updateToot = (message: Entity.Status) => {
|
||||||
if (account.account) {
|
if (account.account) {
|
||||||
store.commit(`${space}/${MUTATION_TYPES.UPDATE_TOOT}`, { status: message, accountId: account.account.id })
|
store.commit(`${space}/${MUTATION_TYPES.UPDATE_TOOT}`, { status: message, accountId: account.account.id })
|
||||||
|
@ -128,15 +128,10 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
const reload = () => {
|
const reload = () => {
|
||||||
switch (route.name) {
|
switch (route.name) {
|
||||||
case 'home':
|
|
||||||
case 'notifications':
|
|
||||||
case 'favourites':
|
case 'favourites':
|
||||||
case 'bookmarks':
|
case 'bookmarks':
|
||||||
case 'local':
|
|
||||||
case 'public':
|
|
||||||
case 'tag':
|
case 'tag':
|
||||||
case 'list':
|
case 'list':
|
||||||
case 'direct-messages':
|
|
||||||
store.commit(`${space}/${MUTATION_TYPES.CHANGE_RELOAD}`, true)
|
store.commit(`${space}/${MUTATION_TYPES.CHANGE_RELOAD}`, true)
|
||||||
break
|
break
|
||||||
default:
|
default:
|
||||||
@ -145,15 +140,10 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
const reloadable = () => {
|
const reloadable = () => {
|
||||||
switch (route.name) {
|
switch (route.name) {
|
||||||
case 'home':
|
|
||||||
case 'notifications':
|
|
||||||
case 'favourites':
|
case 'favourites':
|
||||||
case 'bookmarks':
|
case 'bookmarks':
|
||||||
case 'local':
|
|
||||||
case 'public':
|
|
||||||
case 'tag':
|
case 'tag':
|
||||||
case 'list':
|
case 'list':
|
||||||
case 'direct-messages':
|
|
||||||
return true
|
return true
|
||||||
default:
|
default:
|
||||||
return false
|
return false
|
||||||
|
@ -14,7 +14,6 @@ export default function useReloadable(store: Store<RootState>, route: RouteLocat
|
|||||||
})
|
})
|
||||||
throw err
|
throw err
|
||||||
})
|
})
|
||||||
await store.dispatch(`TimelineSpace/${ACTION_TYPES.FETCH_CONTENTS_TIMELINES}`)
|
|
||||||
return account
|
return account
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user