تقویمها
تقویم (Calendar) والد الزامی رویدادهاست و میتواند والد اختیاری وظیفهها هم باشد. فیلدهای اصلی: calendarType (جلالی/میلادی)، color (عدد ARGB با علامت) و isVisible (نمایش/عدم نمایش). تقویمها CRUD جداگانه ندارند؛ همهٔ نوشتنها از sync میگذرد.
نکات رفتاری که پیادهسازی کلاینت به آنها برمیخورد:
- ساخت خودکار: اولین تأیید حساب (verify-otp)، تقویم اصلی را میسازد. با این حال هر رویداد همچنان به
calendarUidمعتبر و زنده نیاز دارد. - حذف پیشفرض: تقویم پیشفرضِ زنده، حتی وقتی خالی است، حذف نمیشود و آیتم sync آن
error/default_calendarمیشود؛ اول باید تقویم دیگری پیشفرض شود. حذف تقویم غیرپیشفرضِ دارای فرزند زنده هم باhas_live_dependentsرد میشود. - بازکلید پیشفرض آفلاین: اگر کاربر آفلاین، تقویمی را پیشفرض کند که سرور آن را نمیشناسد، پاسخ sync آن
stale/default_identityاست و کلاینت باید uid محلی را به uid سروری تبدیل کند — راهنمای کامل در پاسخ push.
providerId چیست؟ عددی اختیاری/nullable برای نگاشت دلخواه به سیستم بیرونی، در بازهٔ صحیح امن JSON یعنی -9007199254740991..9007199254740991. در patch، غیبت فیلد مقدار فعلی را حفظ و null آن را پاک میکند؛ pull هم برمیگرداندش. فقط متادیتاست: اتصال به Android/Google نیست و نباید روی دستگاه دیگر معتبر فرض شود.
جدول CalendarShare در schema هست، اما API اشتراکگذاری یا pull از کاربران دیگر وجود ندارد؛ وجود جدول قابلیت فعال نیست.
مرجع دقیق فیلدها: packages/contracts/src/sync.ts.