# Common Integration Patterns

**Purpose:** Common patterns and best practices for Daily Notification Plugin integration.  
**Owner:** Development Team  
**Last Updated:** 2025-12-22  
**Status:** active

---

## Error Handling

```typescript
import { DailyNotification, DailyNotificationError, ErrorCode } from '@timesafari/daily-notification-plugin';

try {
  await DailyNotification.createSchedule({
    id: 'daily-morning',
    kind: 'notify',
    clockTime: '09:00',
    enabled: true
  });
} catch (error) {
  if (error instanceof DailyNotificationError) {
    switch (error.code) {
      case ErrorCode.PERMISSION_DENIED:
        // Request permission first
        await DailyNotification.requestPermission();
        break;
      case ErrorCode.INVALID_TIME_FORMAT:
        // Fix time format (use HH:mm)
        console.error('Invalid time format');
        break;
      default:
        console.error('Error:', error.message);
    }
  }
}
```

## Scheduling Multiple Notifications

```typescript
const times = ['09:00', '12:00', '18:00'];

for (const time of times) {
  await DailyNotification.createSchedule({
    id: `daily-${time.replace(':', '')}`,
    kind: 'notify',
    clockTime: time,
    enabled: true
  });
}
```

## Checking Schedule Status

```typescript
const { schedules } = await DailyNotification.getSchedulesWithStatus();

schedules.forEach(schedule => {
  console.log(`${schedule.id}: ${schedule.status} (scheduled: ${schedule.isActuallyScheduled})`);
});
```

## Recovery After App Restart

The plugin automatically recovers missed notifications on app launch. To check recovery status:

```typescript
// Recovery happens automatically on app launch
// Check history for recovery events
const { history } = await DailyNotification.getHistory({
  kind: 'recovery',
  limit: 10
});
```

---

**See also:**
- [Quick Start](./QUICK_START.md) — Minimal working example
- [Integration Guide](../integration/INTEGRATION_GUIDE.md) — Full integration guide

