29 lines
		
	
	
		
			713 B
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			29 lines
		
	
	
		
			713 B
		
	
	
	
		
			Dart
		
	
	
	
	
	
import 'package:riverpod_annotation/riverpod_annotation.dart';
 | 
						|
import 'package:island/models/embed.dart';
 | 
						|
import 'package:island/pods/network.dart';
 | 
						|
 | 
						|
part 'link_preview.g.dart';
 | 
						|
 | 
						|
@riverpod
 | 
						|
class LinkPreview extends _$LinkPreview {
 | 
						|
  @override
 | 
						|
  Future<SnScrappedLink?> build(String url) async {
 | 
						|
    final client = ref.read(apiClientProvider);
 | 
						|
 | 
						|
    try {
 | 
						|
      final response = await client.get(
 | 
						|
        '/scrap/link',
 | 
						|
        queryParameters: {'url': url},
 | 
						|
      );
 | 
						|
 | 
						|
      if (response.statusCode == 200 && response.data != null) {
 | 
						|
        return SnScrappedLink.fromJson(response.data);
 | 
						|
      }
 | 
						|
      return null;
 | 
						|
    } catch (e) {
 | 
						|
      // Return null on error to show fallback UI
 | 
						|
      return null;
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 |