• Joined on 2025-03-25
32 contributions in the last 12 months
MayJunJulAugSepOctNovDecJanFebMarAprMonWedFri
Less
More
qtime created pull request voca/voca#10 2025-04-08 15:40:40 +00:00
feedback/main-08-04-25
qtime pushed to feedback/main-08-04-25 at voca/voca 2025-04-08 15:39:41 +00:00
f6f87fc508 Fix DI comment and return accidentally removed code
qtime pushed to feedback/main-08-04-25 at voca/voca 2025-04-08 14:54:22 +00:00
004b057789 Refactor and simplify architecture, reduce use case redundancy
qtime created branch feedback/main-08-04-25 in voca/voca 2025-04-08 14:54:22 +00:00
qtime commented on pull request voca/voca#4 2025-04-01 04:50:28 +00:00
recovery-branch

I see by default, it takes the line commented on plus four lines from the top 🤔 I'll keep that in mind for next time

qtime commented on pull request voca/voca#4 2025-03-31 20:15:07 +00:00
recovery-branch

Replaceable with Kotlin Coroutines

qtime suggested changes for voca/voca#4 2025-03-31 20:15:07 +00:00
recovery-branch
qtime commented on pull request voca/voca#4 2025-03-31 20:15:07 +00:00
recovery-branch

These comments are just noise, the enum class speaks for itself, no?

qtime commented on pull request voca/voca#4 2025-03-31 20:15:07 +00:00
recovery-branch

For concurrency safety, I suggest the following approach that is more idiomatic and explicit with the intent:

qtime commented on pull request voca/voca#4 2025-03-31 20:15:07 +00:00
recovery-branch

None of these seem to have been set.

qtime commented on pull request voca/voca#4 2025-03-31 20:15:07 +00:00
recovery-branch

Be careful when combining the elvis operator (?:) with the run scoping function - it is not the same as a null-check via an if(x == null) or a let call (x?.let {}).

qtime commented on pull request voca/voca#4 2025-03-31 20:15:07 +00:00
recovery-branch

Kotlin Coroutines 😄 They handling threading for you

qtime commented on pull request voca/voca#4 2025-03-31 20:15:07 +00:00
recovery-branch

Audio playback responsibilities can be moved to a dedicated class

qtime commented on pull request voca/voca#4 2025-03-31 20:15:07 +00:00
recovery-branch

test code in production 👀

qtime commented on pull request voca/voca#4 2025-03-31 20:15:07 +00:00
recovery-branch

What ProcessingStatus states are not being handled? Enums can be exhausted in a when statement

qtime commented on pull request voca/voca#4 2025-03-31 20:15:07 +00:00
recovery-branch

(Sorry, idk how to make multiline comments on this platform)

qtime commented on pull request voca/voca#4 2025-03-31 20:15:07 +00:00
recovery-branch

I suggest you don't model your screen state this way. It works on a small scale but quickly grows to become unmanageable later on. Prefer a single data class with all the state needed.

qtime commented on pull request voca/voca#4 2025-03-31 20:15:07 +00:00
recovery-branch

ViewModels generally expose a StateFlow that emits changes, which the UI then reacts to (works well with Compose, but can also work with Fragments and Views). A single state is generally exposed to observe per screen. The ViewModel has separate states internally which then gets combined into a single state for simplicity for the view

qtime commented on pull request voca/voca#4 2025-03-31 20:15:07 +00:00
recovery-branch

Timber is a solid library for logging in Android apps.

qtime commented on pull request voca/voca#4 2025-03-31 20:15:07 +00:00
recovery-branch

With Kotlin's suspending functions, you can write async code in a sequential matter. Handler is less commonly used since the introduction of Kotlin coroutines. Here is a rough equivalent using a suspending function: