add buildlogprovider to handle scrolling from outside widget
This commit is contained in:
		
							
								
								
									
										13
									
								
								frontend/lib/providers/api/BaseProvider.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								frontend/lib/providers/api/BaseProvider.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
 | 
			
		||||
abstract class BaseProvider<T, DTO> with ChangeNotifier {
 | 
			
		||||
  late Future<T> data;
 | 
			
		||||
  DTO? dto;
 | 
			
		||||
 | 
			
		||||
  loadFuture(context, {DTO? dto});
 | 
			
		||||
 | 
			
		||||
  refresh(context) {
 | 
			
		||||
    loadFuture(context, dto: this.dto);
 | 
			
		||||
    notifyListeners();
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										19
									
								
								frontend/lib/providers/api/aur_search_provider.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								frontend/lib/providers/api/aur_search_provider.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
import 'package:aurcache/api/aur.dart';
 | 
			
		||||
import 'package:aurcache/models/aur_package.dart';
 | 
			
		||||
 | 
			
		||||
import '../../api/API.dart';
 | 
			
		||||
import 'BaseProvider.dart';
 | 
			
		||||
 | 
			
		||||
class AurSearchDTO {
 | 
			
		||||
  final String query;
 | 
			
		||||
 | 
			
		||||
  AurSearchDTO({required this.query});
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class AURSearchProvider extends BaseProvider<List<AurPackage>, AurSearchDTO> {
 | 
			
		||||
  @override
 | 
			
		||||
  loadFuture(context, {dto}) {
 | 
			
		||||
    data = API.getAurPackages(dto!.query);
 | 
			
		||||
    this.dto = dto;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										20
									
								
								frontend/lib/providers/api/build_provider.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								frontend/lib/providers/api/build_provider.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
			
		||||
import 'package:aurcache/api/builds.dart';
 | 
			
		||||
 | 
			
		||||
import '../../api/API.dart';
 | 
			
		||||
import '../../models/build.dart';
 | 
			
		||||
import 'BaseProvider.dart';
 | 
			
		||||
 | 
			
		||||
class BuildDTO {
 | 
			
		||||
  final int buildID;
 | 
			
		||||
 | 
			
		||||
  BuildDTO({required this.buildID});
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class BuildProvider extends BaseProvider<Build, BuildDTO> {
 | 
			
		||||
  @override
 | 
			
		||||
  loadFuture(context, {dto}) {
 | 
			
		||||
    // todo search solution to force an exising dto
 | 
			
		||||
    data = API.getBuild(dto!.buildID);
 | 
			
		||||
    this.dto = dto;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										24
									
								
								frontend/lib/providers/api/builds_provider.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								frontend/lib/providers/api/builds_provider.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,24 @@
 | 
			
		||||
import 'package:aurcache/api/builds.dart';
 | 
			
		||||
 | 
			
		||||
import '../../api/API.dart';
 | 
			
		||||
import '../../models/build.dart';
 | 
			
		||||
import 'BaseProvider.dart';
 | 
			
		||||
 | 
			
		||||
class BuildsDTO {
 | 
			
		||||
  final int? pkgID;
 | 
			
		||||
  final int? limit;
 | 
			
		||||
 | 
			
		||||
  BuildsDTO({this.pkgID, this.limit});
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class BuildsProvider extends BaseProvider<List<Build>, BuildsDTO> {
 | 
			
		||||
  @override
 | 
			
		||||
  loadFuture(context, {dto}) {
 | 
			
		||||
    if (dto != null) {
 | 
			
		||||
      data = API.listAllBuilds(pkgID: dto.pkgID, limit: dto.limit);
 | 
			
		||||
      this.dto = dto;
 | 
			
		||||
    } else {
 | 
			
		||||
      data = API.listAllBuilds();
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										20
									
								
								frontend/lib/providers/api/package_provider.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								frontend/lib/providers/api/package_provider.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
			
		||||
import 'package:aurcache/api/packages.dart';
 | 
			
		||||
 | 
			
		||||
import '../../api/API.dart';
 | 
			
		||||
import '../../models/package.dart';
 | 
			
		||||
import 'BaseProvider.dart';
 | 
			
		||||
 | 
			
		||||
class PackageDTO {
 | 
			
		||||
  final int pkgID;
 | 
			
		||||
 | 
			
		||||
  PackageDTO({required this.pkgID});
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class PackageProvider extends BaseProvider<Package, PackageDTO> {
 | 
			
		||||
  @override
 | 
			
		||||
  loadFuture(context, {dto}) {
 | 
			
		||||
    // todo search solution to force an exising dto
 | 
			
		||||
    data = API.getPackage(dto!.pkgID);
 | 
			
		||||
    this.dto = dto;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										19
									
								
								frontend/lib/providers/api/packages_provider.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								frontend/lib/providers/api/packages_provider.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
import 'package:aurcache/api/packages.dart';
 | 
			
		||||
import 'package:aurcache/providers/api/BaseProvider.dart';
 | 
			
		||||
 | 
			
		||||
import '../../api/API.dart';
 | 
			
		||||
import '../../models/package.dart';
 | 
			
		||||
 | 
			
		||||
class PackagesDTO {
 | 
			
		||||
  final int limit;
 | 
			
		||||
 | 
			
		||||
  PackagesDTO({required this.limit});
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class PackagesProvider extends BaseProvider<List<Package>, PackagesDTO> {
 | 
			
		||||
  @override
 | 
			
		||||
  loadFuture(context, {dto}) {
 | 
			
		||||
    data = API.listPackages(limit: dto?.limit);
 | 
			
		||||
    this.dto = dto;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										12
									
								
								frontend/lib/providers/api/stats_provider.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								frontend/lib/providers/api/stats_provider.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
			
		||||
import 'package:aurcache/api/statistics.dart';
 | 
			
		||||
 | 
			
		||||
import '../../api/API.dart';
 | 
			
		||||
import 'BaseProvider.dart';
 | 
			
		||||
 | 
			
		||||
class StatsProvider extends BaseProvider {
 | 
			
		||||
  @override
 | 
			
		||||
  loadFuture(context, {dto}) {
 | 
			
		||||
    data = API.listStats();
 | 
			
		||||
    this.dto = dto;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user