Vadim
6abb720b92
added scenarios for timer golden test
2024-05-03 13:31:18 +02:00
Vadim
90a4b9a056
added TimerBloc
test
2024-05-03 12:49:11 +02:00
Vadim
9929d2a5b8
added TimerInteractor
2024-05-03 12:43:45 +02:00
Vadim
2fc24cccbb
release camera when timer is opened
2024-05-03 12:28:10 +02:00
Vadim
8765998680
separated reusable AnimatedCircluarButton
2024-05-03 12:24:36 +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
59977cc9b5
ML-134 Set Feature.showUnlockProOnMainScreen: true
( #169 )
...
* Set `Feature.showUnlockProOnMainScreen: true`
* update metering goldens
2024-04-15 13:18:50 +02:00
Vadim
d5f28ee5a4
ML-166 Fixed golden tests run on CI ( #168 )
...
* stub iap for goldens workflow
* typo
* Updated goldens
* don't push iap stub when updating goldens
* Update pubspec.yaml
* try explicit fonts
* Updated goldens
* set explicit font weights
* disable font smoothing
* run goldens on macos
* typo
* removed defaults from goldens workflow
* run pr check on macos-14
* removed smoothening reset
* Delete run_golden_tests.yml
* deleted fonts folder
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-04-12 10:43:19 +02:00
Vadim
27d56d1061
ML-166 Golden tests ( #167 )
...
* setup golden toolkit
* implemented `GoldenTestApplicationMock`
* added devices with dark theme
* implemented MeteringScreen golden test
* moved platform channel logic to app mock
* implemented SettingsScreen golden test
* gitignore golden tests failures
* Create dart_test.yaml
* adjusted `RulerSlider` ticks height
* set master screenshots
* run golden tests on ci
* fixed `LightSensorService` tests
* removed golden workflow call from PR check
* Update pr_check.yml
2024-04-12 08:07:20 +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
a1ce17d675
ML-154 Improved EXIF errors reporting ( #159 )
...
* 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
* Made errors non-fatal by default
* improved EXIF errors reporting
* fixed tests
2024-02-13 19:33:40 +01: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
2b2a5441c7
ML-130 Added ff for the "Pro features" tile on the main screen ( #149 )
...
* added ff for Pro features tile on main screen
2024-01-15 22:57:40 +01:00
Vadim
8f5893c7d2
ML-143 EV100 indication ( #148 )
...
* added `showEV100` to user preferences
* integrated EV100 setting to UI
* available for pro
* replaced `IAPProducts.isPurchased` with context extension
* fixed `UserPreferencesProvider` tests
* EV100 -> Ev100
2024-01-15 20:47:10 +01:00
Vadim
73d0c32323
Hide Pro features from the metering screen ( #147 )
...
* implemented `MockCameraContainerBloc` to stub camera on simulator
* hide pro features from metering screen
* disable pro features in settings
* use closed child background color in `AnimatedDialog`
* adjust `AnimatedDialogPicker` to items count
* close `AnimatedDialog` through context
* cleanup
* fixed `ReadingValueContainer` text color
* removed legacy translations
* fixed tests
* fixed `AnimatedDialog` scaling
* added `evFromImage` test
* added no EXIF test to `evFromImage`
2024-01-13 18:20:58 +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
068834bfe5
ML-134 Firebase Remote Config issues ( #135 )
...
* Unable to connect to the server
* internal remote config fetch error
* fixed tests
2023-11-07 11:57:36 +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
a52efcd341
ML-130 Integrate Firebase Remote Config ( #132 )
...
* implemented `RemoteConfigService`
* added alternative translations
* typo
* added `firebase_analytics`
* dim paid features list tiles
* log list tile tap instead of dialog
* implemented `RemoteConfigProvider`
* typo
2023-10-31 18:42:25 +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
cc9f162933
ML-107 Films filter ( #118 )
...
* added stub `FilmsProvider`
* moved dialogs to the shared folder
* typo
* separated `EquipmentSettingsSection`
* copy
* `IAPBuilder` -> `IAPListTile`
* moved `Film` to resources repo
* fixed films selection
* untied iso and selected film
* removed film from exposure pairs building
* indicate push/pull
* copy
* Update .gitignore
* fixed extreme exposure pairs reciprocity display
* sync with iap changes
* sync iap stub with iap changes
* added reciprocity description
* added workspace file
* Update .gitignore
2023-09-14 16:59:16 +02:00
Vadim
4bb080a144
Implemented IAP & Equipment profiles ( #89 )
...
* added equipment profiles to layout config
* calculate layout height based on `MeteringScreenLayoutFeature`
* Update cd_dev.yml
* Fixed equipment profile tile padding
* import
* `webfactory/ssh-agent`
* Update pubspec.yaml
* fixed `MeteringScreenLayoutConfigJson` tests
* fixed `UserPreferencesService` tests
* reset selected equipment profile when layout feature is disabled
* `IAPProductType.equipment` -> `IAPProductType.paidFeatures`
* updated packages versions
* Update shared_prefs_service.dart
* Fixed & tested exposure pairs list builder
* typo
* typo
* added iap repo stub
* Renamed `EquipmentProfileData` ->`EquipmentProfile`
* Moved `EquipmentProfileProvider` to iap repo
* Update README.md
* Fixed `EquipmentProfileListener`
* Improved `EquipmentProfilesListTile` statuses visualization
* Update README.md
* Update ci.yml
* Post-merge fixes
* typo
* Added workflow checks
* more sophisticated iap icons
* Include IAP by default
* added loader for `IAPProductStatus.pending`
* typo
* Added equipment profiles list placeholder
* typo
* separated `IconPlaceholder`
* improved `buildExposureValues` testing
* cleanup
2023-09-02 10:32:08 +02:00
Vadim
5adcee00dd
ML-105 Hide providers from the widget tree ( #106 )
...
* Added `ServiceProviders` widget
* Added `EnumProviders` widget for enum values
* Moved `ThemeProvider` functionality to `EnumProviders`
* Style
* `EnumProviders` -> `UserPreferencesProvider`
* `ServiceProviders` -> `ServiceProvider`
* Moved `MeteringScreenLayoutProvider` functionality to `UserPreferencesProvider`
* typo
* Removed `InheritedModelAspectListener`
* TODO
* Removed Inherited Generics
* Removed redundant `LightmeterProviders`
* Removed redundant methods from `ServicesProvider`
* `_inheritFrom` -> `_inheritFromEnumsModel`
* Fixed `MeteringScreenLayoutConfig` updates
* Separated `_ThemeModel`
* typo
* `_EnumsModel` -> `_UserPreferencesModel`
2023-08-14 12:25:37 +02:00
Vadim
886188bb9e
ML-95 Live histogram ( #97 )
...
* Added histogram and separated camera view builder
* Added histogram to `MeteringScreenLayoutConfig`
* `ResolutionPreset.medium` -> `ResolutionPreset.low`
* Adjusted histogram paddings
2023-08-06 16:28:20 +02:00
Vadim
dbf1f09eb6
Renamed EquipmentProfileData
-> EquipmentProfile
2023-07-24 09:08:37 +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
2735f0b66f
ML-81 Unsaved fractional stops ( #83 )
...
* save stop type to sharedPrefs
* tests
2023-06-23 10:47:34 +02:00
Vadim
0c58134733
ML-62 Services tests ( #82 )
...
* 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
2023-06-23 10:35:33 +02:00
Vadim
a7b8de6912
ML-62 Models tests ( #80 )
...
* 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
2023-06-21 11:29:36 +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
Vadim
6bf059ed4d
ML-42 Implement equipment profiles creating ( #45 )
...
* added Equipment section placeholder
* get iso & nd values from equipment profile
* use photography values from remote repo
* removed equipment section
* wip
* moved `EquipmentProfileProvider` from iap repo
* wip
* moved equipment profiles screen from iap
* improved equipment profiles screen
* mock add/delete
* collapse on expand
* add profile with name
* show selected values count (wip)
* fixed profile update
* cleanup
* Update pubspec.yaml
* made `AnimatedDialogPicker` more generic
* switched to local `Dimens`
* fixed `MeteringTopBarShape`
* rename
* animated `EquipmentProfileContainer`
* added default equipment profile
* change equipment profile name via dialog
* fixed profile selection
* filter equipment profile update/delete
* removed `enabled` param from settings section
* non-null `EquipmentProfile`
* fixed duplicate GlobalKeys
* animated equipment list
* Update ci.yml
* fixed shutter speed anchor issue
* autofocus
* added firebase to project
* save/restore equipment profiles
* unified `SliverList`
* added SSH key to iap repo
* Update ci.yml
* ci recursive submodules
* try full url
* Revert "try full url"
This reverts commit a9b692b60e
.
* restore firebase_options.dart
* changed runner to macos
* restore options earlier
* removed problematic file from analysis :)
* removed launch_app
* textoverflow
* implemented `DialogRangePicker`
* add iap repo to cd
* typo
* added workflow_dispatch to crowdin push
* removed `equipmentProfileValuesCount` from intl
* fr & ru translations
* style
* removed iap
2023-03-30 22:24:18 +03:00
Vadim
14bac950cf
Fixed _models_ and _screens_ folders structure
...
proper folders for models
unified _screen_ folder filenames
2022-12-18 14:39:02 +03:00
Vadim
52d8578d77
Added UserPreferencesService
2022-12-16 11:08:12 +03:00
Vadim
1c344da29f
Recalculate EV on ND change
...
Recalculate EV on ND change
`PhotographyValue` -> `PhotographyStopValue`
2022-12-04 22:33:20 +03:00
Vadim
8563ff3b15
added photography values
2022-10-25 22:53:39 +03:00
Vadim
d6ed056ed0
init project
2022-10-15 19:35:35 +03:00