Skip to content
Merged
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import {
PI, PTextHighlighting, PLink, PTooltip,
} from '@cloudforet/mirinae';

import { useAllReferenceDataModel } from '@/query/resource-query/reference-data-model';

import WorkspaceLogoIcon from '@/common/modules/navigations/top-bar/modules/top-bar-header/WorkspaceLogoIcon.vue';
import { useTopBarSearchStore } from '@/common/modules/navigations/top-bar/modules/top-bar-search/store';

Expand All @@ -23,11 +25,10 @@ const props = withDefaults(defineProps<Props>(), {
workspaceId: '',
});
const topBarSearchStore = useTopBarSearchStore();
const referenceMap = useAllReferenceDataModel();
const workspaceMap = referenceMap.workspace;

const storeState = reactive({
workspaceMap: computed(() => topBarSearchStore.storeState.workspaceMap),
currentWorkspaceId: computed(() => topBarSearchStore.storeState.currentWorkspaceId),
});
const currentWorkspaceId = computed(() => topBarSearchStore.storeState.currentWorkspaceId);

const state = reactive({
tooltipText: computed(() => `${props.label}${props.description ? ` ∙ ${props.description}` : ''}`),
Expand Down Expand Up @@ -61,18 +62,18 @@ const state = reactive({
</span>
</div>
</p-tooltip>
<div v-if="props.workspaceId !== storeState.currentWorkspaceId"
<div v-if="props.workspaceId !== currentWorkspaceId"
class="lower-part"
>
<div class="left-part">
<workspace-logo-icon :text="storeState.workspaceMap[props.workspaceId]?.label"
:theme="storeState.workspaceMap[props.workspaceId]?.data?.tags?.theme"
<workspace-logo-icon :text="workspaceMap[props.workspaceId]?.label || props.workspaceId"
:theme="workspaceMap[props.workspaceId]?.data?.tags?.theme"
size="xxs"
/>
<p-link new-tab
action-icon="internal-link"
>
<span class="label">{{ storeState.workspaceMap[props.workspaceId]?.label }}</span>
<span class="label">{{ workspaceMap[props.workspaceId]?.label || props.workspaceId }}</span>
</p-link>
</div>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ const { getReferenceLocation } = useReferenceRouter();
const { mutateAsync: deleteRecent } = useRecentDelete();

const storeState = reactive({
workspaceMap: computed(() => topBarSearchStore.storeState.workspaceMap),
currentWorkspaceId: computed(() => topBarSearchStore.storeState.currentWorkspaceId),
activeTab: computed(() => topBarSearchStore.state.activeTab),
serviceAccountMap: computed(() => allReferenceStore.getters.serviceAccount),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,20 +12,17 @@ import type { ResourceModel } from '@/api-clients/search/resource/schema/model';
import { useUserWorkspaceStore } from '@/store/app-context/workspace/user-workspace-store';

import ErrorHandler from '@/common/composables/error/errorHandler';
import { useRecentStore } from '@/common/modules/navigations/stores/recent-store';
import { SEARCH_TAB } from '@/common/modules/navigations/top-bar/modules/top-bar-search/config';
import type { SearchTab, StageWorkspace } from '@/common/modules/navigations/top-bar/modules/top-bar-search/type';
import { tabResourceTypeMap } from '@/common/modules/navigations/top-bar/modules/top-bar-search/type';
import type { RecentItem } from '@/common/modules/navigations/type';
import { recentNSearchTabMap } from '@/common/modules/navigations/type';

interface TopBarSearchStoreState {
loading: boolean;
allWorkspacesChecked: boolean;
isActivated: boolean;
inputText: string;
activeTab: SearchTab;
recentMenuList: RecentItem[];
// recentMenuList: RecentItem[];
searchMenuList: ResourceModel[];
// workspace filter
recentAccessedWorkspaces: string[];
Expand All @@ -35,7 +32,7 @@ interface TopBarSearchStoreState {
export const useTopBarSearchStore = defineStore('top-bar-search', () => {
const userWorkspaceStore = useUserWorkspaceStore();
const workspaceStoreState = userWorkspaceStore.$state;
const recentStore = useRecentStore();
// const recentStore = useRecentStore();

const orderWorkspaceList = (workspaceList: any[]) => {
if (!storeState.currentWorkspaceId) return workspaceList;
Expand All @@ -56,7 +53,7 @@ export const useTopBarSearchStore = defineStore('top-bar-search', () => {
isActivated: false,
inputText: '',
activeTab: 'service',
recentMenuList: [],
// recentMenuList: [],
searchMenuList: [],
// workspace filter
recentAccessedWorkspaces: [],
Expand All @@ -70,7 +67,7 @@ export const useTopBarSearchStore = defineStore('top-bar-search', () => {
if (state.inputText) return state.inputText.trim();
return '';
}),
isRecentEmpty: computed<boolean>(() => state.recentMenuList.length === 0),
// isRecentEmpty: computed<boolean>(() => state.recentMenuList.length === 0),
selectedWorkspaces: computed<string[]>(() => state.stagedWorkspaces.filter((workspace) => workspace.isSelected).map((workspace) => workspace.workspaceId)),
});

Expand Down Expand Up @@ -143,7 +140,7 @@ export const useTopBarSearchStore = defineStore('top-bar-search', () => {
};
watch([() => getters.trimmedInputText, () => state.activeTab], (trimmedText) => {
state.loading = true;
state.recentMenuList = [];
// state.recentMenuList = [];
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Question: Why annotated all code related of recentMenuList?

if (trimmedText) {
state.searchMenuList = [];
}
Expand All @@ -157,16 +154,16 @@ export const useTopBarSearchStore = defineStore('top-bar-search', () => {
() => state.allWorkspacesChecked,
], debounce(async ([trimmedText, workspaces, tab]) => {
state.loading = true;
state.recentMenuList = [];
if (!trimmedText && storeState.currentWorkspaceId) {
const recentRes = await recentStore.fetchRecent({
type: recentNSearchTabMap[tab],
workspaceIds: [storeState.currentWorkspaceId],
});
if (tab !== SEARCH_TAB.SERVICE) state.recentMenuList = recentRes;
state.loading = false;
return;
}
// state.recentMenuList = [];
// if (!trimmedText && storeState.currentWorkspaceId) {
// const recentRes = await recentStore.fetchRecent({
// type: recentNSearchTabMap[tab],
// workspaceIds: [storeState.currentWorkspaceId],
// });
// if (tab !== SEARCH_TAB.SERVICE) state.recentMenuList = recentRes;
// state.loading = false;
// return;
// }

state.searchMenuList = [];
const isServiceTab = tab === SEARCH_TAB.SERVICE;
Expand All @@ -179,9 +176,9 @@ export const useTopBarSearchStore = defineStore('top-bar-search', () => {
state.loading = false;
}, 500));

watch(() => recentStore.state.totalCount, () => {
state.recentMenuList = recentStore.state.recentMenuList;
});
// watch(() => recentStore.state.totalCount, () => {
// state.recentMenuList = recentStore.state.recentMenuList;
// });


return {
Expand Down
8 changes: 4 additions & 4 deletions apps/web/src/common/modules/navigations/type.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ export const RECENT_TYPE = {
DASHBOARD: 'DASHBOARD',
CLOUD_SERVICE: 'CLOUD_SERVICE',
CLOUD_SERVICE_TYPE: 'CLOUD_SERVICE_TYPE',
COST_ANALYSIS: 'COST_ANALYSIS',
METRIC_EXPLORER: 'METRIC_EXPLORER',
SECURITY: 'SECURITY',
COST_ANALYSIS: 'COST_ANALYSIS',
WORKSPACE: 'WORKSPACE',
// METRIC_EXPLORER: 'METRIC_EXPLORER',
} as const;
export type RecentType = typeof RECENT_TYPE[keyof typeof RECENT_TYPE];
export const recentNSearchTabMap = {
Expand All @@ -23,8 +23,8 @@ export const recentNSearchTabMap = {
dashboard: RECENT_TYPE.DASHBOARD,
cloudService: RECENT_TYPE.CLOUD_SERVICE,
cloudServiceType: RECENT_TYPE.CLOUD_SERVICE_TYPE,
costAnalysis: RECENT_TYPE.COST_ANALYSIS,
metricExplorer: RECENT_TYPE.METRIC_EXPLORER,
// costAnalysis: RECENT_TYPE.COST_ANALYSIS,
// metricExplorer: RECENT_TYPE.METRIC_EXPLORER,
} as const;

export interface RecentConfig {
Expand Down
44 changes: 22 additions & 22 deletions apps/web/src/common/modules/user-config/recent/use-recent-delete.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,13 @@ import { computed } from 'vue';

import { useMutation, useQueryClient } from '@tanstack/vue-query';

import type { ListResponse } from '@/api-clients/_common/schema/api-verbs/list';
import { useUserConfigApi } from '@/api-clients/config/user-config/composables/use-user-config-api';
import { useServiceQueryKey } from '@/query/core/query-key/use-service-query-key';

import { useUserWorkspaceStore } from '@/store/app-context/workspace/user-workspace-store';

import ErrorHandler from '@/common/composables/error/errorHandler';
import type { RecentType } from '@/common/modules/navigations/type';
import type { RecentItem } from '@/common/modules/user-config/recent/use-recent-list';



Expand Down Expand Up @@ -41,27 +39,29 @@ export const useRecentDelete = () => {
onSuccess: (_, variables) => {
if (variables.name) {
const _type = variables.name.split(':')[2] as RecentType;
queryClient.setQueryData(
withSuffix(`console:recent:${_type}`),
(oldData: ListResponse<RecentItem>) => {
const newData = (oldData?.results ?? []).filter((item) => item.name !== variables.name);
return {
...oldData,
results: newData,
};
},
);
queryClient.invalidateQueries({ queryKey: withSuffix(`console:recent:${_type}`) });
// queryClient.setQueryData(
// withSuffix(`console:recent:${_type}`),
// (oldData: ListResponse<RecentItem>) => {
// const newData = (oldData?.results ?? []).filter((item) => item.name !== variables.name);
// return {
// ...oldData,
// results: newData,
// };
// },
// );
} else {
queryClient.setQueryData(
withSuffix(`console:recent:${variables.type}`),
(oldData: ListResponse<RecentItem>) => {
const newData = (oldData?.results ?? []).filter((item) => item.data.id !== variables.itemId);
return {
...oldData,
results: newData,
};
},
);
queryClient.invalidateQueries({ queryKey: withSuffix(`console:recent:${variables.type}`) });
// queryClient.setQueryData(
// withSuffix(`console:recent:${variables.type}`),
// (oldData: ListResponse<RecentItem>) => {
// const newData = (oldData?.results ?? []).filter((item) => item.data.id !== variables.itemId);
// return {
// ...oldData,
// results: newData,
// };
// },
// );
}
},
onError: (error) => {
Expand Down
25 changes: 13 additions & 12 deletions apps/web/src/common/modules/user-config/recent/use-recent-list.ts
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,8 @@ export const useRecentList = ({ limit = 15 }: UseRecentListOptions = {}) => {
{ k: 'data.id', v: MENU_ID.WORKSPACE_HOME, o: '!=' },
// NOTE: Code corresponding to data stored as 'home-dashboard'
{ k: 'data.id', v: 'home-dashboard', o: '!=' },
]).setPageLimit(limit);
]);
// .setPageLimit(limit); // TODO: find solution for this

if (currentWorkspaceId.value) {
recentListApiQuery.addFilter({ k: 'data.workspace_id', v: currentWorkspaceId.value, o: '=' });
Expand Down Expand Up @@ -184,15 +185,15 @@ export const useRecentList = ({ limit = 15 }: UseRecentListOptions = {}) => {
}),
});

const { data: metricExplorerRecentList, isFetching: isFetchingMetricExplorerRecentList } = useRecentQueryByType({
type: RECENT_TYPE.METRIC_EXPLORER,
params: computed(() => getRecentListParams.value(RECENT_TYPE.METRIC_EXPLORER)),
enabled: computed(() => {
if (!userId.value) return false;
if (!currentWorkspaceId.value) return false;
return true;
}),
});
// const { data: metricExplorerRecentList, isFetching: isFetchingMetricExplorerRecentList } = useRecentQueryByType({
// type: RECENT_TYPE.METRIC_EXPLORER,
// params: computed(() => getRecentListParams.value(RECENT_TYPE.METRIC_EXPLORER)),
// enabled: computed(() => {
// if (!userId.value) return false;
// if (!currentWorkspaceId.value) return false;
// return true;
// }),
// });

const { data: securityRecentList, isFetching: isFetchingSecurityRecentList } = useRecentQueryByType({
type: RECENT_TYPE.SECURITY,
Expand All @@ -216,7 +217,7 @@ export const useRecentList = ({ limit = 15 }: UseRecentListOptions = {}) => {
cloudServiceRecentList,
cloudServiceTypeRecentList,
costAnalysisRecentList,
metricExplorerRecentList,
// metricExplorerRecentList,
securityRecentList,
workspaceRecentLoading: isFetchingWorkspaceRecentList,
recentLoading: computed(() => isFetchingMenuRecentList.value
Expand All @@ -230,7 +231,7 @@ export const useRecentList = ({ limit = 15 }: UseRecentListOptions = {}) => {
|| isFetchingCloudServiceRecentList.value
|| isFetchingCloudServiceTypeRecentList.value
|| isFetchingCostAnalysisRecentList.value
|| isFetchingMetricExplorerRecentList.value
// || isFetchingMetricExplorerRecentList.value
|| isFetchingSecurityRecentList.value),
};
};
Expand Down
Loading
Loading