apskel-pos-flutter-v2/lib/common/service/fcm_example_usage.dart
2026-05-07 17:44:03 +07:00

88 lines
2.6 KiB
Dart

// CONTOH PENGGUNAAN FCM SERVICE
// File ini hanya untuk referensi, tidak perlu diimport ke app
import 'package:apskel_pos_flutter_v2/common/service/fcm_service.dart';
import 'package:apskel_pos_flutter_v2/injection.dart';
/// Contoh 1: Ambil FCM token
Future<void> exampleGetToken() async {
final fcmService = getIt<FcmService>();
final token = await fcmService.getToken();
print('FCM Token: $token');
// Kirim token ke server untuk push notification
// await apiClient.sendTokenToServer(token);
}
/// Contoh 2: Subscribe ke topic
Future<void> exampleSubscribeToTopic() async {
final fcmService = getIt<FcmService>();
// Subscribe ke topic "all_users"
await fcmService.subscribeToTopic('all_users');
// Subscribe ke topic berdasarkan outlet_id
await fcmService.subscribeToTopic('outlet_123');
}
/// Contoh 3: Unsubscribe dari topic
Future<void> exampleUnsubscribeFromTopic() async {
final fcmService = getIt<FcmService>();
await fcmService.unsubscribeFromTopic('outlet_123');
}
/// Contoh 4: Gunakan di BLoC
///
/// class NotificationBloc extends Bloc<NotificationEvent, NotificationState> {
/// final FcmService _fcmService;
///
/// NotificationBloc(this._fcmService) : super(NotificationInitial()) {
/// on<GetFcmToken>(_onGetFcmToken);
/// on<SubscribeToTopic>(_onSubscribeToTopic);
/// }
///
/// Future<void> _onGetFcmToken(
/// GetFcmToken event,
/// Emitter<NotificationState> emit,
/// ) async {
/// final token = await _fcmService.getToken();
/// emit(NotificationTokenLoaded(token));
/// }
///
/// Future<void> _onSubscribeToTopic(
/// SubscribeToTopic event,
/// Emitter<NotificationState> emit,
/// ) async {
/// await _fcmService.subscribeToTopic(event.topic);
/// emit(NotificationTopicSubscribed(event.topic));
/// }
/// }
/// Contoh 5: Gunakan di Repository
///
/// @LazySingleton(as: IAuthRepository)
/// class AuthRepository implements IAuthRepository {
/// final FcmService _fcmService;
/// final ApiClient _apiClient;
///
/// AuthRepository(this._fcmService, this._apiClient);
///
/// @override
/// Future<Either<Failure, User>> login(String email, String password) async {
/// try {
/// final response = await _apiClient.login(email, password);
///
/// // Kirim FCM token ke server setelah login berhasil
/// final fcmToken = await _fcmService.getToken();
/// if (fcmToken != null) {
/// await _apiClient.updateFcmToken(fcmToken);
/// }
///
/// return Right(response);
/// } catch (e) {
/// return Left(ServerFailure(e.toString()));
/// }
/// }
/// }