Переглянути джерело

fix: 修复一个项目列表为空时的问题

hkshu12 5 роки тому
батько
коміт
1b9b065cbe
1 змінених файлів з 22 додано та 4 видалено
  1. 22 4
      src/store/modules/workspace.ts

+ 22 - 4
src/store/modules/workspace.ts

@@ -6,6 +6,12 @@ import {
   WorkspaceState, RootState, ChangeProjectPayload, UserState,
 } from '../typings';
 
+const NOT_SELECT_PROJECT_HINT = '未选择项目';
+
+const EMPTY_PROJECT_LIST_HINT = '暂无项目';
+
+const NO_SUCH_PROJECT_HINT = '未知项目';
+
 const DEFAULT: WorkspaceState = {
   currentProjectId: -1,
   currentProjectMembers: [],
@@ -14,7 +20,7 @@ const DEFAULT: WorkspaceState = {
 
 const actions: ActionTree<WorkspaceState, RootState> = {
   async refreshProjectList({ commit }) {
-    const projectList = await ProjectAPI.getProjectListByUserId();
+    const projectList = (await ProjectAPI.getProjectListByUserId()) || [];
     commit('updateProjectList', projectList);
   },
   async changeProject({ commit }, payload: ChangeProjectPayload) {
@@ -41,11 +47,23 @@ const mutations: MutationTree<WorkspaceState> = {
 
 const getters: GetterTree<WorkspaceState, RootState> = {
   currentProjectInfo(state) {
-    return Array.prototype.find.call(state.projectList, (project) => project.id === state.currentProjectId)
-      || {
+    if (state.projectList.length === 0) {
+      return {
+        id: -1,
+        name: EMPTY_PROJECT_LIST_HINT,
+      };
+    }
+    if (state.currentProjectId === -1) {
+      return {
         id: -1,
-        name: '未选择项目',
+        name: NOT_SELECT_PROJECT_HINT,
       };
+    }
+    const currentProjectInfo = Array.prototype.find.call(state.projectList, (project) => project.id === state.currentProjectId);
+    return currentProjectInfo || {
+      id: -1,
+      name: NO_SUCH_PROJECT_HINT,
+    };
   },
   userOptions(state) {
     return state.currentProjectMembers.map((user) => ({