Files
jamshalat-diary/lib/data/local/models/app_settings.g.dart
Dwindi Ramadhana 4badfb6521 Notification system audit: fix 6 defects, close 5 gaps, add rich notifications (v1.1.0)
Defects fixed:
- D1: Fix notification ID range collision (report reminders 700k→2M+)
- D2: Streak risk now checks both dzikir pagi & petang
- D3: _cancelPrayerPending no longer kills non-prayer notifications
- D4: Push notifications carry deeplink in payload for proper routing
- D5: Add reconfigureTimeZoneIfNeeded() for TZ change detection
- D6: Defer launch notification routing until widget tree is ready

Gaps closed:
- G1: Add streak risk + weekly summary toggles to settings UI
- G2: Verified boot reschedule already in place (flutter_local_notifications v21)
- G3: Remove unused mirrorAdzanToInbox field and legacy cleanup calls
- G4: Add notif_push_opened analytics tracking
- G5: Add notif_settings_changed analytics tracking

Enhancements:
- O1: Rich notification with Sudah Sholat action button on report reminders
- O2: Permission check on app resume via WidgetsBindingObserver (30s throttle)
- O2b: Fix stretched notification icon (white crescent moon vector drawable)
- O3: Expired inbox cleanup in background sync
- O4: Haptic feedback on notification bell quick actions

Bump version 1.0.8+9 → 1.1.0+10
2026-06-06 22:38:02 +07:00

176 lines
6.4 KiB
Dart

// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'app_settings.dart';
// **************************************************************************
// TypeAdapterGenerator
// **************************************************************************
class AppSettingsAdapter extends TypeAdapter<AppSettings> {
@override
final int typeId = 0;
@override
AppSettings read(BinaryReader reader) {
final numOfFields = reader.readByte();
final fields = <int, dynamic>{
for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(),
};
return AppSettings(
userName: fields.containsKey(0) ? fields[0] as String? ?? '' : '',
userEmail: fields.containsKey(1) ? fields[1] as String? ?? '' : '',
themeModeIndex: fields.containsKey(2) ? fields[2] as int? ?? 0 : 0,
arabicFontSize:
fields.containsKey(3) ? fields[3] as double? ?? 26.0 : 26.0,
uiLanguage: fields.containsKey(4) ? fields[4] as String? ?? 'id' : 'id',
adhanEnabled: fields.containsKey(5)
? (fields[5] as Map?)?.cast<String, bool>()
: null,
iqamahOffset: fields.containsKey(6)
? (fields[6] as Map?)?.cast<String, int>()
: null,
checklistReminderTime:
fields.containsKey(7) ? fields[7] as String? : null,
lastLat: fields.containsKey(8) ? fields[8] as double? : null,
lastLng: fields.containsKey(9) ? fields[9] as double? : null,
lastCityName: fields.containsKey(10) ? fields[10] as String? : null,
rawatibLevel: fields.containsKey(11) ? fields[11] as int? ?? 1 : 1,
tilawahTargetValue: fields.containsKey(12) ? fields[12] as int? ?? 1 : 1,
tilawahTargetUnit:
fields.containsKey(13) ? fields[13] as String? ?? 'Juz' : 'Juz',
tilawahAutoSync:
fields.containsKey(14) ? fields[14] as bool? ?? false : false,
trackDzikir: fields.containsKey(15) ? fields[15] as bool? ?? true : true,
trackPuasa: fields.containsKey(16) ? fields[16] as bool? ?? false : false,
showLatin: fields.containsKey(17) ? fields[17] as bool? ?? true : true,
showTerjemahan:
fields.containsKey(18) ? fields[18] as bool? ?? true : true,
simpleMode: fields.containsKey(19) ? fields[19] as bool? ?? false : false,
dzikirDisplayMode:
fields.containsKey(20) ? fields[20] as String? ?? 'list' : 'list',
dzikirCounterButtonPosition: fields.containsKey(21)
? fields[21] as String? ?? 'bottomPill'
: 'bottomPill',
dzikirAutoAdvance:
fields.containsKey(22) ? fields[22] as bool? ?? true : true,
dzikirHapticOnCount:
fields.containsKey(23) ? fields[23] as bool? ?? true : true,
alertsEnabled:
fields.containsKey(24) ? fields[24] as bool? ?? true : true,
inboxEnabled: fields.containsKey(25) ? fields[25] as bool? ?? true : true,
streakRiskEnabled:
fields.containsKey(26) ? fields[26] as bool? ?? true : true,
dailyChecklistReminderEnabled:
fields.containsKey(27) ? fields[27] as bool? ?? false : false,
weeklySummaryEnabled:
fields.containsKey(28) ? fields[28] as bool? ?? true : true,
quietHoursStart:
fields.containsKey(29) ? fields[29] as String? ?? '22:00' : '22:00',
quietHoursEnd:
fields.containsKey(30) ? fields[30] as String? ?? '05:00' : '05:00',
maxNonPrayerPushPerDay:
fields.containsKey(31) ? fields[31] as int? ?? 2 : 2,
tilawahAutoContinueNextSurah:
fields.containsKey(33) ? fields[33] as bool? ?? true : true,
shalatReportReminderEnabled:
fields.containsKey(34) ? fields[34] as bool? ?? true : true,
shalatReportReminderDelayMinutes:
fields.containsKey(35) ? fields[35] as int? ?? 30 : 30,
shalatReportReminderRepeatCount:
fields.containsKey(36) ? fields[36] as int? ?? 1 : 1,
shalatReportReminderRepeatIntervalMinutes:
fields.containsKey(37) ? fields[37] as int? ?? 15 : 15,
);
}
@override
void write(BinaryWriter writer, AppSettings obj) {
writer
..writeByte(37)
..writeByte(0)
..write(obj.userName)
..writeByte(1)
..write(obj.userEmail)
..writeByte(2)
..write(obj.themeModeIndex)
..writeByte(3)
..write(obj.arabicFontSize)
..writeByte(4)
..write(obj.uiLanguage)
..writeByte(5)
..write(obj.adhanEnabled)
..writeByte(6)
..write(obj.iqamahOffset)
..writeByte(7)
..write(obj.checklistReminderTime)
..writeByte(8)
..write(obj.lastLat)
..writeByte(9)
..write(obj.lastLng)
..writeByte(10)
..write(obj.lastCityName)
..writeByte(11)
..write(obj.rawatibLevel)
..writeByte(12)
..write(obj.tilawahTargetValue)
..writeByte(13)
..write(obj.tilawahTargetUnit)
..writeByte(14)
..write(obj.tilawahAutoSync)
..writeByte(15)
..write(obj.trackDzikir)
..writeByte(16)
..write(obj.trackPuasa)
..writeByte(17)
..write(obj.showLatin)
..writeByte(18)
..write(obj.showTerjemahan)
..writeByte(19)
..write(obj.simpleMode)
..writeByte(20)
..write(obj.dzikirDisplayMode)
..writeByte(21)
..write(obj.dzikirCounterButtonPosition)
..writeByte(22)
..write(obj.dzikirAutoAdvance)
..writeByte(23)
..write(obj.dzikirHapticOnCount)
..writeByte(24)
..write(obj.alertsEnabled)
..writeByte(25)
..write(obj.inboxEnabled)
..writeByte(26)
..write(obj.streakRiskEnabled)
..writeByte(27)
..write(obj.dailyChecklistReminderEnabled)
..writeByte(28)
..write(obj.weeklySummaryEnabled)
..writeByte(29)
..write(obj.quietHoursStart)
..writeByte(30)
..write(obj.quietHoursEnd)
..writeByte(31)
..write(obj.maxNonPrayerPushPerDay)
..writeByte(33)
..write(obj.tilawahAutoContinueNextSurah)
..writeByte(34)
..write(obj.shalatReportReminderEnabled)
..writeByte(35)
..write(obj.shalatReportReminderDelayMinutes)
..writeByte(36)
..write(obj.shalatReportReminderRepeatCount)
..writeByte(37)
..write(obj.shalatReportReminderRepeatIntervalMinutes);
}
@override
int get hashCode => typeId.hashCode;
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is AppSettingsAdapter &&
runtimeType == other.runtimeType &&
typeId == other.typeId;
}