Vadim
c66381f813
ML-191 Add an ability to add a generic film, that will accept a formula ( #195 )
...
* sync with resources
* separated `ExpandableSectionList` as widget
* fixed generic type
* implemented `FilmsScreen` (wip)
* made `SliverScreen` title a widget
* [`FilmEditScreen`] wip
* [`FilmEditScreen`] added validation
* fixed title overflow for `SliverScreen`
* [`FilmEditScreen`] separated add and edit blocs
* [`FilmEditScreen`] split into separate components
* added bottom widget to `SliverScreen`
* implemented films list tabs fo `FilmsScreen`
* added films screen to navigation
* replaced explicit routes names with enum values
* implemented CRUD for custom films
* added placeholder for empty custom films list
* added `FilmsStorageService`
* fixed unit tests
* fixed integration tests
* lint
* fixed golden tests
* added iap stub methods
* added custom films to features list
* use 2.0.0 resouces
* fixed film picket tests
* migrated to iap 1.0.1
* autofocus film name field
* wait for the film to edited
* migrated to iap 1.1.0
* typo
* wait for storage initialization
* migrated to iap 1.1.1
* fixed films initialization
* added conditions to films model `updateShouldNotifyDependent`
* typo
* fixed select film discard notify
* covered films model `updateShouldNotifyDependent`
2024-11-03 20:16:01 +01:00
Vadim
98262fc4ee
Upgraded to m3_lightmeter_resources: 1.4.0
2024-10-06 18:29:26 +02:00
Vadim
f0d707b071
Show Lightmeter Pro price before purchase ( #183 )
...
* Upgraded `targetSdkVersion` to 34
* added price to `IAPProduct`
* implemented `ProFeaturesScreen` (wip)
* finalized `ProFeaturesScreen` layout
* replaced `ProFeaturesDialog` with `ProFeaturesScreen`
* added translations
* fixed feature checkbox width calculation
* fixed tests
* separated android & ios features
* NPE
* changed "get pro" tile colors
* unified Lightmeter Pro related naming
* typo
* updated golden tests
* use iap 0.11.0
* revert unrelated changes
This reverts commit bae5ead8f0
.
* lint
* adjusted eng translation
* updated goldens
2024-07-23 23:19:41 +02:00
Vadim
f62f658be8
Automated release screenshots generation ( #177 )
...
* added system overlays for iPhone 8 Plus & iPhone 13 Pro
* add device frame (wip)
* scale device frame (wip)
* add text to screenshots (wip)
* added screenshots config json
* reorganized screenshot models
* cleanup
* added fonts for dark screenshots
* typo
* store raw screenshots
* added standalone script to update screenshots
* wip
* refined screenshots naming
* skip metering layout dialog screenshot
* parse ipad name
* added assets for Pixel 6
* typo
* added text for incident light metering
* reorganized store script
* typo
* wip
* synced outlined icons
* added timer screen to screenshot generator
* constrained timer screen timeline for tablets
* added timer screenshot title
* typo
* revised scripts
* track release screenshots
* Update README.md
* iphone 6.5" -> iphone 6.7"
* Update google_play_resources.md
* softened screenshot font colors
* cleanup
2024-05-21 19:13:33 +02:00
Vadim
8c016e548b
Unified the app's color palette & icons ( #176 )
...
* unified scaffold background color
* unified components elevation
* use filled tonal icon buttons
* aligned slider colors with guidelines
* removed unused `CloseButton`
* migrated to outlined icons
* moved timer list tile to the top of the section
* updated goldens
* migrated to the latest material utils
* reaplced `SchemeTonalSpot` with `SchemeRainbow`
* fixed ruler slider ticks color
* update goldens
* fixed tests
* fixed scheme mapping and returned to `SchemeTonalSpot`
2024-05-20 17:08:37 +02:00
Vadim
bc7e6e14d0
ML-170 Show long shutter speeds for all selected aperture values ( #172 )
...
* generate exposures > 1"
* fixed unit tests
* added manual shutter speed to equipment profiles
* fixed integration tests
* fixed unit tests
* fixed long exposures overflow
* migrated to resources 1.2.0 and iap 0.10.0
* removed unnecessary loop
* fixed extreme exposure pairs test
* updated master screenshots
* fixed iap stub
2024-04-30 12:44:01 +02:00
Vadim
bfd0bfe531
ML-108 First exposure metering seems to be wrong ( #163 )
...
* use latest `camera_android_camerax`
* fixed trailing commas
* moved ci/cd to 3.13.9
* removed focus & exposure fix
* fixed camera not being initialized on Android
* removed unused import
2024-04-06 19:14:37 +02:00
Vadim
fc37016770
ML-154 Improve Crashlytics reports ( #155 )
...
* removed unused analytics event & added `logCrash`
* added analytics to `RemoteConfigService`
* run app with `runZonedGuarded`
* added crash logging to `CameraContainerBloc`
* log product id for IAP errors
* typo
* log crashes in `RemoteConfigService`
* ignore silent `FlutterError`
* fixed `evFromImage` test
* fixed `showBuyProDialog` test
* log errors in console
* depend on iap 0.7.2
2024-01-27 23:20:53 +01:00
Vadim
6566108994
ML-129 Spot metering ( #136 )
...
* imlemented `CameraSpotDetector`
* separated generic `DialogSwitch`
* added `CameraFeature` model
* added `CameraFeaturesListTile` to metering section
* added features dialog subtitles
* added long press to remove metering spot
* translations
* hide camera features for purchasable status
* hide `CameraHistogram` & `CameraSpotDetector` if purchasable
* bumped iap version
* fixed tests
* removed redundant camera state emission
* tests
* Fixed remote config initalization
* updated pro features description
2023-11-11 21:05:11 +01:00
Vadim
3bb3f12641
ML-62 Utils tests ( #133 )
...
* removed redundant `UserPreferencesService` from `MeteringBloc`
* wip
* post-merge fixes
* `MeasureEvent` tests
* `MeasureEvent` tests revision
* `MeasureEvent` tests added timeout
* added stubs for other `MeteringBloc` events
* rewritten `MeteringBloc` logic
* wip
* `IsoChangedEvent` tests
* refined `IsoChangedEvent` tests
* `NdChangedEvent` tests
* `FilmChangedEvent` tests
* `MeteringCommunicationBloc` tests
* added test run to ci
* overriden `==` for `MeasuredState`
* `LuxMeteringEvent` tests
* refined `LuxMeteringEvent` tests
* rename
* wip
* wip
* `InitializeEvent`/`DeinitializeEvent` tests
* clamp minZoomLevel
* fixed `MeteringCommunicationBloc` tests
* wip
* `ZoomChangedEvent` tests
* `ExposureOffsetChangedEvent`/`ExposureOffsetResetEvent` tests
* renamed test groups
* added test coverage script
* improved `CameraContainerBloc` test coverage
* `EquipmentProfileChangedEvent` tests
* verify response vibration
* fixed running all tests
* `MeteringCommunicationBloc` equality tests
* `CameraContainerBloc` equality tests
* removed generated code from coverage
* `MeteringScreenLayoutFeature` tests
* `SupportedLocale` tests
* `Film` tests
* `CaffeineService` tests
* `UserPreferencesService` tests (wip)
* `LightSensorService` tests (wip)
* `migrateOldKeys()` tests
* ignore currently unused getters & setters
* gradle upgrade
* `reset(sharedPreferences);` calls count
* typo
* `MeteringInteractor` tests
* `SettingsInteractor` tests (wip)
* `MeteringInteractor` tests (wip)
* `SettingsInteractor` tests
* AnimatedDialog picker standalone tests
* Moved Animated dialog picker to widget tests
* `ExtremeExposurePairsContainer` widget test
* dialog picker test
* Match extreme exposure pairs & pairs list edge values
* `FilmPicker` widget tests
* fixed animated dialog picker tests
* add not hit files to coverage percentage
* Moved `EquipmentProfileProvider` & `FilmsProvider` to the main repo
* Synced _iap_ stub with repo
* `FilmsProvider` tests
* `EquipmentProfileProvider` tests
* Pass `availableFilms` to `FilmsProvider`
* `FilmPicker` tests
* removed unnecessary imports
* Metering layout features tests
* split integration tests by screens
* Films in use test
* mock light meter lux stream
* removed mockito mocks for integration tests
From no on these are the only mocks in use:
- Mock shared prefs initial values
- Mock platform responses (camera/light sensor)
* set sharedprefs mock without redundant group
* unified granting camera permission on Android
* fixed metering screen tests
* extracted common values
* `FilmPicker` integration tests
* fixed light sensor platform mocks
* wip
* removed integration tests for now
* moved screenshots generator to screenshots folder
* typo
* removed `MockIAPProductsProvider`
* implemented platform mocks for unit tests
* data/models/ 100% coverage
* `IsoValuePicker` tests
* `EquipmentProfileProvider` tests
* extended PR check timeout
* typo
* added storage action verification for `FilmsProvider` tests
* `UserPreferencesProvider` tests
* Update README.md
* added //coverage:ignore to `ServicesProvider`
* typo
* typo
* `toStringSignedAsFixed` tests
* `SelectableInheritedModel` tests
* removed unused `TextLineHeight` util
* `VolumeKeysNotifier` tests
* import
* `EquipmentProfileListener` tests
* typo
* split `EquipmentProfileListener` tests
* `showBuyProDialog` tests
* added `maybeOf` getter for iap stub
2023-11-02 17:40:47 +01:00
Vadim
f3b08868be
ML-62 Providers tests + Platform & Application mocks ( #131 )
...
- Fixed test coverage calculation
- Removed `mockito` from the application mock
- Implemented platform channel mocks to mimic incident light metering
- Covered providers with unit tests
- Covered metering screen pickers with widget tests
- Laid foundation for integration tests
2023-10-20 16:12:43 +02:00
Vadim
b13acedebd
ML-62 Interactors tests ( #87 )
...
* removed redundant `UserPreferencesService` from `MeteringBloc`
* wip
* post-merge fixes
* `MeasureEvent` tests
* `MeasureEvent` tests revision
* `MeasureEvent` tests added timeout
* added stubs for other `MeteringBloc` events
* rewritten `MeteringBloc` logic
* wip
* `IsoChangedEvent` tests
* refined `IsoChangedEvent` tests
* `NdChangedEvent` tests
* `FilmChangedEvent` tests
* `MeteringCommunicationBloc` tests
* added test run to ci
* overriden `==` for `MeasuredState`
* `LuxMeteringEvent` tests
* refined `LuxMeteringEvent` tests
* rename
* wip
* wip
* `InitializeEvent`/`DeinitializeEvent` tests
* clamp minZoomLevel
* fixed `MeteringCommunicationBloc` tests
* wip
* `ZoomChangedEvent` tests
* `ExposureOffsetChangedEvent`/`ExposureOffsetResetEvent` tests
* renamed test groups
* added test coverage script
* improved `CameraContainerBloc` test coverage
* `EquipmentProfileChangedEvent` tests
* verify response vibration
* fixed running all tests
* `MeteringCommunicationBloc` equality tests
* `CameraContainerBloc` equality tests
* removed generated code from coverage
* `MeteringScreenLayoutFeature` tests
* `SupportedLocale` tests
* `Film` tests
* `CaffeineService` tests
* `UserPreferencesService` tests (wip)
* `LightSensorService` tests (wip)
* `migrateOldKeys()` tests
* ignore currently unused getters & setters
* gradle upgrade
* `reset(sharedPreferences);` calls count
* typo
* `MeteringInteractor` tests
* `SettingsInteractor` tests (wip)
* `MeteringInteractor` tests (wip)
* `SettingsInteractor` tests
2023-07-10 17:49:34 +02:00
Vadim
e001c153fb
ML-11 Implement volume buttons actions ( #86 )
...
* [Android] wip
* implemented `VolumeEventsService`
* implemented `VolumeKeysListener` (wip)
* Added screenshots links
* [Android] nullable typo
* implemented `VolumeKeysNotifier`
* deinitialize camera when on Settings screen
* disable volume handling when on Settings screen
* used "platform" package to mock `isAndroid`
* init/deinit camera on settings open
* allow volume action override only on metering screen
* lints
* cleanup
* await dispose
* tests
* reduced `SwitchListTile.contentPadding`
* fixed tests
* removed `VolumeAction.zoom`
* added social preview
* typo
* fixed `CameraContainerBloc` tests
* added `Stream.empty()` tests
2023-07-09 13:39:33 +02:00
Vadim
74d0a7101c
ML-62 Bloc's tests ( #78 )
...
* removed redundant `UserPreferencesService` from `MeteringBloc`
* wip
* post-merge fixes
* `MeasureEvent` tests
* `MeasureEvent` tests revision
* `MeasureEvent` tests added timeout
* added stubs for other `MeteringBloc` events
* rewritten `MeteringBloc` logic
* wip
* `IsoChangedEvent` tests
* refined `IsoChangedEvent` tests
* `NdChangedEvent` tests
* `FilmChangedEvent` tests
* `MeteringCommunicationBloc` tests
* added test run to ci
* overriden `==` for `MeasuredState`
* `LuxMeteringEvent` tests
* refined `LuxMeteringEvent` tests
* rename
* wip
* wip
* `InitializeEvent`/`DeinitializeEvent` tests
* clamp minZoomLevel
* fixed `MeteringCommunicationBloc` tests
* wip
* `ZoomChangedEvent` tests
* `ExposureOffsetChangedEvent`/`ExposureOffsetResetEvent` tests
* renamed test groups
* added test coverage script
* improved `CameraContainerBloc` test coverage
* `EquipmentProfileChangedEvent` tests
* verify response vibration
* fixed running all tests
* `MeteringCommunicationBloc` equality tests
* `CameraContainerBloc` equality tests
* removed generated code from coverage
2023-06-20 08:43:49 +02:00