feat(core): duplicated calendar subscription notification (#12364)

This commit is contained in:
CatsJuice
2025-05-21 03:04:01 +00:00
parent 14cba1be17
commit 1831d291f1
5 changed files with 30 additions and 1 deletions

View File

@@ -55,9 +55,20 @@ const AddSubscription = () => {
}, []);
const handleAddSub = useCallback(() => {
const _url = url.trim();
const exists = calendar.getSubscription(_url);
if (exists) {
notify.error({
title: t['com.affine.integration.calendar.new-duplicate-error-title'](),
message:
t['com.affine.integration.calendar.new-duplicate-error-content'](),
});
return;
}
setVerifying(true);
calendar
.createSubscription(url)
.createSubscription(_url)
.then(() => {
setOpen(false);
setUrl('');

View File

@@ -106,6 +106,10 @@ export class CalendarIntegration extends Entity {
}
}
getSubscription(url: string) {
return this.store.getSubscription(url);
}
deleteSubscription(url: string) {
this.store.removeSubscription(url);
}

View File

@@ -99,6 +99,10 @@ export class CalendarStore extends Store {
);
}
getSubscription(url: string) {
return this.getSubscriptionMap()[url];
}
watchSubscriptionCache(url: string) {
return this.cacheStorage.watch<string>(this.getCacheKey(url));
}

View File

@@ -7906,6 +7906,14 @@ export function useAFFiNEI18N(): {
* `Calendar URL`
*/
["com.affine.integration.calendar.new-url-label"](): string;
/**
* `This is a duplicate calendar`
*/
["com.affine.integration.calendar.new-duplicate-error-title"](): string;
/**
* `This subscription calendar already exists in the account of subscribed calendars.`
*/
["com.affine.integration.calendar.new-duplicate-error-content"](): string;
/**
* `An error occurred while adding the calendar`
*/

View File

@@ -1979,6 +1979,8 @@
"com.affine.integration.calendar.unsubscribe": "Unsubscribe",
"com.affine.integration.calendar.new-title": "Add a calendar by URL",
"com.affine.integration.calendar.new-url-label": "Calendar URL",
"com.affine.integration.calendar.new-duplicate-error-title": "This is a duplicate calendar",
"com.affine.integration.calendar.new-duplicate-error-content": "This subscription calendar already exists in the account of subscribed calendars.",
"com.affine.integration.calendar.new-error": "An error occurred while adding the calendar",
"com.affine.integration.calendar.all-day": "All day",
"com.affine.integration.calendar.new-doc": "New doc",