Compare commits

...

3 Commits

Author SHA1 Message Date
Van Leemput Dayron
ca28e0a780 feat: Implement platform-specific Google Maps API key handling and update app version.
Some checks failed
Deploy to Play Store / build_and_deploy (push) Has been cancelled
2025-12-06 14:43:22 +01:00
Van Leemput Dayron
34b5efb1fc feat: remove notifications settings option from settings content
Some checks failed
Deploy to Play Store / build_and_deploy (push) Has been cancelled
2025-12-05 18:45:34 +01:00
Van Leemput Dayron
f96a51c7cf refactor: standardize API error and success responses with explicit returns and JSON messages
Some checks failed
Deploy to Play Store / build_and_deploy (push) Has been cancelled
2025-12-05 18:42:59 +01:00
8 changed files with 68 additions and 13 deletions

View File

@@ -1,3 +1,4 @@
import 'dart:io';
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
@@ -84,7 +85,18 @@ class _CreateTripContentState extends State<CreateTripContent> {
String? _selectedImageUrl;
/// Google Maps API key for location services
static final String _apiKey = dotenv.env['GOOGLE_MAPS_API_KEY'] ?? '';
static String get _apiKey {
if (Platform.isAndroid) {
return dotenv.env['GOOGLE_MAPS_API_KEY_ANDROID'] ??
dotenv.env['GOOGLE_MAPS_API_KEY'] ??
'';
} else if (Platform.isIOS) {
return dotenv.env['GOOGLE_MAPS_API_KEY_IOS'] ??
dotenv.env['GOOGLE_MAPS_API_KEY'] ??
'';
}
return dotenv.env['GOOGLE_MAPS_API_KEY'] ?? '';
}
/// Participant management
final List<String> _participants = [];

View File

@@ -1,3 +1,4 @@
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:geolocator/geolocator.dart';
@@ -31,7 +32,18 @@ class _MapContentState extends State<MapContent> {
List<PlaceSuggestion> _suggestions = [];
static final String _apiKey = dotenv.env['GOOGLE_MAPS_API_KEY'] ?? '';
static String get _apiKey {
if (Platform.isAndroid) {
return dotenv.env['GOOGLE_MAPS_API_KEY_ANDROID'] ??
dotenv.env['GOOGLE_MAPS_API_KEY'] ??
'';
} else if (Platform.isIOS) {
return dotenv.env['GOOGLE_MAPS_API_KEY_IOS'] ??
dotenv.env['GOOGLE_MAPS_API_KEY'] ??
'';
}
return dotenv.env['GOOGLE_MAPS_API_KEY'] ?? '';
}
@override
void initState() {

View File

@@ -46,13 +46,6 @@ class SettingsContent extends StatelessWidget {
},
),
ListTile(
leading: const Icon(Icons.notifications),
title: const Text('Notifications'),
trailing: const Icon(Icons.arrow_forward_ios),
onTap: () {},
),
ListTile(
leading: const Icon(Icons.privacy_tip),
title: const Text('Confidentialité'),

View File

@@ -1,3 +1,4 @@
import 'dart:io';
import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:flutter_dotenv/flutter_dotenv.dart';
@@ -13,7 +14,19 @@ class ActivityPlacesService {
ActivityPlacesService._internal();
final ErrorService _errorService = ErrorService();
static final String _apiKey = dotenv.env['GOOGLE_MAPS_API_KEY'] ?? '';
static String get _apiKey {
if (Platform.isAndroid) {
return dotenv.env['GOOGLE_MAPS_API_KEY_ANDROID'] ??
dotenv.env['GOOGLE_MAPS_API_KEY'] ??
'';
} else if (Platform.isIOS) {
return dotenv.env['GOOGLE_MAPS_API_KEY_IOS'] ??
dotenv.env['GOOGLE_MAPS_API_KEY'] ??
'';
}
return dotenv.env['GOOGLE_MAPS_API_KEY'] ?? '';
}
/// Recherche des activités près d'une destination
Future<List<Activity>> searchActivities({

View File

@@ -1,3 +1,4 @@
import 'dart:io';
import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:flutter_dotenv/flutter_dotenv.dart';
@@ -5,7 +6,19 @@ import 'package:firebase_storage/firebase_storage.dart';
import 'package:travel_mate/services/error_service.dart';
class PlaceImageService {
static final String _apiKey = dotenv.env['GOOGLE_MAPS_API_KEY'] ?? '';
static String get _apiKey {
if (Platform.isAndroid) {
return dotenv.env['GOOGLE_MAPS_API_KEY_ANDROID'] ??
dotenv.env['GOOGLE_MAPS_API_KEY'] ??
'';
} else if (Platform.isIOS) {
return dotenv.env['GOOGLE_MAPS_API_KEY_IOS'] ??
dotenv.env['GOOGLE_MAPS_API_KEY'] ??
'';
}
return dotenv.env['GOOGLE_MAPS_API_KEY'] ?? '';
}
final FirebaseStorage _storage = FirebaseStorage.instance;
final ErrorService _errorService = ErrorService();

View File

@@ -1,3 +1,4 @@
import 'dart:io';
import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:flutter_dotenv/flutter_dotenv.dart';
@@ -13,7 +14,18 @@ class TripGeocodingService {
TripGeocodingService._internal();
final ErrorService _errorService = ErrorService();
static final String _apiKey = dotenv.env['GOOGLE_MAPS_API_KEY'] ?? '';
static String get _apiKey {
if (Platform.isAndroid) {
return dotenv.env['GOOGLE_MAPS_API_KEY_ANDROID'] ??
dotenv.env['GOOGLE_MAPS_API_KEY'] ??
'';
} else if (Platform.isIOS) {
return dotenv.env['GOOGLE_MAPS_API_KEY_IOS'] ??
dotenv.env['GOOGLE_MAPS_API_KEY'] ??
'';
}
return dotenv.env['GOOGLE_MAPS_API_KEY'] ?? '';
}
/// Géocode la destination d'un voyage et retourne un Trip mis à jour
Future<Trip> geocodeTrip(Trip trip) async {

View File

@@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
# In Windows, build-name is used as the major, minor, and patch parts
# of the product and file versions while build-number is used as the build suffix.
version: 1.0.0+1
version: 1.0.1+2
environment:
sdk: ^3.9.2