diff --git a/packages/frontend/core/src/desktop/dialogs/setting/workspace-setting/integration/calendar/subscription-setting.css.ts b/packages/frontend/core/src/desktop/dialogs/setting/workspace-setting/integration/calendar/subscription-setting.css.ts index 497234b8eb..ca76668c04 100644 --- a/packages/frontend/core/src/desktop/dialogs/setting/workspace-setting/integration/calendar/subscription-setting.css.ts +++ b/packages/frontend/core/src/desktop/dialogs/setting/workspace-setting/integration/calendar/subscription-setting.css.ts @@ -80,6 +80,9 @@ export const name = style({ textOverflow: 'ellipsis', overflow: 'hidden', whiteSpace: 'nowrap', + padding: '0px 4px', + display: 'inline-flex', + alignItems: 'center', }); export const allDayEventsContainer = style({ diff --git a/packages/frontend/core/src/desktop/dialogs/setting/workspace-setting/integration/calendar/subscription-setting.tsx b/packages/frontend/core/src/desktop/dialogs/setting/workspace-setting/integration/calendar/subscription-setting.tsx index ce2c52987e..acd17fea7c 100644 --- a/packages/frontend/core/src/desktop/dialogs/setting/workspace-setting/integration/calendar/subscription-setting.tsx +++ b/packages/frontend/core/src/desktop/dialogs/setting/workspace-setting/integration/calendar/subscription-setting.tsx @@ -1,4 +1,4 @@ -import { Button, Menu, useConfirmModal } from '@affine/component'; +import { Button, InlineEdit, Menu, useConfirmModal } from '@affine/component'; import { type CalendarSubscription, IntegrationService, @@ -41,6 +41,13 @@ export const SubscriptionSetting = ({ }); }, [calendar, subscription.url, config?.showAllDayEvents]); + const handleNameChange = useCallback( + (value: string) => { + calendar.updateSubscription(subscription.url, { name: value }); + }, + [calendar, subscription.url] + ); + if (!config) return null; return ( @@ -61,7 +68,13 @@ export const SubscriptionSetting = ({ style={{ color: config.color }} /> -
{name}
+
diff --git a/packages/frontend/core/src/modules/integration/entities/calendar-subscription.ts b/packages/frontend/core/src/modules/integration/entities/calendar-subscription.ts index fd99a9d20c..b619a33668 100644 --- a/packages/frontend/core/src/modules/integration/entities/calendar-subscription.ts +++ b/packages/frontend/core/src/modules/integration/entities/calendar-subscription.ts @@ -32,7 +32,12 @@ export class CalendarSubscription extends Entity<{ url: string }> { this.store.watchSubscriptionCache(this.props.url), '' ); - name$ = this.content$.selector(content => { + name$ = LiveData.computed(get => { + const config = get(this.config$); + if (config?.name !== undefined) { + return config.name; + } + const content = get(this.content$); if (!content) return ''; try { const jCal = ICAL.parse(content ?? ''); @@ -42,6 +47,7 @@ export class CalendarSubscription extends Entity<{ url: string }> { return ''; } }); + eventsByDateMap$ = LiveData.computed(get => { const content = get(this.content$); const config = get(this.config$); diff --git a/packages/frontend/core/src/modules/integration/store/calendar.ts b/packages/frontend/core/src/modules/integration/store/calendar.ts index 3c423c4754..0cb78234e4 100644 --- a/packages/frontend/core/src/modules/integration/store/calendar.ts +++ b/packages/frontend/core/src/modules/integration/store/calendar.ts @@ -8,6 +8,7 @@ import type { WorkspaceService } from '../../workspace'; export interface CalendarSubscriptionConfig { color: string; + name?: string; showEvents?: boolean; showAllDayEvents?: boolean; }