Skip to content

Commit 60847bd

Browse files
committed
Fixed: Fix the issue of retrieving data on the favorites page.
1 parent c4a03dd commit 60847bd

4 files changed

Lines changed: 81 additions & 62 deletions

File tree

src-tauri/src/service/asset.rs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -104,11 +104,15 @@ impl AssetService {
104104
info!("Cookie: {}", self.cookie_header);
105105
info!("query: {:?}", self.query);
106106

107-
let (r#type, category) = match self.query.get_category() {
108-
Category::Linux => (Some(Category::Linux), None),
109-
Category::Windows => (Some(Category::Windows), None),
110-
Category::Database => (None, Some(Category::Database)),
111-
Category::Device => (None, Some(Category::Device)),
107+
let (r#type, category) = if favorite {
108+
(None, None)
109+
} else {
110+
match self.query.get_category() {
111+
Category::Linux => (Some(Category::Linux), None),
112+
Category::Windows => (Some(Category::Windows), None),
113+
Category::Database => (None, Some(Category::Database)),
114+
Category::Device => (None, Some(Category::Device)),
115+
}
112116
};
113117

114118
let query = AssetQuery {

ui/components/AssetContextMenu/contextMenu.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ const menuItems = computed((): MenuItem[] => {
5656
},
5757
{
5858
label: isFavorited.value ? t("ContextMenu.Unfavorite") : t("ContextMenu.Favorite"),
59-
icon: isFavorited.value ? "lucide:star-off" : "i-lucide-star",
59+
icon: isFavorited.value ? "lucide:star-off" : "lucide:star",
6060
onClick: () => (isFavorited.value ? handleUnfavorite() : handleFavorite())
6161
}
6262
];

ui/components/Card/TableCard/tableCard.vue

Lines changed: 69 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -44,65 +44,63 @@ const contextMenuAsset = ref<AssetItem | null>(null);
4444
const renameInputEl = ref<HTMLInputElement | null>(null);
4545
const actionMenuOpen = reactive<Record<string, boolean>>({});
4646
47-
/**
48-
* @description 下拉菜单选项
49-
* @param asset
50-
*/
51-
const buildMenuItems = (asset: AssetItem): MenuItem[] => {
52-
const protocols = (asset.permedProtocols || []).map((p: any) => p.name);
53-
const uniqueProtocols = Array.from(new Set(protocols));
47+
const buildMenuItems = computed(() => {
48+
return (asset: AssetItem): MenuItem[] => {
49+
const protocols = (asset.permedProtocols || []).map((p: any) => p.name);
50+
const uniqueProtocols = Array.from(new Set(protocols));
5451
55-
const items: MenuItem[] = [
56-
{
57-
value: "connect",
58-
label: t("ContextMenu.Connect"),
59-
icon: "i-lucide-plug",
60-
onClick: () => emits("connectTrigger", asset)
61-
},
62-
{
63-
label: t("ContextMenu.Edit"),
64-
icon: "solar:pen-new-square-linear",
65-
onClick: () => emits("editTrigger", asset)
66-
},
67-
{
68-
label: t("ContextMenu.Rename"),
69-
icon: "i-lucide-pencil",
70-
onClick: () => handleRenameTrigger(asset)
71-
},
72-
{
73-
label: asset.isFavorite ? t("ContextMenu.Unfavorite") : t("ContextMenu.Favorite"),
74-
icon: "i-lucide-star",
75-
onClick: () => (asset.isFavorite ? handleAssetUnfavorite(asset.id) : handleAssetFavorite(asset.id))
76-
}
77-
];
52+
const items: MenuItem[] = [
53+
{
54+
value: "connect",
55+
label: t("ContextMenu.Connect"),
56+
icon: "i-lucide-plug",
57+
onClick: () => emits("connectTrigger", asset)
58+
},
59+
{
60+
label: t("ContextMenu.Edit"),
61+
icon: "solar:pen-new-square-linear",
62+
onClick: () => emits("editTrigger", asset)
63+
},
64+
{
65+
label: t("ContextMenu.Rename"),
66+
icon: "i-lucide-pencil",
67+
onClick: () => handleRenameTrigger(asset)
68+
},
69+
{
70+
label: asset.isFavorite ? t("ContextMenu.Unfavorite") : t("ContextMenu.Favorite"),
71+
icon: asset.isFavorite ? "lucide:star-off" : "lucide:star",
72+
onClick: () => (asset.isFavorite ? handleUnfavorite(asset) : handleFavorite(asset))
73+
}
74+
];
7875
79-
if (uniqueProtocols.length > 1) {
80-
const protocolItems: MenuItem[] = uniqueProtocols.map((name: string) => ({
81-
label: `${t("ContextMenu.Use")} ${name.toUpperCase()}`,
82-
icon: "i-lucide-plug",
83-
onClick: () =>
84-
handleAssetConnection(
85-
displayUser(asset.id, asset.permedAccounts!),
86-
asset.id,
87-
displayProtocol(asset.id, asset.permedProtocols!),
88-
asset.permedAccounts!,
89-
name
90-
)
91-
}));
76+
if (uniqueProtocols.length > 1) {
77+
const protocolItems: MenuItem[] = uniqueProtocols.map((name: string) => ({
78+
label: `${t("ContextMenu.Use")} ${name.toUpperCase()}`,
79+
icon: "i-lucide-plug",
80+
onClick: () =>
81+
handleAssetConnection(
82+
displayUser(asset.id, asset.permedAccounts!),
83+
asset.id,
84+
displayProtocol(asset.id, asset.permedProtocols!),
85+
asset.permedAccounts!,
86+
name
87+
)
88+
}));
9289
93-
const moreConnect: MenuItem = {
94-
value: "moreConnect",
95-
label: t("ContextMenu.MoreConnect"),
96-
icon: "i-lucide-ellipsis",
97-
onClick: () => void 0,
98-
children: protocolItems
99-
};
90+
const moreConnect: MenuItem = {
91+
value: "moreConnect",
92+
label: t("ContextMenu.MoreConnect"),
93+
icon: "i-lucide-ellipsis",
94+
onClick: () => void 0,
95+
children: protocolItems
96+
};
10097
101-
items.splice(1, 0, moreConnect);
102-
}
98+
items.splice(1, 0, moreConnect);
99+
}
103100
104-
return items;
105-
};
101+
return items;
102+
};
103+
});
106104
107105
/**
108106
* @description 处理上下文事件
@@ -111,6 +109,22 @@ const handleContextTrigger = (asset: AssetItem) => {
111109
emits("contextTrigger", asset);
112110
};
113111
112+
const emitFavoriteChanged = (assetId: string, favorite: boolean) => {
113+
try {
114+
useEventBus().emit("favoriteChanged", { assetId, favorite });
115+
} catch {}
116+
};
117+
118+
const handleFavorite = (asset: AssetItem) => {
119+
handleAssetFavorite(asset.id);
120+
emitFavoriteChanged(asset.id, true);
121+
};
122+
123+
const handleUnfavorite = (asset: AssetItem) => {
124+
handleAssetUnfavorite(asset.id);
125+
emitFavoriteChanged(asset.id, false);
126+
};
127+
114128
/**
115129
* @description 触发重命名
116130
*/
@@ -229,7 +243,7 @@ const columns: TableColumn<AssetItem>[] = [
229243
id: "actions",
230244
header: () => t("AssetCard.Actions"),
231245
cell: ({ row }) => {
232-
const menuItems = buildMenuItems(row.original);
246+
const menuItems = buildMenuItems.value(row.original);
233247
234248
return h(
235249
UFieldGroup,

ui/composables/useAssetFetcher.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ export const useAssetFetcher = (assetType: string, scrollRef?: Ref<HTMLElement |
104104
const onScroll = () => {
105105
if (!hasMore.value || isLoading.value) return;
106106

107-
// 元素内容的总高度 - 元素内容被卷起(向上滚动)的距离 - 元素可视区域的高度
107+
// 元素内容的总高度 - 元素内容被卷起(向上滚动)的距离 - 元素可视区域的高度
108108
const distanceToBottom = el.scrollHeight - el.scrollTop - el.clientHeight;
109109

110110
if (distanceToBottom <= 50) {
@@ -191,6 +191,7 @@ export const useAssetFetcher = (assetType: string, scrollRef?: Ref<HTMLElement |
191191
const filterResultsByAssetType = (items: RawAssetData[]) => {
192192
switch (assetType) {
193193
case "favorite":
194+
console.log(items);
194195
return items;
195196
case "linux":
196197
return items.filter((it) => {

0 commit comments

Comments
 (0)