summaryrefslogtreecommitdiffhomepage
path: root/packages/app/src/components
diff options
context:
space:
mode:
authorBrendan Allan <[email protected]>2026-04-22 17:09:00 +0800
committerAiden Cline <[email protected]>2026-04-23 00:25:37 -0400
commitd884ab73d5516d301a740b2bdea174f6b485d6dc (patch)
tree948ff240c9ffb99919d8c3be1c7c48d8091f4da1 /packages/app/src/components
parent71d196d3cd06d0efef7a319f43955c7cefc36e09 (diff)
downloadopencode-d884ab73d5516d301a740b2bdea174f6b485d6dc.tar.gz
opencode-d884ab73d5516d301a740b2bdea174f6b485d6dc.zip
fix: consolidate project avatar source logic (#23819)
Diffstat (limited to 'packages/app/src/components')
-rw-r--r--packages/app/src/components/dialog-edit-project.tsx20
1 files changed, 14 insertions, 6 deletions
diff --git a/packages/app/src/components/dialog-edit-project.tsx b/packages/app/src/components/dialog-edit-project.tsx
index 621d56646..8eb12daf5 100644
--- a/packages/app/src/components/dialog-edit-project.tsx
+++ b/packages/app/src/components/dialog-edit-project.tsx
@@ -12,6 +12,7 @@ import { type LocalProject, getAvatarColors } from "@/context/layout"
import { getFilename } from "@opencode-ai/shared/util/path"
import { Avatar } from "@opencode-ai/ui/avatar"
import { useLanguage } from "@/context/language"
+import { getProjectAvatarSource } from "@/pages/layout/sidebar-items"
const AVATAR_COLOR_KEYS = ["pink", "mint", "orange", "purple", "cyan", "lime"] as const
@@ -144,7 +145,11 @@ export function DialogEditProject(props: { project: LocalProject }) {
}}
>
<Show
- when={store.iconOverride || (!store.color && props.project.icon?.url)}
+ when={getProjectAvatarSource(props.project.id, {
+ color: store.color,
+ url: props.project.icon?.url,
+ override: store.iconOverride,
+ })}
fallback={
<div class="size-full flex items-center justify-center">
<Avatar
@@ -155,11 +160,13 @@ export function DialogEditProject(props: { project: LocalProject }) {
</div>
}
>
- <img
- src={store.iconOverride || props.project.icon?.url}
- alt={language.t("dialog.project.edit.icon.alt")}
- class="size-full object-cover"
- />
+ {(src) => (
+ <img
+ src={src()}
+ alt={language.t("dialog.project.edit.icon.alt")}
+ class="size-full object-cover"
+ />
+ )}
</Show>
</div>
<div
@@ -216,6 +223,7 @@ export function DialogEditProject(props: { project: LocalProject }) {
store.color !== color,
}}
onClick={() => {
+ if (store.color === color && !props.project.icon?.url) return
setStore("color", store.color === color ? undefined : color)
}}
>