44 lines
1.7 KiB
Dart
44 lines
1.7 KiB
Dart
import 'package:pocketbase/pocketbase.dart';
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
|
|
/// Configuration de connexion au backend PocketBase (LE MÊME que l'app magasin).
|
|
///
|
|
/// L'URL pointe vers l'instance PocketBase auto-hébergée. La session (token
|
|
/// d'auth) est persistée localement via [SharedPreferences] pour rester
|
|
/// connecté entre deux lancements de l'app.
|
|
class PbConfig {
|
|
PbConfig._();
|
|
|
|
static const String url = 'https://db.tailb756e1.ts.net';
|
|
|
|
static bool get estConfigure => !url.contains('VOTRE-URL');
|
|
}
|
|
|
|
/// ID client OAuth « Web » du projet Google Cloud. Passé à google_sign_in comme
|
|
/// `serverClientId` → l'ID token renvoyé a cette audience, que le hook serveur
|
|
/// PocketBase (`/api/google-native-auth`) vérifie.
|
|
const String googleWebClientId =
|
|
'831733439319-45cergb7cf8r728fja4m0kcvu2r7fbj9.apps.googleusercontent.com';
|
|
|
|
/// Client PocketBase global (initialisé une fois via [initPocketBase]).
|
|
late final PocketBase pb;
|
|
|
|
/// Initialise le client PocketBase avec une auth store persistée sur disque.
|
|
/// À appeler au démarrage, avant `runApp`.
|
|
Future<void> initPocketBase() async {
|
|
final prefs = await SharedPreferences.getInstance();
|
|
final store = AsyncAuthStore(
|
|
save: (String data) async => prefs.setString('pb_auth', data),
|
|
clear: () async => prefs.remove('pb_auth'),
|
|
initial: prefs.getString('pb_auth'),
|
|
);
|
|
pb = PocketBase(PbConfig.url, authStore: store);
|
|
}
|
|
|
|
/// Extrait un message lisible d'une erreur PocketBase (sinon [parDefaut]).
|
|
String messageErreurPb(ClientException e, String parDefaut) {
|
|
final data = e.response['message'];
|
|
if (data is String && data.trim().isNotEmpty) return data;
|
|
return parDefaut;
|
|
}
|