mirror of
				https://github.com/immich-app/immich.git
				synced 2025-11-04 03:39:37 -05:00 
			
		
		
		
	* chore: maplibre gl pubspec * refactor(wip): maplibre for maps * refactor(wip): dual pane + location button * chore: remove flutter_map and deps * refactor(wip): map zoom to location * refactor: location picker * open gallery_viewer on marker tap * remove detectScaleGesture param * test: debounce and throttle * chore: rename get location method * feat(mobile): Adds gps locator to map prompt for easy geolocation (#6282) * Refactored get gps coords * Use var for linter's sake, should handle errors better * Cleanup * Fix linter issues * chore(dep): update maplibre to official lib --------- Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com> Co-authored-by: Joshua Herrera <joshua.herrera227@gmail.com>
		
			
				
	
	
		
			42 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
import 'package:flutter_test/flutter_test.dart';
 | 
						|
import 'package:immich_mobile/utils/debounce.dart';
 | 
						|
 | 
						|
class _Counter {
 | 
						|
  int _count = 0;
 | 
						|
  _Counter();
 | 
						|
 | 
						|
  int get count => _count;
 | 
						|
  void increment() => _count = _count + 1;
 | 
						|
}
 | 
						|
 | 
						|
void main() {
 | 
						|
  test('Executes the method after the interval', () async {
 | 
						|
    var counter = _Counter();
 | 
						|
    final debouncer = Debouncer(interval: const Duration(milliseconds: 300));
 | 
						|
    debouncer.run(() => counter.increment());
 | 
						|
    expect(counter.count, 0);
 | 
						|
    await Future.delayed(const Duration(milliseconds: 300));
 | 
						|
    expect(counter.count, 1);
 | 
						|
  });
 | 
						|
 | 
						|
  test('Executes the method immediately if zero interval', () async {
 | 
						|
    var counter = _Counter();
 | 
						|
    final debouncer = Debouncer(interval: const Duration(milliseconds: 0));
 | 
						|
    debouncer.run(() => counter.increment());
 | 
						|
    // Even though it is supposed to be executed immediately, it is added to the async queue and so
 | 
						|
    // we need this delay to make sure the actual debounced method is called
 | 
						|
    await Future.delayed(const Duration(milliseconds: 0));
 | 
						|
    expect(counter.count, 1);
 | 
						|
  });
 | 
						|
 | 
						|
  test('Delayes method execution after all the calls are completed', () async {
 | 
						|
    var counter = _Counter();
 | 
						|
    final debouncer = Debouncer(interval: const Duration(milliseconds: 100));
 | 
						|
    debouncer.run(() => counter.increment());
 | 
						|
    debouncer.run(() => counter.increment());
 | 
						|
    debouncer.run(() => counter.increment());
 | 
						|
    await Future.delayed(const Duration(milliseconds: 300));
 | 
						|
    expect(counter.count, 1);
 | 
						|
  });
 | 
						|
}
 |