Scaffold backend gateway and integration docs

This commit is contained in:
Rijad Zuzo
2026-02-14 20:10:16 +01:00
commit 577c4b33b7
166 changed files with 13382 additions and 0 deletions
+20
View File
@@ -0,0 +1,20 @@
import 'package:relationship_saver/core/auth/token_store.dart';
import 'package:relationship_saver/integrations/backend/models/backend_models.dart';
/// Simple in-memory [TokenStore] used in tests and local fakes.
class InMemoryTokenStore implements TokenStore {
AuthSession? _session;
@override
Future<void> clear() async {
_session = null;
}
@override
Future<AuthSession?> read() async => _session;
@override
Future<void> write(AuthSession session) async {
_session = session;
}
}
+39
View File
@@ -0,0 +1,39 @@
import 'dart:convert';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:relationship_saver/core/auth/token_store.dart';
import 'package:relationship_saver/integrations/backend/models/backend_models.dart';
/// [TokenStore] backed by platform secure storage.
class SecureTokenStore implements TokenStore {
SecureTokenStore({FlutterSecureStorage? storage})
: _storage = storage ?? const FlutterSecureStorage();
static const String _sessionKey = 'backend_auth_session_v1';
final FlutterSecureStorage _storage;
@override
Future<AuthSession?> read() async {
final String? raw = await _storage.read(key: _sessionKey);
if (raw == null || raw.isEmpty) {
return null;
}
try {
final Map<String, dynamic> json = jsonDecode(raw) as Map<String, dynamic>;
return AuthSession.fromJson(json);
} on FormatException {
await clear();
return null;
}
}
@override
Future<void> write(AuthSession session) async {
final String raw = jsonEncode(session.toJson());
await _storage.write(key: _sessionKey, value: raw);
}
@override
Future<void> clear() => _storage.delete(key: _sessionKey);
}
+13
View File
@@ -0,0 +1,13 @@
import 'package:relationship_saver/integrations/backend/models/backend_models.dart';
/// Session token persistence abstraction.
abstract interface class TokenStore {
/// Reads the current session, if any.
Future<AuthSession?> read();
/// Persists a full auth session.
Future<void> write(AuthSession session);
/// Clears all stored auth state.
Future<void> clear();
}