feat: Add auto-sync, fix partner linking UI, update sharing settings

- Add 10-second periodic auto-sync to CycleEntriesNotifier
- Fix husband_devotional_screen: use partnerId for isConnected check, navigate to SharingSettingsScreen instead of legacy mock dialog
- Remove obsolete _showConnectDialog method and mock data import
- Update husband_settings_screen: show 'Partner Settings' with linked partner name when connected
- Add SharingSettingsScreen: Pad Supplies toggle (disabled when pad tracking off), Intimacy always enabled
- Add CORS OPTIONS handler to backend server
- Add _ensureServerRegistration for reliable partner linking
- Add copy button to Invite Partner dialog
- Dynamic base URL for web (uses window.location.hostname)
This commit is contained in:
2026-01-09 17:20:49 -06:00
parent d28898cb81
commit 1c2c56e9e2
21 changed files with 1690 additions and 493 deletions

View File

@@ -0,0 +1,53 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'prayer_request.dart';
// **************************************************************************
// TypeAdapterGenerator
// **************************************************************************
class PrayerRequestAdapter extends TypeAdapter<PrayerRequest> {
@override
final int typeId = 15;
@override
PrayerRequest read(BinaryReader reader) {
final numOfFields = reader.readByte();
final fields = <int, dynamic>{
for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(),
};
return PrayerRequest(
id: fields[0] as String,
request: fields[1] as String,
isAnswered: fields[2] as bool,
createdAt: fields[3] as DateTime,
updatedAt: fields[4] as DateTime,
);
}
@override
void write(BinaryWriter writer, PrayerRequest obj) {
writer
..writeByte(5)
..writeByte(0)
..write(obj.id)
..writeByte(1)
..write(obj.request)
..writeByte(2)
..write(obj.isAnswered)
..writeByte(3)
..write(obj.createdAt)
..writeByte(4)
..write(obj.updatedAt);
}
@override
int get hashCode => typeId.hashCode;
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is PrayerRequestAdapter &&
runtimeType == other.runtimeType &&
typeId == other.typeId;
}