diff --git a/apps/desktop/layer/renderer/src/modules/ai-chat/components/context-bar/blocks/ContextBlock.tsx b/apps/desktop/layer/renderer/src/modules/ai-chat/components/context-bar/blocks/ContextBlock.tsx
index 8f89522ed..2caf3e947 100644
--- a/apps/desktop/layer/renderer/src/modules/ai-chat/components/context-bar/blocks/ContextBlock.tsx
+++ b/apps/desktop/layer/renderer/src/modules/ai-chat/components/context-bar/blocks/ContextBlock.tsx
@@ -1,6 +1,8 @@
+import { views } from "@follow/constants"
import { clsx, cn } from "@follow/utils/utils"
import type { FC } from "react"
import { memo } from "react"
+import { useTranslation } from "react-i18next"
import { ImageThumbnail } from "~/modules/ai-chat/components/layouts/ImageThumbnail"
import { CircularProgress } from "~/modules/ai-chat/components/ui/UploadProgress"
@@ -13,11 +15,18 @@ import {
import { EntryTitle, FeedTitle } from "./TitleComponents"
+const blockTypeCanNotBeRemoved = new Set(["mainEntry", "mainView"])
+
export const ContextBlock: FC<{ block: AIChatContextBlock }> = memo(({ block }) => {
+ const { t } = useTranslation("common")
const blockActions = useChatBlockActions()
const getBlockIcon = () => {
switch (block.type) {
+ case "mainView": {
+ const viewIcon = views.find((v) => v.view === Number(block.value))?.icon.props.className
+ return viewIcon
+ }
case "mainEntry": {
return "i-mgc-star-cute-fi"
}
@@ -50,6 +59,10 @@ export const ContextBlock: FC<{ block: AIChatContextBlock }> = memo(({ block })
const getDisplayContent = () => {
switch (block.type) {
+ case "mainView": {
+ const viewName = views.find((v) => v.view === Number(block.value))?.name
+ return viewName ? t(viewName) : block.value
+ }
case "mainEntry":
case "referEntry": {
return
@@ -145,6 +158,9 @@ export const ContextBlock: FC<{ block: AIChatContextBlock }> = memo(({ block })
const getBlockLabel = () => {
switch (block.type) {
+ case "mainView": {
+ return ""
+ }
case "mainEntry": {
return "Current"
}
@@ -167,7 +183,7 @@ export const ContextBlock: FC<{ block: AIChatContextBlock }> = memo(({ block })
}
}
- const canRemove = block.type !== "mainEntry"
+ const canRemove = !blockTypeCanNotBeRemoved.has(block.type)
return (
fileInputRef.current?.click()
}, [])
+ const view = useRouteParamsSelector((i) => i.view)
+ const { addOrUpdateBlock, removeBlock } = useBlockActions()
+ useEffect(() => {
+ addOrUpdateBlock({
+ id: BlockSliceAction.SPECIAL_TYPES.mainView,
+ type: "mainView",
+ value: `${view}`,
+ })
+ return () => {
+ removeBlock(BlockSliceAction.SPECIAL_TYPES.mainView)
+ }
+ }, [addOrUpdateBlock, view, removeBlock])
+
return (
{/* Add Context Button */}
diff --git a/apps/desktop/layer/renderer/src/modules/ai-chat/store/slices/block.slice.ts b/apps/desktop/layer/renderer/src/modules/ai-chat/store/slices/block.slice.ts
index 8a60c6691..bbc8fc306 100644
--- a/apps/desktop/layer/renderer/src/modules/ai-chat/store/slices/block.slice.ts
+++ b/apps/desktop/layer/renderer/src/modules/ai-chat/store/slices/block.slice.ts
@@ -30,6 +30,7 @@ export class BlockSliceAction {
}
static SPECIAL_TYPES = {
+ mainView: "mainView",
mainEntry: "mainEntry",
selectedText: "selectedText",
}
diff --git a/apps/desktop/layer/renderer/src/modules/ai-chat/store/types.ts b/apps/desktop/layer/renderer/src/modules/ai-chat/store/types.ts
index ee711b3c8..f6fae174b 100644
--- a/apps/desktop/layer/renderer/src/modules/ai-chat/store/types.ts
+++ b/apps/desktop/layer/renderer/src/modules/ai-chat/store/types.ts
@@ -19,7 +19,7 @@ interface BaseContextBlock {
}
export interface ValueContextBlock extends BaseContextBlock {
- type: "mainEntry" | "referEntry" | "referFeed" | "selectedText"
+ type: "mainView" | "mainEntry" | "referEntry" | "referFeed" | "selectedText"
value: string
}