رفتن به محتوای اصلی

تقویم‌ها

تقویم (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.