An simple image gallery app utilizing Unsplash API to showcase modern Android development architecture (MVVM + Kotlin + Retrofit2 + Hilt + Coroutines + Kotlin Flow + mockK + Espresso + Junit)

Overview

Imagine App

An simple image gallery app utilizing Unsplash API.

Tests codecov

Built with ❤︎ by Wajahat Karim and contributors



Features

  • Popular photos with pagination support
  • Quickly explore top categories like Cars, Mountains, Animals, Interior etc.
  • Search query with pagination support
  • Comes in both light and dark mode.

Architecture

  • Built with Modern Android Development practices
  • Utilized Usecase, Repository pattern for data
  • Includes unit tests for Use cases, Repository, ViewModels, API Service response.

📱 Download Demo on Android

Download the APK file from here on your Android phone and enjoy the Demo App :)

Built With 🛠

  • Kotlin - First class and official programming language for Android development.
  • Coroutines - For asynchronous and more..
  • Flow - A cold asynchronous data stream that sequentially emits values and completes normally or with an exception.
  • Android Architecture Components - Collection of libraries that help you design robust, testable, and maintainable apps.
    • LiveData - Data objects that notify views when the underlying database changes.
    • ViewModel - Stores UI-related data that isn't destroyed on UI changes.
    • ViewBinding - Generates a binding class for each XML layout file present in that module and allows you to more easily write code that interacts with views.
  • Dependency Injection
    • Hilt - Easier way to incorporate Dagger DI into Android apps. This is in the main branch.
    • Dagger2 - Standard library to incorporate Dagger dependency injection into an Android application. This is in a separate dagger branch.
  • Retrofit - A type-safe HTTP client for Android and Java.
  • Material Components for Android - Modular and customizable Material Design UI components for Android.
  • Gradle Kotlin DSL - For writing Gradle build scripts using Kotlin.
  • MockK - For Mocking and Unit Testing

👨 Developed By

Wajahat Karim

Twitter Web Medium Linkedin

