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
e0320b6704
ML-126 Automate screenshots creation ( #127 )
...
* Create screenshot_driver.dart
* wip
* deleted screenshots
* iap mock
* generate for 3 colors
* cleanup
* generate single dark screenshots
* snake_case
* added stub image for camera
* scroll to the first checkbox selected
* unstub iap
* cleanup
* Update generate_screenshots.dart
* typo
2023-09-28 23:29:33 +02:00
ScaredCube
5b1b0b0540
Update intl_zh.arb of new features ( #125 )
2023-09-23 12:52:58 +02:00
Vadim
9029379697
Merged Equipment section into Metering section
2023-09-19 17:26:32 +02:00
Vadim
abbc4c92de
ML-113 Add ability to copy equipment profile ( #120 )
...
* Display range values instead of values count
* copy equipment profile
* added `IconButton` tooltips
2023-09-18 16:59:53 +02:00
Vadim
0fbf252d9e
ML-117 Improve description of paid features ( #119 )
...
* wip
* added `LightmeterProSettingsSection`
* hide Pro section on purchase
* `ElevatedButton` -> `FilledButton`
* moved Pro description to iap/README.md
* intl
* disable only list tiles
* show iap dialog on every iap list tile
2023-09-17 22:29:02 +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
8415f4e515
ML-114 Metering container issues ( #116 )
...
* fixed top bar cutout shape
* update closed offset on layout change
2023-09-08 23:46:31 +02:00
Vadim
cf4373d854
Equipment profiles issues ( #115 )
...
* update equipment profile from dialog
* updated `MeteringScreenLayoutFeaturesDialog` translations
2023-09-08 22:25:13 +02:00
Vadim
4201d36abb
Refined launch options
2023-09-03 13:06:30 +02:00
Vadim
f39177919c
Equipment profiles issues ( #112 )
...
* Fixed equipment profiles sections collapsing
* Fixed range picker dialog
* Refined equipment profiles sections handling
2023-09-02 22:29:35 +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
d91441bac9
ML-95 Live histogram ( #100 )
...
* Removed redundant `stopImageStream()`
2023-08-08 11:46:43 +02:00
Vadim
737a9aa2c2
ML-98 Metering top bar cutout doesn't pass through taps ( #99 )
...
* replaced `OverflowBox` with `Stack`
2023-08-07 12:56:29 +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
8a71c8db13
Added switch animations to MeteringScreen
2023-08-04 16:17:40 +02:00
Vadim
c12cfb1697
Lock & release focus when taking a picture
2023-08-03 22:46:01 +02:00
Vadim
6a9036ce5e
Camera is taking too long to take a picture
2023-08-01 12:58:43 +02:00
Vadim
40c670ad30
Updated README Build section ( #94 )
...
* Update README.md
* Set exact Flutter version for workflows
* Added stub `DefaultFirebaseOptions`
* Fixed `rm`
* Removed `rm`
* Update .gitignore
* Added readable name to ci workflow
* Build -> Development
* Update ci.yml
2023-07-25 17:31:01 +02:00
ScaredCube
b02b50bac3
Fixed Chinese translation ( #93 )
2023-07-24 12:16:35 +02:00
ScaredCube
bb9b023fa7
Add Chinese language support ( #91 )
...
* Add Chinese language support
* Update intl_cn.arb
* Fixed some bugs
* Add Chinese language support
* renamed `cn` to `zh`
---------
Co-authored-by: Vadim <44135514+vodemn@users.noreply.github.com>
Co-authored-by: Vadim <vadim.turko@gmail.com>
2023-07-24 09:35:30 +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
47f7b61230
Updated issuesReportUrl
to lead to _/new/choose_
2023-07-10 16:15:57 +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
ad8f0d895a
Fixed film discard on ISO change
2023-06-08 10:23:16 +02:00
Vadim
cdf7372913
ML-77 Redundant vibrations ( #76 )
...
* wip
* `MeteringScreenLayout = InheritedModelBase<MeteringScreenLayoutFeature, bool>`
* removed `Provider` from providers folder
* wip
* Update pubspec.yaml
* `context.get<MeteringInteractor>()`
* `context.get<Environment>()`
* `context.get<SettingsInteractor>()`
* typo
* fixed `MeteringScreenLayout`
* fixed redundant vibrations
2023-06-04 13:04:04 +02:00
Vadim
c63b5a420d
ML-74 CameraContainerBloc
crashes ( #75 )
...
* nullable var instead of `late`
* `.then((_) => _cameraController = null));`
2023-05-21 11:50:46 +02:00
Vadim
8b74c4e1a4
ML-72 buildPreview() was called on a disposed CameraController ( #73 )
...
* added `DeinitializeEvent`
* typo
2023-05-19 11:12:10 +02:00
Vadim
00b2728453
Updated dependencies versions + lints
2023-05-19 10:47:58 +02:00
Vadim
ec9ba1a779
ML-58 Metering UX improvements ( #63 )
...
* indicate EV value error
* allow nullable ev100 in `CameraContainerBloc`
* log exif keys
* wip
* removed `UserPreferencesService` from `MeteringBloc`
* added error toast
* conflicts
* lints
* allow stop metering if `hasError`
* fixed `AnimatedDialogPicker` inability to close
* Update build.gradle
2023-05-16 11:47:53 +02:00
Vadim
5602b1ed80
ML-70 Migrate to Dart 3 + stricter lints ( #71 )
...
* updated pub version
* added lint
* --code=always_use_package_imports
* dart fixes
* format
* other lints
2023-05-11 15:30:18 +02:00
Vadim
19a788adcb
ML-67 ScaffoldMessenger
Null check operator used on a null value ( #68 )
2023-05-10 17:05:27 +02:00
Vadim
4f8a415503
ML-65 [Android] Exception on mailto
intent ( #66 )
...
* added error toast
* lints
2023-05-08 17:13:43 +02:00
Vadim
f1f8d74338
ML-59 ND filter value is not applied on measure ( #60 )
2023-05-05 23:32:17 +02:00
Vadim
34ea034e67
Build appbundle & apk
...
Build appbundle & apk
Renamed github workflows
2023-05-04 18:18:21 +02:00
Vadim
2102213344
ML-54 AnimatedDialogState
issues ( #56 )
...
* LateInitializationError: Field '_foregroundColorAnimation@1004358584'
* FlutterError: Null check operator used on a null value
2023-05-04 13:14:53 +02:00
Vadim
0583b07cb9
ML-53 Unsupported operation: Infinity or NaN toInt ( #54 )
...
added `isNan` & `isInfinite` checks
2023-05-04 12:49:26 +02:00
Vadim
6232ad555a
ML-51 Integrate Crashlytics ( #52 )
...
* added crashlytics
* added firebase_options to CD
* Version bump
* added firebase_options to CI
* timeout
2023-05-03 12:45:10 +02:00
Vadim
77cbd11268
[Android] Probably fixed grey screen issue
2023-05-01 11:07:07 +02:00
Vadim
d3512faa9b
Fixed incorrect ISO for some films
2023-05-01 10:49:22 +02:00
Vadim
d346e706ff
Moved StopTypeProvider
to providers folder
2023-04-17 10:25:56 +03:00
Vadim
0ac24e5d2c
Temporarily removed firebase
2023-04-09 13:35:58 +03:00