Dio setup with bearer token and client context
final dio = Dio(BaseOptions(
baseUrl: 'https://nakroteck.net/api/v1',
headers: {
'Accept': 'application/json',
if (token != null) 'Authorization': 'Bearer $token',
if (clientId != null) 'X-Client-Id': clientId.toString(),
},
));
Future<Map<String, dynamic>> loadMobileConfig() async {
final response = await dio.get('/mobile/config');
return response.data as Map<String, dynamic>;
}
Future<void> initFirebaseFromApi() async {
final config = await loadMobileConfig();
final firebase = config['firebase'] as Map<String, dynamic>;
if (firebase['configured'] == true) {
await Firebase.initializeApp(
options: FirebaseOptions(
apiKey: firebase['api_key'],
appId: firebase['app_id'],
messagingSenderId: firebase['messaging_sender_id'],
projectId: firebase['project_id'],
authDomain: firebase['auth_domain'],
storageBucket: firebase['storage_bucket'],
measurementId: firebase['measurement_id'],
),
);
}
}
Future<Map<String, dynamic>> login(String email, String password) async {
final response = await dio.post('/auth/login', data: {
'email': email,
'password': password,
'device_name': 'Nakroteck Flutter',
});
return response.data as Map<String, dynamic>;
}