added guardian login with views for their assigned childs
This commit is contained in:
@@ -8,8 +8,8 @@ import 'package:flutter_local_notifications/flutter_local_notifications.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
|
||||
import '../api/marianumcloud/nextcloud_ocs.dart';
|
||||
import '../model/account_data.dart';
|
||||
import '../notification/notification_service.dart';
|
||||
import '../session/session_manager.dart';
|
||||
import 'chat_thread_store.dart';
|
||||
import 'nid_store.dart';
|
||||
import 'push_renderer.dart';
|
||||
@@ -38,7 +38,7 @@ void _plog(String message) {
|
||||
/// Handles Talk notification actions (inline reply, mark-as-read). Runs in the
|
||||
/// background isolate spawned by flutter_local_notifications, so it may not
|
||||
/// share any app state — it reads credentials straight from secure storage via
|
||||
/// the [AccountData] singleton after awaiting population.
|
||||
/// the [SessionManager] singleton after awaiting the stored session.
|
||||
///
|
||||
/// The class-level `vm:entry-point` pragma is REQUIRED in addition to the one
|
||||
/// on [handleBackgroundResponse]: the callback is resolved via
|
||||
@@ -56,7 +56,7 @@ class PushActions {
|
||||
) async {
|
||||
// The FLN action isolate starts WITHOUT main(): unlike the FCM background
|
||||
// isolate, plugins are not registered automatically there. Without this,
|
||||
// AccountData's secure-storage/prefs reads throw or never complete → no
|
||||
// The session's secure-storage/prefs reads throw or never complete → no
|
||||
// auth header, the Talk POST never happens and the RemoteInput spinner
|
||||
// runs forever.
|
||||
DartPluginRegistrant.ensureInitialized();
|
||||
@@ -125,7 +125,8 @@ class PushActions {
|
||||
/// any) followed by the technical reason.
|
||||
static String actionFailureBody({String? lostText, required String detail}) {
|
||||
return [
|
||||
if (lostText != null && lostText.isNotEmpty) 'Deine Nachricht: „$lostText“',
|
||||
if (lostText != null && lostText.isNotEmpty)
|
||||
'Deine Nachricht: „$lostText“',
|
||||
'Grund: $detail',
|
||||
].join('\n');
|
||||
}
|
||||
@@ -188,7 +189,10 @@ class PushActions {
|
||||
static Future<({bool ok, String detail})> sendReply(
|
||||
String chatToken,
|
||||
String message,
|
||||
) => _ocsPost('apps/spreed/api/v1/chat/$chatToken', body: {'message': message});
|
||||
) => _ocsPost(
|
||||
'apps/spreed/api/v1/chat/$chatToken',
|
||||
body: {'message': message},
|
||||
);
|
||||
|
||||
static Future<({bool ok, String detail})> markRead(String chatToken) =>
|
||||
_ocsPost('apps/spreed/api/v1/chat/$chatToken/read');
|
||||
@@ -200,10 +204,10 @@ class PushActions {
|
||||
try {
|
||||
// Bounded: a hanging population (e.g. keystore issue) must fail the
|
||||
// action instead of leaving the notification spinner running forever.
|
||||
final populated = await AccountData().waitForPopulation().timeout(
|
||||
final session = await SessionManager().waitForLoad().timeout(
|
||||
const Duration(seconds: 10),
|
||||
);
|
||||
if (!populated) {
|
||||
if (session?.nextcloud == null) {
|
||||
_plog('Push action $path aborted: credentials unreadable in isolate');
|
||||
return (
|
||||
ok: false,
|
||||
|
||||
Reference in New Issue
Block a user