Refactor ServerSyncProvider usage in LiveCardProvider and add unregister method

This commit is contained in:
2026-03-06 10:12:16 +01:00
parent 4ec24aa69f
commit 280d3561cf
4 changed files with 28 additions and 3 deletions

View File

@@ -46,7 +46,7 @@ class LiveCardProvider extends ChangeNotifier {
late Timer _timer;
late final TimetableProvider _timetable;
late final SettingsProvider _settings;
final ServerSyncProvider _serverSync = ServerSyncProvider();
static final ServerSyncProvider serverSync = ServerSyncProvider();
late Duration _delay;
@@ -64,7 +64,7 @@ class LiveCardProvider extends ChangeNotifier {
// Token rotation figyelése: ha iOS új APNs tokent ad ki, szinkronizáljuk a szerverrel
PlatformChannel.onTokenUpdated = (pushToken, deviceId, bundleId) {
_serverSync.refreshToken(
serverSync.refreshToken(
pushToken: pushToken,
bundleId: bundleId,
liveActivityColor: '#${settings.liveActivityColor.toHexString().substring(2)}',
@@ -383,6 +383,7 @@ class LiveCardProvider extends ChangeNotifier {
nextLesson!.start.difference(now).inMinutes > 60) {
debugPrint("Több, mint 1 óra van az első óráig. Befejezés...");
PlatformChannel.endLiveActivity();
serverSync.unregister();
hasActivityStarted = false;
} else if (hasActivityStarted &&
!hasDayEnd &&
@@ -390,6 +391,7 @@ class LiveCardProvider extends ChangeNotifier {
now.isAfter(prevLesson!.end)) {
debugPrint("Az utolsó óra véget ért. Befejezés...");
PlatformChannel.endLiveActivity();
serverSync.unregister();
hasDayEnd = true;
hasActivityStarted = false;
}
@@ -404,7 +406,7 @@ class LiveCardProvider extends ChangeNotifier {
final deviceId = result['deviceId'] ?? '';
final bundleId = result['bundleId'] ?? '';
if (pushToken.isNotEmpty && deviceId.isNotEmpty) {
await _serverSync.registerAndSync(
await serverSync.registerAndSync(
deviceId: deviceId,
pushToken: pushToken,
bundleId: bundleId,

View File

@@ -123,6 +123,27 @@ class ServerSyncProvider {
}
}
Future<void> unregister() async {
if (_deviceId == null) return;
try {
final client = HttpClient();
final uri = Uri.parse('$_baseUrl/unregister');
final request = await client.postUrl(uri);
request.headers.contentType = ContentType.json;
request.write(jsonEncode({'device_id': _deviceId}));
final response =
await request.close().timeout(const Duration(seconds: 10));
if (response.statusCode == 200) {
debugPrint('ServerSync: schedule törölve (unregister)');
} else {
debugPrint('ServerSync unregister hiba: ${response.statusCode}');
}
client.close();
} catch (e) {
debugPrint('ServerSync unregister kivétel: $e');
}
}
List<Lesson> _filterLessons(List<Lesson> lessons) {
return lessons
.where((l) =>

View File

@@ -153,6 +153,7 @@ Future<void> syncAll(BuildContext context) async {
if (Platform.isIOS && LiveCardProvider.hasActivityStarted == true) {
PlatformChannel.endLiveActivity();
LiveCardProvider.serverSync.unregister();
LiveCardProvider.hasActivityStarted = false;
}

View File

@@ -10,6 +10,7 @@ class LiveActivityHelper {
await PlatformChannel.updateLiveActivity(LiveCardProvider.LAData);
} else {
await PlatformChannel.endLiveActivity();
LiveCardProvider.serverSync.unregister();
}
}
}