diff --git a/packages/app/src/components/dialog-edit-project.tsx b/packages/app/src/components/dialog-edit-project.tsx
index 2f0f7db1f6..8d389cef7c 100644
--- a/packages/app/src/components/dialog-edit-project.tsx
+++ b/packages/app/src/components/dialog-edit-project.tsx
@@ -3,15 +3,20 @@ import { useDialog } from "@opencode-ai/ui/context/dialog"
import { Dialog } from "@opencode-ai/ui/dialog"
import { TextField } from "@opencode-ai/ui/text-field"
import { Icon } from "@opencode-ai/ui/icon"
+import { Avatar } from "@opencode-ai/ui/avatar"
import { createMemo, createSignal, For, Show } from "solid-js"
import { createStore } from "solid-js/store"
import { useGlobalSDK } from "@/context/global-sdk"
import { type LocalProject, getAvatarColors } from "@/context/layout"
-import { getFilename } from "@opencode-ai/util/path"
-import { Avatar } from "@opencode-ai/ui/avatar"
+import { ProjectIcon, isValidImageFile } from "@/components/project-icon"
const AVATAR_COLOR_KEYS = ["pink", "mint", "orange", "purple", "cyan", "lime"] as const
+function getFilename(input: string) {
+ const parts = input.split("/")
+ return parts[parts.length - 1] || input
+}
+
export function DialogEditProject(props: { project: LocalProject }) {
const dialog = useDialog()
const globalSDK = useGlobalSDK()
@@ -29,9 +34,11 @@ export function DialogEditProject(props: { project: LocalProject }) {
const [dragOver, setDragOver] = createSignal(false)
function handleFileSelect(file: File) {
- if (!file.type.startsWith("image/")) return
+ if (!isValidImageFile(file)) return
const reader = new FileReader()
- reader.onload = (e) => setStore("iconUrl", e.target?.result as string)
+ reader.onload = (e) => {
+ setStore("iconUrl", e.target?.result as string)
+ }
reader.readAsDataURL(file)
}
@@ -94,7 +101,7 @@ export function DialogEditProject(props: { project: LocalProject }) {
document.getElementById("icon-upload")?.click()}
>
-
-
-
- }
- >
-

-
+