61 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
import 'dart:async';
 | 
						|
import 'dart:io';
 | 
						|
 | 
						|
import 'package:dio/dio.dart';
 | 
						|
import 'package:flutter/foundation.dart';
 | 
						|
import 'package:flutter/material.dart';
 | 
						|
import 'package:flutter_riverpod/flutter_riverpod.dart';
 | 
						|
 | 
						|
// Conditional imports based on platform
 | 
						|
import 'notify.windows.dart' as windows_notify;
 | 
						|
import 'notify.universal.dart' as universal_notify;
 | 
						|
 | 
						|
// Platform-specific delegation
 | 
						|
Future<void> initializeLocalNotifications() async {
 | 
						|
  if (kIsWeb) {
 | 
						|
    // No local notifications on web
 | 
						|
    return;
 | 
						|
  }
 | 
						|
  if (Platform.isWindows) {
 | 
						|
    return windows_notify.initializeLocalNotifications();
 | 
						|
  } else {
 | 
						|
    return universal_notify.initializeLocalNotifications();
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
StreamSubscription? setupNotificationListener(
 | 
						|
  BuildContext context,
 | 
						|
  WidgetRef ref,
 | 
						|
) {
 | 
						|
  if (kIsWeb) {
 | 
						|
    // No notification listener on web
 | 
						|
    return null;
 | 
						|
  }
 | 
						|
  if (Platform.isWindows) {
 | 
						|
    return windows_notify.setupNotificationListener(context, ref);
 | 
						|
  } else {
 | 
						|
    return universal_notify.setupNotificationListener(context, ref);
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
Future<void> subscribePushNotification(
 | 
						|
  Dio apiClient, {
 | 
						|
  bool detailedErrors = false,
 | 
						|
}) async {
 | 
						|
  if (kIsWeb) {
 | 
						|
    // No push notification subscription on web
 | 
						|
    return;
 | 
						|
  }
 | 
						|
  if (Platform.isWindows) {
 | 
						|
    return windows_notify.subscribePushNotification(
 | 
						|
      apiClient,
 | 
						|
      detailedErrors: detailedErrors,
 | 
						|
    );
 | 
						|
  } else {
 | 
						|
    return universal_notify.subscribePushNotification(
 | 
						|
      apiClient,
 | 
						|
      detailedErrors: detailedErrors,
 | 
						|
    );
 | 
						|
  }
 | 
						|
}
 |