Comments
  • ProgressBars appears unexpectedly

    ProgressBars appears unexpectedly

    When I scroll in order to load next page, and rotate the device, ProgressBars appears unexpectedly and never disappears.

    Please look at this : https://drive.google.com/file/d/1o5tM0l2XJLDjaCwL1WvzLqVN7rc5KT0T/view?usp=sharing

    Is it related to implementation of Paging library? If yes, which version of library are using in the demo APK file in the readme screen?

    opened by alirezaeiii 4
  • Added Danger integration in CI

    Added Danger integration in CI

    This PR adds the Danger integration through Github Actions. At the moment, this includes

    • thanking the PR author
    • checking for WIP
    • checking for PR description
    • checking if the PR contains too many changes
    opened by wajahatkarim3 2
  • Bump kotlin_version from 1.4.21 to 1.4.30

    Bump kotlin_version from 1.4.21 to 1.4.30

    Bumps kotlin_version from 1.4.21 to 1.4.30. Updates kotlin-gradle-plugin from 1.4.21 to 1.4.30

    Release notes

    Sourced from kotlin-gradle-plugin's releases.

    Kotlin 1.4.30

    CHANGELOG

    Android

    • KT-42383 HMPP: Bad IDEA dependencies: Missing dependency from p1:jvmAndAndroid to p2:jvmAndAndroid

    Backend. Native

    • KT-38772 Native: support non-reified type parameters in typeOf
    • KT-42234 Move LLVM optimization parameters into konan.properties
    • KT-42649 IndexOutOfBoundsException during InlineClassTransformer lowering
    • KT-42942 Native: optimize peak backend memory by clearing BindingContext after psi2ir
    • KT-43198 Native: support init blocks inside inline classes

    Compiler

    New Features

    • KT-28055 Support init blocks inside inline classes
    • KT-28056 Consider supporting non-public primary constructors for inline classes
    • KT-41265 Support noarg compiler plugin for JVM IR
    • KT-42094 Allow open callable members in expect interfaces
    • KT-43129 FIR: Support OverloadResolutionByLambdaReturnType
    • KT-43592 Promote JVM IR compiler backend to Beta
    • KT-43919 Support loading Java annotations on base classes and implementing interfaces' type arguments
    • KT-44021 Enable JVM IR backend by default in 1.5

    Performance Improvements

    • KT-41352 JVM IR: reduce bytecode size in for loops and range checks with 'until' by not using inclusive end
    • KT-41644 NI: Infinite compilation
    • KT-42791 OutOfMemoryError on compilation using kotlin 1.4 on a class with a lot of type inference
    • KT-42920 NI: Improve performance around adding constraints

    Fixes

    • KT-11454 Load annotations on TYPE_USE/TYPE_PARAMETER positions from Java class-files
    • KT-11732 Verify error for generic interface method invocation with default parameters
    • KT-14612 "ISE: Recursive call in a lazy value" during processing of a (weakly) recursive type alias
    • KT-18344 Upper bound of a typealias type parameter is not reported correctly if it contains the typealias itself
    • KT-18768 @Notnull annotation from Java does not work with varargs
    • KT-20548 java.lang.IllegalStateException: Illegal class container on simple Java code parsing
    • KT-22465 Excessive synthetic method for private setter from superclass
    • KT-23816 Inline classes: constants and annotations
    • KT-24158 AE: No receiver found on incomplete code with $-signs
    • KT-24392 Nullability of Java arrays is read incorrectly if @Nullable annotation has both targets TYPE_USE and VALUE_PARAMETER
    • KT-26229 Lambda/anonymous function argument in parentheses is not supported for callsInPlace effect
    • KT-29735 KNPE at KtEnumEntrySuperclassReferenceExpression.getReferencedElement with explicit type argument inside enum member constructor
    • KT-31389 ClassFormatError with companion object in annotation with @JvmStatic

    ... (truncated)

    Changelog

    Sourced from kotlin-gradle-plugin's changelog.

    1.4.30

    Android

    • KT-42383 HMPP: Bad IDEA dependencies: Missing dependency from p1:jvmAndAndroid to p2:jvmAndAndroid

    Backend. Native

    • KT-38772 Native: support non-reified type parameters in typeOf
    • KT-42234 Move LLVM optimization parameters into konan.properties
    • KT-42649 IndexOutOfBoundsException during InlineClassTransformer lowering
    • KT-42942 Native: optimize peak backend memory by clearing BindingContext after psi2ir
    • KT-43198 Native: support init blocks inside inline classes

    Compiler

    New Features

    • KT-28055 Support init blocks inside inline classes
    • KT-28056 Consider supporting non-public primary constructors for inline classes
    • KT-41265 Support noarg compiler plugin for JVM IR
    • KT-42094 Allow open callable members in expect interfaces
    • KT-43129 FIR: Support OverloadResolutionByLambdaReturnType
    • KT-43592 Promote JVM IR compiler backend to Beta
    • KT-43919 Support loading Java annotations on base classes and implementing interfaces' type arguments
    • KT-44021 Enable JVM IR backend by default in 1.5

    Performance Improvements

    • KT-41352 JVM IR: reduce bytecode size in for loops and range checks with 'until' by not using inclusive end
    • KT-41644 NI: Infinite compilation
    • KT-42791 OutOfMemoryError on compilation using kotlin 1.4 on a class with a lot of type inference
    • KT-42920 NI: Improve performance around adding constraints

    Fixes

    • KT-11454 Load annotations on TYPE_USE/TYPE_PARAMETER positions from Java class-files
    • KT-11732 Verify error for generic interface method invocation with default parameters
    • KT-14612 "ISE: Recursive call in a lazy value" during processing of a (weakly) recursive type alias
    • KT-18344 Upper bound of a typealias type parameter is not reported correctly if it contains the typealias itself
    • KT-18768 @Notnull annotation from Java does not work with varargs
    • KT-20548 java.lang.IllegalStateException: Illegal class container on simple Java code parsing
    • KT-22465 Excessive synthetic method for private setter from superclass
    • KT-23816 Inline classes: constants and annotations
    • KT-24158 AE: No receiver found on incomplete code with $-signs
    • KT-24392 Nullability of Java arrays is read incorrectly if @Nullable annotation has both targets TYPE_USE and VALUE_PARAMETER
    • KT-26229 Lambda/anonymous function argument in parentheses is not supported for callsInPlace effect
    • KT-29735 KNPE at KtEnumEntrySuperclassReferenceExpression.getReferencedElement with explicit type argument inside enum member constructor
    • KT-31389 ClassFormatError with companion object in annotation with @JvmStatic
    • KT-31907 ISE: UNIT_EXPECTED_TYPE on parsing array literal inside lambda with Unit return type

    ... (truncated)

    Commits
    • 90ecf0f Revert "[notification] add notification about new jvm ir backend"
    • 8d2706a Update Kotlin/Native: 1.4.30-release-115
    • fd948c0 Add change-notes for 1.4.30 release
    • 2d8c18b Update Kotlin/Native: 1.4.30-dev-112
    • f71f162 Add API version 1.5 to accepted values in MPP language settings
    • 63b35c7 Introduce ApiVersion.KOTLIN_1_5
    • 4d6a1a8 JVM IR: Fix inline class mangling for calls to internal functions
    • 5a7c345 [notification] add notification about new jvm ir backend
    • f9dd878 Propagate all annotations during creating simple functional types
    • 5a686ea [JVM_IR] Reduce the amount of super suffixes on accesibility bridges.
    • Additional commits viewable in compare view

    Updates kotlin-stdlib from 1.4.21 to 1.4.30

    Release notes

    Sourced from kotlin-stdlib's releases.

    Kotlin 1.4.30

    CHANGELOG

    Android

    • KT-42383 HMPP: Bad IDEA dependencies: Missing dependency from p1:jvmAndAndroid to p2:jvmAndAndroid

    Backend. Native

    • KT-38772 Native: support non-reified type parameters in typeOf
    • KT-42234 Move LLVM optimization parameters into konan.properties
    • KT-42649 IndexOutOfBoundsException during InlineClassTransformer lowering
    • KT-42942 Native: optimize peak backend memory by clearing BindingContext after psi2ir
    • KT-43198 Native: support init blocks inside inline classes

    Compiler

    New Features

    • KT-28055 Support init blocks inside inline classes
    • KT-28056 Consider supporting non-public primary constructors for inline classes
    • KT-41265 Support noarg compiler plugin for JVM IR
    • KT-42094 Allow open callable members in expect interfaces
    • KT-43129 FIR: Support OverloadResolutionByLambdaReturnType
    • KT-43592 Promote JVM IR compiler backend to Beta
    • KT-43919 Support loading Java annotations on base classes and implementing interfaces' type arguments
    • KT-44021 Enable JVM IR backend by default in 1.5

    Performance Improvements

    • KT-41352 JVM IR: reduce bytecode size in for loops and range checks with 'until' by not using inclusive end
    • KT-41644 NI: Infinite compilation
    • KT-42791 OutOfMemoryError on compilation using kotlin 1.4 on a class with a lot of type inference
    • KT-42920 NI: Improve performance around adding constraints

    Fixes

    • KT-11454 Load annotations on TYPE_USE/TYPE_PARAMETER positions from Java class-files
    • KT-11732 Verify error for generic interface method invocation with default parameters
    • KT-14612 "ISE: Recursive call in a lazy value" during processing of a (weakly) recursive type alias
    • KT-18344 Upper bound of a typealias type parameter is not reported correctly if it contains the typealias itself
    • KT-18768 @Notnull annotation from Java does not work with varargs
    • KT-20548 java.lang.IllegalStateException: Illegal class container on simple Java code parsing
    • KT-22465 Excessive synthetic method for private setter from superclass
    • KT-23816 Inline classes: constants and annotations
    • KT-24158 AE: No receiver found on incomplete code with $-signs
    • KT-24392 Nullability of Java arrays is read incorrectly if @Nullable annotation has both targets TYPE_USE and VALUE_PARAMETER
    • KT-26229 Lambda/anonymous function argument in parentheses is not supported for callsInPlace effect
    • KT-29735 KNPE at KtEnumEntrySuperclassReferenceExpression.getReferencedElement with explicit type argument inside enum member constructor
    • KT-31389 ClassFormatError with companion object in annotation with @JvmStatic

    ... (truncated)

    Changelog

    Sourced from kotlin-stdlib's changelog.

    1.4.30

    Android

    • KT-42383 HMPP: Bad IDEA dependencies: Missing dependency from p1:jvmAndAndroid to p2:jvmAndAndroid

    Backend. Native

    • KT-38772 Native: support non-reified type parameters in typeOf
    • KT-42234 Move LLVM optimization parameters into konan.properties
    • KT-42649 IndexOutOfBoundsException during InlineClassTransformer lowering
    • KT-42942 Native: optimize peak backend memory by clearing BindingContext after psi2ir
    • KT-43198 Native: support init blocks inside inline classes

    Compiler

    New Features

    • KT-28055 Support init blocks inside inline classes
    • KT-28056 Consider supporting non-public primary constructors for inline classes
    • KT-41265 Support noarg compiler plugin for JVM IR
    • KT-42094 Allow open callable members in expect interfaces
    • KT-43129 FIR: Support OverloadResolutionByLambdaReturnType
    • KT-43592 Promote JVM IR compiler backend to Beta
    • KT-43919 Support loading Java annotations on base classes and implementing interfaces' type arguments
    • KT-44021 Enable JVM IR backend by default in 1.5

    Performance Improvements

    • KT-41352 JVM IR: reduce bytecode size in for loops and range checks with 'until' by not using inclusive end
    • KT-41644 NI: Infinite compilation
    • KT-42791 OutOfMemoryError on compilation using kotlin 1.4 on a class with a lot of type inference
    • KT-42920 NI: Improve performance around adding constraints

    Fixes

    • KT-11454 Load annotations on TYPE_USE/TYPE_PARAMETER positions from Java class-files
    • KT-11732 Verify error for generic interface method invocation with default parameters
    • KT-14612 "ISE: Recursive call in a lazy value" during processing of a (weakly) recursive type alias
    • KT-18344 Upper bound of a typealias type parameter is not reported correctly if it contains the typealias itself
    • KT-18768 @Notnull annotation from Java does not work with varargs
    • KT-20548 java.lang.IllegalStateException: Illegal class container on simple Java code parsing
    • KT-22465 Excessive synthetic method for private setter from superclass
    • KT-23816 Inline classes: constants and annotations
    • KT-24158 AE: No receiver found on incomplete code with $-signs
    • KT-24392 Nullability of Java arrays is read incorrectly if @Nullable annotation has both targets TYPE_USE and VALUE_PARAMETER
    • KT-26229 Lambda/anonymous function argument in parentheses is not supported for callsInPlace effect
    • KT-29735 KNPE at KtEnumEntrySuperclassReferenceExpression.getReferencedElement with explicit type argument inside enum member constructor
    • KT-31389 ClassFormatError with companion object in annotation with @JvmStatic
    • KT-31907 ISE: UNIT_EXPECTED_TYPE on parsing array literal inside lambda with Unit return type

    ... (truncated)

    Commits
    • 90ecf0f Revert "[notification] add notification about new jvm ir backend"
    • 8d2706a Update Kotlin/Native: 1.4.30-release-115
    • fd948c0 Add change-notes for 1.4.30 release
    • 2d8c18b Update Kotlin/Native: 1.4.30-dev-112
    • f71f162 Add API version 1.5 to accepted values in MPP language settings
    • 63b35c7 Introduce ApiVersion.KOTLIN_1_5
    • 4d6a1a8 JVM IR: Fix inline class mangling for calls to internal functions
    • 5a7c345 [notification] add notification about new jvm ir backend
    • f9dd878 Propagate all annotations during creating simple functional types
    • 5a686ea [JVM_IR] Reduce the amount of super suffixes on accesibility bridges.
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • Bump hilt_version from 2.31.2-alpha to 2.32-alpha

    Bump hilt_version from 2.31.2-alpha to 2.32-alpha

    Bumps hilt_version from 2.31.2-alpha to 2.32-alpha. Updates hilt-android-gradle-plugin from 2.31.2-alpha to 2.32-alpha

    Release notes

    Sourced from hilt-android-gradle-plugin's releases.

    Dagger 2.31.2

    Bug fixes

    • Issue #2300: Reverts an unintentional change to Hilt and dagger-android-support that depended on RC versions of AndroidX (850274b76)
    • Issue #2291: Reverts Hilt internal entry points back to public to avoid triggering an existing r8 optimization bug. (7a3d6fb3b)
    Commits

    Updates hilt-android from 2.31.2-alpha to 2.32-alpha

    Release notes

    Sourced from hilt-android's releases.

    Dagger 2.31.2

    Bug fixes

    • Issue #2300: Reverts an unintentional change to Hilt and dagger-android-support that depended on RC versions of AndroidX (850274b76)
    • Issue #2291: Reverts Hilt internal entry points back to public to avoid triggering an existing r8 optimization bug. (7a3d6fb3b)
    Commits

    Updates hilt-android-compiler from 2.31.2-alpha to 2.32-alpha

    Release notes

    Sourced from hilt-android-compiler's releases.

    Dagger 2.31.2

    Bug fixes

    • Issue #2300: Reverts an unintentional change to Hilt and dagger-android-support that depended on RC versions of AndroidX (850274b76)
    • Issue #2291: Reverts Hilt internal entry points back to public to avoid triggering an existing r8 optimization bug. (7a3d6fb3b)
    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • Bump coroutines_version from 1.3.5 to 1.4.2-native-mt

    Bump coroutines_version from 1.3.5 to 1.4.2-native-mt

    Bumps coroutines_version from 1.3.5 to 1.4.2-native-mt. Updates kotlinx-coroutines-core from 1.3.5 to 1.4.2-native-mt

    Release notes

    Sourced from kotlinx-coroutines-core's releases.

    1.4.2

    • Fixed StackOverflowError in Job.toString when Job is observed in its intermediate state (#2371).
    • Improved liveness and latency of Dispatchers.Default and Dispatchers.IO in low-loaded mode (#2381).
    • Improved performance of consecutive Channel.cancel invocations (#2384).
    • SharingStarted is now fun interface (#2397).
    • Additional lint settings for SharedFlow to catch programmatic errors early (#2376).
    • Fixed bug when mutex and semaphore were not released during cancellation (#2390, thanks to @Tilps for reproducing).
    • Some corner cases in cancellation propagation between coroutines and listenable futures are repaired (#1442, thanks to @vadimsemenov).
    • Fixed unconditional cast to CoroutineStackFrame in exception recovery that triggered failures of instrumented code (#2386).
    • Platform-specific dependencies are removed from kotlinx-coroutines-javafx (#2360).

    1.4.1

    This is a patch release with an important fix to the SharedFlow implementation.

    • SharedFlow: Fix scenario with concurrent emitters and cancellation of a subscriber (#2359, thanks to @vehovsky for the bug report).

    1.4.0

    Improvements

    • StateFlow, SharedFlow and corresponding operators are promoted to stable API (#2316).
    • Flow.debounce operator with timeout selector based on each individual element is added (#1216, thanks to @mkano9!).
    • CoroutineContext.job extension property is introduced (#2159).
    • Flow.combine operator is reworked:
      • Complete fairness is maintained for single-threaded dispatchers.
      • Its performance is improved, depending on the use-case, by at least 50% (#2296).
      • Quadratic complexity depending on the number of upstream flows is eliminated (#2296).
      • crossinline and inline-heavy internals are removed, fixing sporadic SIGSEGV on Mediatek Android devices (#1683, #1743).
    • Flow.zip operator performance is improved by 40%.
    • Various API has been promoted to stable or its deprecation level has been raised (#2316).

    Bug fixes

    • Suspendable stateIn operator propagates exception to the caller when upstream fails to produce initial value (#2329).
    • Fix SharedFlow with replay for subscribers working at different speed (#2325).
    • Do not fail debug agent installation when security manager does not provide access to system properties (#2311).
    • Cancelled lazy coroutines are properly cleaned up from debug agent output (#2294).
    • BlockHound false-positives are correctly filtered out (#2302, #2190, #2303).
    • Potential crash during a race between cancellation and upstream in Observable.asFlow is fixed (#2104, #2299, thanks to @LouisCAD and @drinkthestars).

    1.4.0-M1

    Breaking changes

    • The concept of atomic cancellation in channels is removed. All operations in channels and corresponding Flow operators are cancellable in non-atomic way (#1813).
    • If CoroutineDispatcher throws RejectedExecutionException, cancel current Job and schedule its execution to Dispatchers.IO (#2003).
    • CancellableContinuation.invokeOnCancellation is invoked if the continuation was cancelled while its resume has been dispatched (#1915).
    • Flow.singleOrNull operator is aligned with standard library and does not longer throw IllegalStateException on multiple values (#2289).

    New experimental features

    ... (truncated)

    Changelog

    Sourced from kotlinx-coroutines-core's changelog.

    Change log for kotlinx.coroutines

    Version 1.4.2

    • Fixed StackOverflowError in Job.toString when Job is observed in its intermediate state (#2371).
    • Improved liveness and latency of Dispatchers.Default and Dispatchers.IO in low-loaded mode (#2381).
    • Improved performance of consecutive Channel.cancel invocations (#2384).
    • SharingStarted is now fun interface (#2397).
    • Additional lint settings for SharedFlow to catch programmatic errors early (#2376).
    • Fixed bug when mutex and semaphore were not released during cancellation (#2390, thanks to @Tilps for reproducing).
    • Some corner cases in cancellation propagation between coroutines and listenable futures are repaired (#1442, thanks to @vadimsemenov).
    • Fixed unconditional cast to CoroutineStackFrame in exception recovery that triggered failures of instrumented code (#2386).
    • Platform-specific dependencies are removed from kotlinx-coroutines-javafx (#2360).

    Version 1.4.1

    This is a patch release with an important fix to the SharedFlow implementation.

    • SharedFlow: Fix scenario with concurrent emitters and cancellation of subscriber (#2359, thanks to @vehovsky for the bug report).

    Version 1.4.0

    Improvements

    • StateFlow, SharedFlow and corresponding operators are promoted to stable API (#2316).
    • Flow.debounce operator with timeout selector based on each individual element is added (#1216, thanks to @mkano9!).
    • CoroutineContext.job extension property is introduced (#2159).
    • Flow.combine operator is reworked:
      • Complete fairness is maintained for single-threaded dispatchers.
      • Its performance is improved, depending on the use-case, by at least 50% (#2296).
      • Quadratic complexity depending on the number of upstream flows is eliminated (#2296).
      • crossinline and inline-heavy internals are removed, fixing sporadic SIGSEGV on Mediatek Android devices (#1683, #1743).
    • Flow.zip operator performance is improved by 40%.
    • Various API has been promoted to stable or its deprecation level has been raised (#2316).

    Bug fixes

    • Suspendable stateIn operator propagates exception to the caller when upstream fails to produce initial value (#2329).
    • Fix SharedFlow with replay for subscribers working at different speed (#2325).
    • Do not fail debug agent installation when security manager does not provide access to system properties (#2311).
    • Cancelled lazy coroutines are properly cleaned up from debug agent output (#2294).
    • BlockHound false-positives are correctly filtered out (#2302, #2190, #2303).
    • Potential crash during a race between cancellation and upstream in Observable.asFlow is fixed (#2104, #2299, thanks to @LouisCAD and @drinkthestars).

    Version 1.4.0-M1

    Breaking changes

    • The concept of atomic cancellation in channels is removed. All operations in channels and corresponding Flow operators are cancellable in non-atomic way (#1813).

    ... (truncated)

    Commits

    Updates kotlinx-coroutines-android from 1.3.5 to 1.4.2-native-mt

    Release notes

    Sourced from kotlinx-coroutines-android's releases.

    1.4.2

    • Fixed StackOverflowError in Job.toString when Job is observed in its intermediate state (#2371).
    • Improved liveness and latency of Dispatchers.Default and Dispatchers.IO in low-loaded mode (#2381).
    • Improved performance of consecutive Channel.cancel invocations (#2384).
    • SharingStarted is now fun interface (#2397).
    • Additional lint settings for SharedFlow to catch programmatic errors early (#2376).
    • Fixed bug when mutex and semaphore were not released during cancellation (#2390, thanks to @Tilps for reproducing).
    • Some corner cases in cancellation propagation between coroutines and listenable futures are repaired (#1442, thanks to @vadimsemenov).
    • Fixed unconditional cast to CoroutineStackFrame in exception recovery that triggered failures of instrumented code (#2386).
    • Platform-specific dependencies are removed from kotlinx-coroutines-javafx (#2360).

    1.4.1

    This is a patch release with an important fix to the SharedFlow implementation.

    • SharedFlow: Fix scenario with concurrent emitters and cancellation of a subscriber (#2359, thanks to @vehovsky for the bug report).

    1.4.0

    Improvements

    • StateFlow, SharedFlow and corresponding operators are promoted to stable API (#2316).
    • Flow.debounce operator with timeout selector based on each individual element is added (#1216, thanks to @mkano9!).
    • CoroutineContext.job extension property is introduced (#2159).
    • Flow.combine operator is reworked:
      • Complete fairness is maintained for single-threaded dispatchers.
      • Its performance is improved, depending on the use-case, by at least 50% (#2296).
      • Quadratic complexity depending on the number of upstream flows is eliminated (#2296).
      • crossinline and inline-heavy internals are removed, fixing sporadic SIGSEGV on Mediatek Android devices (#1683, #1743).
    • Flow.zip operator performance is improved by 40%.
    • Various API has been promoted to stable or its deprecation level has been raised (#2316).

    Bug fixes

    • Suspendable stateIn operator propagates exception to the caller when upstream fails to produce initial value (#2329).
    • Fix SharedFlow with replay for subscribers working at different speed (#2325).
    • Do not fail debug agent installation when security manager does not provide access to system properties (#2311).
    • Cancelled lazy coroutines are properly cleaned up from debug agent output (#2294).
    • BlockHound false-positives are correctly filtered out (#2302, #2190, #2303).
    • Potential crash during a race between cancellation and upstream in Observable.asFlow is fixed (#2104, #2299, thanks to @LouisCAD and @drinkthestars).

    1.4.0-M1

    Breaking changes

    • The concept of atomic cancellation in channels is removed. All operations in channels and corresponding Flow operators are cancellable in non-atomic way (#1813).
    • If CoroutineDispatcher throws RejectedExecutionException, cancel current Job and schedule its execution to Dispatchers.IO (#2003).
    • CancellableContinuation.invokeOnCancellation is invoked if the continuation was cancelled while its resume has been dispatched (#1915).
    • Flow.singleOrNull operator is aligned with standard library and does not longer throw IllegalStateException on multiple values (#2289).

    New experimental features

    ... (truncated)

    Changelog

    Sourced from kotlinx-coroutines-android's changelog.

    Change log for kotlinx.coroutines

    Version 1.4.2

    • Fixed StackOverflowError in Job.toString when Job is observed in its intermediate state (#2371).
    • Improved liveness and latency of Dispatchers.Default and Dispatchers.IO in low-loaded mode (#2381).
    • Improved performance of consecutive Channel.cancel invocations (#2384).
    • SharingStarted is now fun interface (#2397).
    • Additional lint settings for SharedFlow to catch programmatic errors early (#2376).
    • Fixed bug when mutex and semaphore were not released during cancellation (#2390, thanks to @Tilps for reproducing).
    • Some corner cases in cancellation propagation between coroutines and listenable futures are repaired (#1442, thanks to @vadimsemenov).
    • Fixed unconditional cast to CoroutineStackFrame in exception recovery that triggered failures of instrumented code (#2386).
    • Platform-specific dependencies are removed from kotlinx-coroutines-javafx (#2360).

    Version 1.4.1

    This is a patch release with an important fix to the SharedFlow implementation.

    • SharedFlow: Fix scenario with concurrent emitters and cancellation of subscriber (#2359, thanks to @vehovsky for the bug report).

    Version 1.4.0

    Improvements

    • StateFlow, SharedFlow and corresponding operators are promoted to stable API (#2316).
    • Flow.debounce operator with timeout selector based on each individual element is added (#1216, thanks to @mkano9!).
    • CoroutineContext.job extension property is introduced (#2159).
    • Flow.combine operator is reworked:
      • Complete fairness is maintained for single-threaded dispatchers.
      • Its performance is improved, depending on the use-case, by at least 50% (#2296).
      • Quadratic complexity depending on the number of upstream flows is eliminated (#2296).
      • crossinline and inline-heavy internals are removed, fixing sporadic SIGSEGV on Mediatek Android devices (#1683, #1743).
    • Flow.zip operator performance is improved by 40%.
    • Various API has been promoted to stable or its deprecation level has been raised (#2316).

    Bug fixes

    • Suspendable stateIn operator propagates exception to the caller when upstream fails to produce initial value (#2329).
    • Fix SharedFlow with replay for subscribers working at different speed (#2325).
    • Do not fail debug agent installation when security manager does not provide access to system properties (#2311).
    • Cancelled lazy coroutines are properly cleaned up from debug agent output (#2294).
    • BlockHound false-positives are correctly filtered out (#2302, #2190, #2303).
    • Potential crash during a race between cancellation and upstream in Observable.asFlow is fixed (#2104, #2299, thanks to @LouisCAD and @drinkthestars).

    Version 1.4.0-M1

    Breaking changes

    • The concept of atomic cancellation in channels is removed. All operations in channels and corresponding Flow operators are cancellable in non-atomic way (#1813).

    ... (truncated)

    Commits

    Updates kotlinx-coroutines-test from 1.3.5 to 1.4.2-native-mt

    Release notes

    Sourced from kotlinx-coroutines-test's releases.

    1.4.2

    • Fixed StackOverflowError in Job.toString when Job is observed in its intermediate state (#2371).
    • Improved liveness and latency of Dispatchers.Default and Dispatchers.IO in low-loaded mode (#2381).
    • Improved performance of consecutive Channel.cancel invocations (#2384).
    • SharingStarted is now fun interface (#2397).
    • Additional lint settings for SharedFlow to catch programmatic errors early (#2376).
    • Fixed bug when mutex and semaphore were not released during cancellation (#2390, thanks to @Tilps for reproducing).
    • Some corner cases in cancellation propagation between coroutines and listenable futures are repaired (#1442, thanks to @vadimsemenov).
    • Fixed unconditional cast to CoroutineStackFrame in exception recovery that triggered failures of instrumented code (#2386).
    • Platform-specific dependencies are removed from kotlinx-coroutines-javafx (#2360).

    1.4.1

    This is a patch release with an important fix to the SharedFlow implementation.

    • SharedFlow: Fix scenario with concurrent emitters and cancellation of a subscriber (#2359, thanks to @vehovsky for the bug report).

    1.4.0

    Improvements

    • StateFlow, SharedFlow and corresponding operators are promoted to stable API (#2316).
    • Flow.debounce operator with timeout selector based on each individual element is added (#1216, thanks to @mkano9!).
    • CoroutineContext.job extension property is introduced (#2159).
    • Flow.combine operator is reworked:
      • Complete fairness is maintained for single-threaded dispatchers.
      • Its performance is improved, depending on the use-case, by at least 50% (#2296).
      • Quadratic complexity depending on the number of upstream flows is eliminated (#2296).
      • crossinline and inline-heavy internals are removed, fixing sporadic SIGSEGV on Mediatek Android devices (#1683, #1743).
    • Flow.zip operator performance is improved by 40%.
    • Various API has been promoted to stable or its deprecation level has been raised (#2316).

    Bug fixes

    • Suspendable stateIn operator propagates exception to the caller when upstream fails to produce initial value (#2329).
    • Fix SharedFlow with replay for subscribers working at different speed (#2325).
    • Do not fail debug agent installation when security manager does not provide access to system properties (#2311).
    • Cancelled lazy coroutines are properly cleaned up from debug agent output (#2294).
    • BlockHound false-positives are correctly filtered out (#2302, #2190, #2303).
    • Potential crash during a race between cancellation and upstream in Observable.asFlow is fixed (#2104, #2299, thanks to @LouisCAD and @drinkthestars).

    1.4.0-M1

    Breaking changes

    • The concept of atomic cancellation in channels is removed. All operations in channels and corresponding Flow operators are cancellable in non-atomic way (#1813).
    • If CoroutineDispatcher throws RejectedExecutionException, cancel current Job and schedule its execution to Dispatchers.IO (#2003).
    • CancellableContinuation.invokeOnCancellation is invoked if the continuation was cancelled while its resume has been dispatched (#1915).
    • Flow.singleOrNull operator is aligned with standard library and does not longer throw IllegalStateException on multiple values (#2289).

    New experimental features

    ... (truncated)

    Changelog

    Sourced from kotlinx-coroutines-test's changelog.

    Change log for kotlinx.coroutines

    Version 1.4.2

    • Fixed StackOverflowError in Job.toString when Job is observed in its intermediate state (#2371).
    • Improved liveness and latency of Dispatchers.Default and Dispatchers.IO in low-loaded mode (#2381).
    • Improved performance of consecutive Channel.cancel invocations (#2384).
    • SharingStarted is now fun interface (#2397).
    • Additional lint settings for SharedFlow to catch programmatic errors early (#2376).
    • Fixed bug when mutex and semaphore were not released during cancellation (#2390, thanks to @Tilps for reproducing).
    • Some corner cases in cancellation propagation between coroutines and listenable futures are repaired (#1442, thanks to @vadimsemenov).
    • Fixed unconditional cast to CoroutineStackFrame in exception recovery that triggered failures of instrumented code (#2386).
    • Platform-specific dependencies are removed from kotlinx-coroutines-javafx (#2360).

    Version 1.4.1

    This is a patch release with an important fix to the SharedFlow implementation.

    • SharedFlow: Fix scenario with concurrent emitters and cancellation of subscriber (#2359, thanks to @vehovsky for the bug report).

    Version 1.4.0

    Improvements

    • StateFlow, SharedFlow and corresponding operators are promoted to stable API (#2316).
    • Flow.debounce operator with timeout selector based on each individual element is added (#1216, thanks to @mkano9!).
    • CoroutineContext.job extension property is introduced (#2159).
    • Flow.combine operator is reworked:
      • Complete fairness is maintained for single-threaded dispatchers.
      • Its performance is improved, depending on the use-case, by at least 50% (#2296).
      • Quadratic complexity depending on the number of upstream flows is eliminated (#2296).
      • crossinline and inline-heavy internals are removed, fixing sporadic SIGSEGV on Mediatek Android devices (#1683, #1743).
    • Flow.zip operator performance is improved by 40%.
    • Various API has been promoted to stable or its deprecation level has been raised (#2316).

    Bug fixes

    • Suspendable stateIn operator propagates exception to the caller when upstream fails to produce initial value (#2329).
    • Fix SharedFlow with replay for subscribers working at different speed (#2325).
    • Do not fail debug agent installation when security manager does not provide access to system properties (#2311).
    • Cancelled lazy coroutines are properly cleaned up from debug agent output (#2294).
    • BlockHound false-positives are correctly filtered out (#2302, #2190, #2303).
    • Potential crash during a race between cancellation and upstream in Observable.asFlow is fixed (#2104, #2299, thanks to @LouisCAD and @drinkthestars).

    Version 1.4.0-M1

    Breaking changes

    • The concept of atomic cancellation in channels is removed. All operations in channels and corresponding Flow operators are cancellable in non-atomic way (#1813).

    ... (truncated)

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • Bump mockk from 1.9.3 to 1.10.6

    Bump mockk from 1.9.3 to 1.10.6

    Bumps mockk from 1.9.3 to 1.10.6.

    Release notes

    Sourced from mockk's releases.

    v1.10.6

    Several bugfixes

    v1.10.5

    Rolled back to Kotlin v1.3.72 to fix backwards compatibility issues; looks like we upgraded to Kotlin 1.4 too soon, will likely upgrade again when the adoption of Kotlin 1.4 is higher.

    v1.10.4

    Restored jdk8 compatibility without needing a different version and improved Kotlin 1.3 compatibility.

    Jdk8-compliant build for 1.10.3

    No release notes provided.

    v1.10.3

    • upgrade to 1.4.20
    • issue #352 prevent slots from being used when verifying multiple calls
    • issue #510 changed the answers for collections to return a new instance every time
    • issue #315: Allow to combine @SpyK with @InjectMockKs
    • PR #518 mockkStatic hard reference support

    MockK v1.10.0

    • fix of build scripts (big effort to restore build after Gradle upgrade)
    • gradle 6.3, kotlin 1.3.61, byte buddy 1.10.9, coroutines 1.3.3, objenesis 3.1/2.6, dokka 0.10.1
    • JDK 13 / 14 runnable
    • make stack traces in verify messages optional #427
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • Bump com.diffplug.spotless from 5.7.0 to 6.12.0

    Bump com.diffplug.spotless from 5.7.0 to 6.12.0

    Bumps com.diffplug.spotless from 5.7.0 to 6.12.0.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump firebase-bom from 26.7.0 to 31.1.0

    Bump firebase-bom from 26.7.0 to 31.1.0

    Bumps firebase-bom from 26.7.0 to 31.1.0.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump firebase-bom from 26.7.0 to 31.0.3

    Bump firebase-bom from 26.7.0 to 31.0.3

    Bumps firebase-bom from 26.7.0 to 31.0.3.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump firebase-bom from 26.7.0 to 31.0.2

    Bump firebase-bom from 26.7.0 to 31.0.2

    Bumps firebase-bom from 26.7.0 to 31.0.2.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump firebase-bom from 26.7.0 to 31.0.1

    Bump firebase-bom from 26.7.0 to 31.0.1

    Bumps firebase-bom from 26.7.0 to 31.0.1.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump com.diffplug.spotless from 5.7.0 to 6.12.1

    Bump com.diffplug.spotless from 5.7.0 to 6.12.1

    Bumps com.diffplug.spotless from 5.7.0 to 6.12.1.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump firebase-bom from 26.7.0 to 31.1.1

    Bump firebase-bom from 26.7.0 to 31.1.1

    Bumps firebase-bom from 26.7.0 to 31.1.1.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump mockk from 1.10.6 to 1.13.3

    Bump mockk from 1.10.6 to 1.13.3

    Bumps mockk from 1.10.6 to 1.13.3.

    Release notes

    Sourced from mockk's releases.

    V1.13.3

    What's Changed

    New Contributors

    Full Changelog: https://github.com/mockk/mockk/compare/1.13.2...1.13.3

    1.13.2

    What's Changed

    New Contributors

    Full Changelog: https://github.com/mockk/mockk/compare/1.13.1...1.13.2

    1.13.1

    New major release, mainly because the dependency to be included in gradle/maven files has changed from io.mockk:mockk to io.mockk:mockk-<platform>, where platform is either jvm or android.

    What's Changed

    Full Changelog: https://github.com/mockk/mockk/compare/v1.12.8...1.13.1

    V1.12.8

    Big thanks to @​aSemy, @​qoomon and @​kubode for investigating and fixing the bugs introduced in v1.12.7 and further improving the library!

    What's Changed

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump mockk-android from 1.10.6 to 1.13.3

    Bump mockk-android from 1.10.6 to 1.13.3

    Bumps mockk-android from 1.10.6 to 1.13.3.

    Release notes

    Sourced from mockk-android's releases.

    V1.13.3

    What's Changed

    New Contributors

    Full Changelog: https://github.com/mockk/mockk/compare/1.13.2...1.13.3

    1.13.2

    What's Changed

    New Contributors

    Full Changelog: https://github.com/mockk/mockk/compare/1.13.1...1.13.2

    1.13.1

    New major release, mainly because the dependency to be included in gradle/maven files has changed from io.mockk:mockk to io.mockk:mockk-<platform>, where platform is either jvm or android.

    What's Changed

    Full Changelog: https://github.com/mockk/mockk/compare/v1.12.8...1.13.1

    V1.12.8

    Big thanks to @​aSemy, @​qoomon and @​kubode for investigating and fixing the bugs introduced in v1.12.7 and further improving the library!

    What's Changed

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump gradle from 4.1.2 to 7.3.1

    Bump gradle from 4.1.2 to 7.3.1

    Bumps gradle from 4.1.2 to 7.3.1.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump coil from 1.1.1 to 2.2.2

    Bump coil from 1.1.1 to 2.2.2

    Bumps coil from 1.1.1 to 2.2.2.

    Release notes

    Sourced from coil's releases.

    2.2.2

    See CHANGELOG.md.

    2.2.1

    See CHANGELOG.md.

    2.2.0

    See CHANGELOG.md.

    2.1.0

    See CHANGELOG.md.

    2.0.0

    See CHANGELOG.md.

    2.0.0-rc03

    See CHANGELOG.md.

    2.0.0-rc02

    See CHANGELOG.md.

    2.0.0-rc01

    See CHANGELOG.md.

    2.0.0-alpha09

    See CHANGELOG.md.

    2.0.0-alpha08

    See CHANGELOG.md.

    2.0.0-alpha07

    See CHANGELOG.md.

    2.0.0-alpha06

    See CHANGELOG.md.

    2.0.0-alpha05

    See CHANGELOG.md.

    2.0.0-alpha04

    See CHANGELOG.md.

    2.0.0-alpha03

    See CHANGELOG.md.

    2.0.0-alpha02

    See CHANGELOG.md.

    2.0.0-alpha01

    See CHANGELOG.md.

    ... (truncated)

    Changelog

    Sourced from coil's changelog.

    [2.2.2] - October 1, 2022

    • Ensure an image loader is fully initialized before registering its system callbacks. #1465
    • Set the preferred bitmap config in VideoFrameDecoder on API 30+ to avoid banding. #1487
    • Fix parsing paths containing # in FileUriMapper. #1466
    • Fix reading responses with non-ascii headers from the disk cache. #1468
    • Fix decoding videos inside asset subfolders. #1489
    • Update androidx.annotation to 1.5.0.

    [2.2.1] - September 8, 2022

    • Fix: RoundedCornersTransformation now properly scales the input bitmap.
    • Remove dependency on the kotlin-parcelize plugin.
    • Update compile SDK to 33.
    • Downgrade androidx.appcompat:appcompat-resources to 1.4.2 to work around #1423.

    [2.2.0] - August 16, 2022

    • New: Add ImageRequest.videoFramePercent to coil-video to support specifying the video frame as a percent of the video's duration.
    • New: Add ExifOrientationPolicy to configure how BitmapFactoryDecoder treats EXIF orientation data.
    • Fix: Don't throw an exception in RoundedCornersTransformation if passed a size with an undefined dimension.
    • Fix: Read a GIF's frame delay as two unsigned bytes instead of one signed byte.
    • Update Kotlin to 1.7.10.
    • Update Coroutines to 1.6.4.
    • Update Compose to 1.2.1.
    • Update OkHttp to 4.10.0.
    • Update Okio to 3.2.0.
    • Update accompanist-drawablepainter to 0.25.1.
    • Update androidx.annotation to 1.4.0.
    • Update androidx.appcompat:appcompat-resources to 1.5.0.
    • Update androidx.core to 1.8.0.

    [2.1.0] - May 17, 2022

    • New: Support loading ByteArrays. (#1202)
    • New: Support setting custom CSS rules for SVGs using ImageRequest.Builder.css. (#1210)
    • Fix: Convert GenericViewTarget's private methods to protected. (#1273)
    • Update compile SDK to 32. (#1268)

    [2.0.0] - May 10, 2022

    Coil 2.0.0 is a major iteration of the library and includes breaking changes. Check out the upgrade guide for how to upgrade.

    • New: Introduce AsyncImage in coil-compose. Check out the documentation for more info.
    // Display an image from the network.
    AsyncImage(
        model = "https://example.com/image.jpg",
        contentDescription = null
    </tr></table> 
    

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
Owner
Wajahat Karim
🧑🏽‍💻 Lead Android @AirliftTech 🔥 Google Dev Expert (GDE). 📱 Android Developer . 💻 Open Source . 📕 Books x2 Author 📝 Blogger 🎤 Public Speaker
Wajahat Karim
MVVM + Kotlin + Jetpack Compose +Navigation Compose + Hilt + Retrofit + Unit Testing + Compose Testing + Coroutines + Kotlin Flow + Io mockK

MvvmKotlinJetpackCompose Why do we need an architecture even when you can make an app without it? let's say you created a project without any architec

Sayyed Rizwan 46 Nov 29, 2022
Simple Notes app demonstrates modern Android development with Hilt, Material Motion, Coroutines, Flow, Jetpack (Room, ViewModel) based on MVVM architecture.

Simple Notes app demonstrates modern Android development with Hilt, Material Motion, Coroutines, Flow, Jetpack (Room, ViewModel) based on MVVM architecture.

Aravind Chowdary 2 Sep 3, 2022
Shreyas Patil 2.1k Dec 30, 2022
(Coroutine, Flow(+StateFlow), Hilt, JetPack, MVVM, Repository Pattern, Retrofit2 & OkHttp3, Moshi, Glide, Timber, Material-Components)

(Coroutine, Flow(+StateFlow), Hilt, JetPack, MVVM, Repository Pattern, Retrofit2 & OkHttp3, Moshi, Glide, Timber, Material-Components)

훈성 2 Nov 15, 2022
An app which displays questions from Stack Exchange from it's api. Can search questions with tags as well. Uses MVVM architecture, dependency injection, coroutines, retrofit2 for network calls

Stack Exchange app What the app does? Shows a list of trending questions from stack exchange api Can search for the desires question. Can add tags to

null 0 Apr 27, 2022
Note taking app using MVVM architecture with Hilt, Material Motion, Coroutines, Flow, Jetpack

Note taking app using MVVM architecture with Hilt, Material Motion, Coroutines, Flow, Jetpack (Room, ViewModel,Paging3).

Ranbir Singh 7 Apr 25, 2022
🦄 Android Pokedex-AR using ARCore, Sceneform, Hilt, Coroutines, Flow, Jetpack (Room, ViewModel, LiveData) based on MVVM architecture.

?? Android Pokedex-AR using ARCore, Sceneform, Hilt, Coroutines, Flow, Jetpack (Room, ViewModel, LiveData) based on MVVM architecture.

Jaewoong Eum 535 Dec 9, 2022
Patter Lock using Hilt, Coroutines, Flow and Custom View Components based on MVVM architecture.

Pattern Lock App Sample project for created Pattern Lock View using custom view. Preview Usage Step 1 Add the PatterLockView in your XML layout file.

Furkan Özcan 5 Aug 22, 2021
:movie_camera: Movie discovery app showcasing Android best practices with Google's recommended architecture: MVVM + Repository + Offline support + Android Architecture Components + Paging library & Retrofit2.

Popular Movies Stage 1 + Stage 2 Discover the most popular and top rated movies playing. Movies data fetched using themoviedb.org API. ✨ Screenshots M

Yassin AJDI 189 Nov 26, 2022
The News App has been carried out within the framework of the MVVM architecture, information about news is obtained by consulting an API, it is built usisng Jetpack Copose, Coroutines, Dependency Injection with Hilt and Retrofit

Journalist The News App consists of an application that displays the latest news from EEUU from an API that provides official and updated information.

null 0 Nov 3, 2021
A simple NewsApp built using Jetpack Compose, MVVM Architecture, Dagger Hilt and Kotlin Flow

NewsApp is simple App which uses NewsAPI to get top headlines for country you live in or you can search for a specific news. Focus of this app is to d

ElvisOperator 4 Aug 20, 2022
Productivity Note App utilizing Jetpack Compose

DailyDoc Productivity Note App utilizing Jetpack Compose Currently working on improving UI features and will be applying these directly to the main br

Bryan L 31 Dec 16, 2022
Daily Doc is a Productivity Note App utilizing Jetpack Compose

Daily Doc is a productivity app to help you keep track of your daily progress inspired by 100-day-challenges.

Bryan L 31 Dec 16, 2022
🦁 A Disney app using transformation motions based on MVVM (ViewModel, Coroutines, Flow, LiveData, Room, Repository, Koin) architecture.

DisneyMotions A demo Disney app using transformation motions based on MVVM architecture. The motion system is included in the 1.2.0-alpha05 released m

Jaewoong Eum 1.4k Dec 16, 2022
To Do List App is built in Kotlin using Material 3, Data Binding, Navigation Component Graphs, Room persistence library, Kotlin coroutines, LiveData, Dagger Hilt, and Notifications following MVVM Architecture.

ToDoListApp ToDoList App demonstrates modern Android development with Hilt, Coroutines, LiveData, Jetpack (Room, ViewModel), and Material 3 Design bas

Naman Garg 10 Jan 8, 2023
Nice and simple DSL for Espresso in Kotlin

Kakao Nice and simple DSL for Espresso in Kotlin Introduction At Agoda, we have more than 1000 automated tests to ensure our application's quality and

null 212 Dec 26, 2022
🛡️ Android security (camera/microphone dots indicators) app using Hilt, Animations, Coroutines, Material, StateFlow, Jetpack based on MVVM architecture.

??️ Android security app using Hilt, Animations, Coroutines, Material, StateFlow, Jetpack (Room, ViewModel, Paging, Security, Biometrics, Start-up) based on MVVM architecture.

null 639 Jan 6, 2023
A Simple Expense Tracker App 📱 built to demonstrate the use of modern android architecture component with MVVM Architecture

Expenso ?? A Simple Expense Tracker App ?? built to demonstrate the use of modern android architecture component with MVVM Architecture ?? . Made with

Michel Horacio 1 Dec 28, 2022