// Label StoreMax // // Created by Anthony Gordon. // 2022, WooSignal Ltd. All rights reserved. // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. import 'package:flutter_app/bootstrap/helpers.dart'; import 'package:woosignal/woosignal.dart'; class WooSignalApiLoaderController { List _results = []; int page = 1; bool _waitForNextRequest = false; WooSignalApiLoaderController(); Future load( {required bool Function(bool hasProducts) hasResults, required void Function() didFinish, required Future> Function(WooSignal query) apiQuery}) async { if (_waitForNextRequest) { return; } _waitForNextRequest = true; List apiResults = await (appWooSignal((api) => apiQuery(api))); if (!hasResults(apiResults.isNotEmpty)) { return; } _results.addAll(apiResults); page = page + 1; _waitForNextRequest = false; didFinish(); } List getResults() => _results; void clear() { _results = []; _waitForNextRequest = false; page = 1; } }