feat: improve patient flow and pricing workflow
This commit is contained in:
@@ -1,25 +1,67 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:pocketbase/pocketbase.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
const _kAuthKey = 'pb_auth';
|
||||
const _kRememberSessionKey = 'remember_session';
|
||||
|
||||
class PocketBaseClient {
|
||||
PocketBaseClient._({required this.pb});
|
||||
PocketBaseClient._({
|
||||
required this.pb,
|
||||
required SharedPreferences prefs,
|
||||
required bool rememberSession,
|
||||
}) : _prefs = prefs,
|
||||
_rememberSession = rememberSession;
|
||||
static PocketBaseClient? _instance;
|
||||
static PocketBaseClient get instance => _instance!;
|
||||
final PocketBase pb;
|
||||
final SharedPreferences _prefs;
|
||||
bool _rememberSession;
|
||||
|
||||
bool get rememberSession => _rememberSession;
|
||||
|
||||
static Future<void> init() async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
final remember = prefs.getBool(_kRememberSessionKey) ?? true;
|
||||
final stored = prefs.getString(_kAuthKey);
|
||||
|
||||
final store = AsyncAuthStore(
|
||||
save: (String data) => prefs.setString(_kAuthKey, data),
|
||||
initial: stored,
|
||||
save: (String data) async {
|
||||
final client = _instance;
|
||||
if (client == null || client._rememberSession) {
|
||||
await prefs.setString(_kAuthKey, data);
|
||||
return;
|
||||
}
|
||||
await prefs.remove(_kAuthKey);
|
||||
},
|
||||
initial: remember ? stored : null,
|
||||
);
|
||||
|
||||
_instance = PocketBaseClient._(
|
||||
pb: PocketBase('https://pocket.kovaksoft.com', authStore: store),
|
||||
prefs: prefs,
|
||||
rememberSession: remember,
|
||||
);
|
||||
|
||||
if (!remember && stored != null) {
|
||||
await prefs.remove(_kAuthKey);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> setRememberSession(bool value) async {
|
||||
_rememberSession = value;
|
||||
await _prefs.setBool(_kRememberSessionKey, value);
|
||||
if (!value) {
|
||||
await _prefs.remove(_kAuthKey);
|
||||
} else if (pb.authStore.isValid) {
|
||||
await _prefs.setString(
|
||||
_kAuthKey,
|
||||
jsonEncode({
|
||||
'token': pb.authStore.token,
|
||||
'model': pb.authStore.record,
|
||||
}),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user