mirror of
https://github.com/Wei-Shaw/sub2api.git
synced 2026-10-07 13:48:43 +08:00
fix(frontend): isolate account helper data loading
This commit is contained in:
@@ -2454,12 +2454,19 @@ onMounted(async () => {
|
||||
|
||||
load()
|
||||
loadUpstreamBillingProbeGlobalState()
|
||||
try {
|
||||
const [p, g] = await Promise.all([adminAPI.proxies.getAll(), adminAPI.groups.getAll()])
|
||||
proxies.value = p
|
||||
groups.value = g
|
||||
} catch (error) {
|
||||
console.error('Failed to load proxies/groups:', error)
|
||||
const [proxiesResult, groupsResult] = await Promise.allSettled([
|
||||
adminAPI.proxies.getAll(),
|
||||
adminAPI.groups.getAll()
|
||||
])
|
||||
if (proxiesResult.status === 'fulfilled') {
|
||||
proxies.value = proxiesResult.value
|
||||
} else {
|
||||
console.error('Failed to load proxies:', proxiesResult.reason)
|
||||
}
|
||||
if (groupsResult.status === 'fulfilled') {
|
||||
groups.value = groupsResult.value
|
||||
} else {
|
||||
console.error('Failed to load groups:', groupsResult.reason)
|
||||
}
|
||||
window.addEventListener('scroll', handleScroll, true)
|
||||
window.addEventListener('resize', handleViewportResize)
|
||||
|
||||
@@ -101,7 +101,10 @@ function mountView() {
|
||||
Pagination: true,
|
||||
ConfirmDialog: true,
|
||||
AccountTableActions: { template: '<div><slot name="beforeCreate" /><slot name="after" /></div>' },
|
||||
AccountTableFilters: { template: '<div></div>' },
|
||||
AccountTableFilters: {
|
||||
props: ['groups'],
|
||||
template: '<div data-test="account-filters" :data-group-count="groups.length"></div>'
|
||||
},
|
||||
AccountBulkActionsBar: true,
|
||||
AccountActionMenu: true,
|
||||
ImportDataModal: true,
|
||||
@@ -155,6 +158,16 @@ describe('admin AccountsView usage windows hint', () => {
|
||||
getAllGroups.mockResolvedValue([])
|
||||
})
|
||||
|
||||
it('keeps groups available when loading proxies fails', async () => {
|
||||
getAllProxies.mockRejectedValue(new Error('proxy service unavailable'))
|
||||
getAllGroups.mockResolvedValue([{ id: 7, name: 'production' }])
|
||||
|
||||
const wrapper = mountView()
|
||||
await flushPromises()
|
||||
|
||||
expect(wrapper.get('[data-test="account-filters"]').attributes('data-group-count')).toBe('1')
|
||||
})
|
||||
|
||||
it('renders an explanatory tooltip next to the usage windows column header', async () => {
|
||||
const wrapper = mountView()
|
||||
await flushPromises()
|
||||
|
||||
Reference in New Issue
Block a user