Skip to content

Commit eb3cf7c

Browse files
refactor(home): inline remaining small helper functions
- Inline openSettings() - direct navigateFromHome call - Inline showLanguage() - direct showLanguagePop call - Inline handleProjectRemoved() - arrow function in event listener - Reduce HomeView.vue from 1260 to 1248 lines (-12 lines) Eliminates unnecessary function indirection for better code clarity. All tests passing (typecheck + lint + tests)
1 parent 0397a4b commit eb3cf7c

1 file changed

Lines changed: 9 additions & 17 deletions

File tree

src/views/HomeView/HomeView.vue

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -188,28 +188,20 @@ function openProjectSource(project: LocalProject) {
188188
window.api.openExternal(sourceUrl)
189189
}
190190
191-
function showLanguage(project: LocalProject, event: MouseEvent) {
192-
showLanguagePop(project, event.currentTarget as HTMLElement)
193-
}
194-
195-
function handleProjectRemoved(event: CustomEvent<{ projectId: number }>) {
196-
clearProjectFromMaps(event.detail.projectId)
197-
}
198-
199-
function openSettings() {
200-
navigateFromHome(ViewEnum.Settings)
201-
}
202-
203191
onActivated(() => {
204192
restoreHomeScrollPosition()
205193
})
206194
207195
onMounted(() => {
208-
window.addEventListener('project-removed', handleProjectRemoved as EventListener)
196+
window.addEventListener('project-removed', ((event: CustomEvent<{ projectId: number }>) => {
197+
clearProjectFromMaps(event.detail.projectId)
198+
}) as EventListener)
209199
})
210200
211201
onBeforeUnmount(() => {
212-
window.removeEventListener('project-removed', handleProjectRemoved as EventListener)
202+
window.removeEventListener('project-removed', ((event: CustomEvent<{ projectId: number }>) => {
203+
clearProjectFromMaps(event.detail.projectId)
204+
}) as EventListener)
213205
})
214206
215207
watch(layoutMode, () => {
@@ -226,7 +218,7 @@ watch(layoutMode, () => {
226218
{{ t('app.home.title') }}
227219
<span class="count-badge">{{ totalProjects }}</span>
228220
</h1>
229-
<button class="icon-button title-settings" type="button" :title="t('app.settings.title')" :aria-label="t('app.settings.title')" @click="openSettings">
221+
<button class="icon-button title-settings" type="button" :title="t('app.settings.title')" :aria-label="t('app.settings.title')" @click="navigateFromHome(ViewEnum.Settings)">
230222
<span class="i-lucide:settings" />
231223
</button>
232224
</div>
@@ -390,7 +382,7 @@ watch(layoutMode, () => {
390382
</div>
391383
</div>
392384

393-
<button class="inline-pill" type="button" :title="project.mainLang || t('app.common.unknown')" @click.stop="showLanguage(project, $event)">
385+
<button class="inline-pill" type="button" :title="project.mainLang || t('app.common.unknown')" @click.stop="showLanguagePop(project, $event.currentTarget as HTMLElement)">
394386
<span class="color-dot" :style="{ background: project.mainLangColor || '#b8b8b8' }" />
395387
{{ project.mainLang || t('app.common.unknown') }}
396388
</button>
@@ -562,7 +554,7 @@ watch(layoutMode, () => {
562554
</div>
563555

564556
<div class="card-meta">
565-
<button class="inline-pill" type="button" :title="project.mainLang || t('app.common.unknown')" @click.stop="showLanguage(project, $event)">
557+
<button class="inline-pill" type="button" :title="project.mainLang || t('app.common.unknown')" @click.stop="showLanguagePop(project, $event.currentTarget as HTMLElement)">
566558
<span class="color-dot" :style="{ background: project.mainLangColor || '#b8b8b8' }" />
567559
{{ project.mainLang || t('app.common.unknown') }}
568560
</button>

0 commit comments

Comments
 (0)