Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[TECHNICAL] Technical improvements for user quota #4525

Open
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

joragua
Copy link
Collaborator

@joragua joragua commented Dec 11, 2024

Related Issues

App: #4521

  • Add changelog files for the fixed issues in folder changelog/unreleased. More info here
  • Add feature to Release Notes in ReleaseNotesViewModel.kt creating a new ReleaseNote() with String resources (if required)

QA

@joragua joragua force-pushed the technical/technical_improvements_for_quota branch from 8e7bfe9 to 2f0df52 Compare December 11, 2024 09:38
@joragua joragua self-assigned this Dec 11, 2024
@joragua joragua linked an issue Dec 11, 2024 that may be closed by this pull request
10 tasks
@joragua joragua force-pushed the technical/technical_improvements_for_quota branch from 1f95f15 to 8d5c35f Compare December 11, 2024 10:45
@joragua joragua marked this pull request as ready for review December 11, 2024 12:12
@joragua joragua requested a review from JuancaG05 December 11, 2024 12:12
Copy link
Collaborator

@JuancaG05 JuancaG05 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good @joragua!! Let's do some changes here 👍

useCase = getStoredQuotaUseCase,
useCaseParams = GetStoredQuotaUseCase.Params(accountName = accountName)
)
val userQuota: Flow<UserQuota> = getStoredQuotaAsStreamUseCase(GetStoredQuotaAsStreamUseCase.Params(accountName))
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hm, not sure if I like this... I think it would be better being encapsulated with a private variable. Otherwise everytime we access userQuota, the use case might be executed, and that's not what we want. Check for example SettingsPictureUploadsViewModel to see how this is done with the pictureUploads variable 👍

private val drawerViewModel by viewModel<DrawerViewModel>()
private val drawerViewModel by viewModel<DrawerViewModel> {
parametersOf(
account?.name
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What if account is null? Did you check where this value is set in BaseActivity?

Comment on lines -415 to -416
is UIResult.Loading -> getAccountQuotaText()?.text = getString(R.string.drawer_loading_quota)
is UIResult.Error -> getAccountQuotaText()?.text = getString(R.string.drawer_unavailable_used_storage)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We're losing these 2 cases!! We shouldn't, they are so necessary

getAccountQuotaStatusText()?.visibility = View.GONE
}
}
collectLatestLifecycleFlow(drawerViewModel.userQuota) { userQuota ->
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did some changes in all these lines in the Detekt branch, I think just for the MaxLineLength rule. Try to keep them in the new place for these lines so that we don't duplicate work

@Query(SELECT_QUOTA)
fun getQuotaForAccountAsFlow(
accountName: String
): Flow<UserQuotaEntity>
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why with the same SQL query you have a nullable result in the previous method but not here?


ocLocalUserDataSource.deleteQuotaForAccount(OC_ACCOUNT_NAME)
val userQuota = ocLocalUserDataSource.getQuotaForAccountAsFlow(OC_ACCOUNT_NAME).first()
assertEquals(userQuotaEntity.toModel(), userQuota)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
assertEquals(userQuotaEntity.toModel(), userQuota)
assertEquals(OC_USER_QUOTA, userQuota)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done ✅

} returns flowOf(listOf(userQuotaEntity))

val listOfUserQuotas = ocLocalUserDataSource.getAllUserQuotasAsFlow().first()
assertEquals(listOf(userQuotaEntity.toModel()), listOfUserQuotas)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
assertEquals(listOf(userQuotaEntity.toModel()), listOfUserQuotas)
assertEquals(listOf(OC_USER_QUOTA), listOfUserQuotas)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as previous comment 😄

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[TECHNICAL] Technical improvements for user quota
2 participants