Skip to content

Commit db76325

Browse files
committed
feat: configurable persistent tabs
1 parent 41d0495 commit db76325

File tree

23 files changed

+176
-175
lines changed

23 files changed

+176
-175
lines changed

apps/web-antd/src/forward/request.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ function createRequestClient() {
3333
// 这里不能用 useAccessStore,因为 useAccessStore 会导致循环引用
3434
const accessStore = useCoreAccessStore();
3535
return {
36-
refreshToken: `Bearer ${accessStore.getRefreshToken}`,
37-
token: `Bearer ${accessStore.getAccessToken}`,
36+
refreshToken: `Bearer ${accessStore.refreshToken}`,
37+
token: `Bearer ${accessStore.accessToken}`,
3838
};
3939
},
4040
// 默认

apps/web-antd/src/store/modules/access.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@ export const useAccessStore = defineStore('access', () => {
1717
const router = useRouter();
1818
const loading = ref(false);
1919

20-
const accessToken = computed(() => coreStoreAccess.getAccessToken);
21-
const userRoles = computed(() => coreStoreAccess.getUserRoles);
22-
const userInfo = computed(() => coreStoreAccess.getUserInfo);
23-
const accessRoutes = computed(() => coreStoreAccess.getAccessRoutes);
20+
const accessToken = computed(() => coreStoreAccess.accessToken);
21+
const userRoles = computed(() => coreStoreAccess.userRoles);
22+
const userInfo = computed(() => coreStoreAccess.userInfo);
23+
const accessRoutes = computed(() => coreStoreAccess.accessRoutes);
2424

2525
function setAccessMenus(menus: MenuRecordRaw[]) {
2626
coreStoreAccess.setAccessMenus(menus);

packages/@core/forward/preferences/src/config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ const defaultPreferences: Preferences = {
7171
tabbar: {
7272
enable: true,
7373
keepAlive: true,
74+
persist: true,
7475
showIcon: true,
7576
},
7677
theme: {

packages/@core/forward/preferences/src/types.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,8 @@ interface TabbarPreferences {
143143
enable: boolean;
144144
/** 开启标签页缓存功能 */
145145
keepAlive: boolean;
146+
/** 是否持久化标签 */
147+
persist: boolean;
146148
/** 是否开启多标签页图标 */
147149
showIcon: boolean;
148150
}

packages/@core/forward/stores/src/modules/access.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ describe('useCoreAccessStore', () => {
3333
const store = useCoreAccessStore();
3434
const userInfo: any = { name: 'Jane Doe', roles: [{ value: 'user' }] };
3535
store.setUserInfo(userInfo);
36-
expect(store.getUserInfo).toEqual(userInfo);
36+
expect(store.userInfo).toEqual(userInfo);
3737
});
3838

3939
it('updates accessToken state correctly', () => {
@@ -60,13 +60,13 @@ describe('useCoreAccessStore', () => {
6060
it('returns the correct accessToken', () => {
6161
const store = useCoreAccessStore();
6262
store.setAccessToken('xyz789');
63-
expect(store.getAccessToken).toBe('xyz789');
63+
expect(store.accessToken).toBe('xyz789');
6464
});
6565

6666
// 测试在没有用户角色时返回空数组
6767
it('returns an empty array for userRoles if not set', () => {
6868
const store = useCoreAccessStore();
69-
expect(store.getUserRoles).toEqual([]);
69+
expect(store.userRoles).toEqual([]);
7070
});
7171

7272
// 测试设置空的访问菜单列表

packages/@core/forward/stores/src/modules/access.ts

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -90,32 +90,6 @@ const useCoreAccessStore = defineStore('core-access', {
9090
this.userRoles = roles;
9191
},
9292
},
93-
getters: {
94-
getAccessCodes(): string[] {
95-
return this.accessCodes;
96-
},
97-
getAccessMenus(): MenuRecordRaw[] {
98-
return this.accessMenus;
99-
},
100-
getAccessRoutes(): RouteRecordRaw[] {
101-
return this.accessRoutes;
102-
},
103-
getAccessToken(): AccessToken {
104-
return this.accessToken;
105-
},
106-
getRefreshToken(): AccessToken {
107-
return this.refreshToken;
108-
},
109-
getUserInfo(): BasicUserInfo | null {
110-
return this.userInfo;
111-
},
112-
getUserRoles(): string[] {
113-
return this.userRoles;
114-
},
115-
string(): string[] {
116-
return this.accessCodes;
117-
},
118-
},
11993
persist: {
12094
// 持久化
12195
paths: ['accessToken', 'refreshToken', 'accessCodes'],

packages/@core/forward/stores/src/modules/tabbar.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -99,9 +99,9 @@ describe('useCoreAccessStore', () => {
9999

100100
it('returns all cache tabs', () => {
101101
const store = useCoreTabbarStore();
102-
store.cacheTabs.add('Home');
103-
store.cacheTabs.add('About');
104-
expect(store.getCacheTabs).toEqual(['Home', 'About']);
102+
store.cachedTabs.add('Home');
103+
store.cachedTabs.add('About');
104+
expect(store.cachedTabs).toEqual(['Home', 'About']);
105105
});
106106

107107
it('returns all tabs, including affix tabs', () => {
@@ -290,7 +290,7 @@ describe('useCoreAccessStore', () => {
290290

291291
await store.refresh(router);
292292

293-
expect(store.excludeCacheTabs.has('Dashboard')).toBe(false);
293+
expect(store.excludeCachedTabs.has('Dashboard')).toBe(false);
294294
expect(store.renderRouteView).toBe(true);
295295
});
296296
});

0 commit comments

Comments
 (0)