Skip to content

Commit 511954c

Browse files
Reverts PM-14995 (#4633)
1 parent d96494e commit 511954c

File tree

39 files changed

+56
-320
lines changed

39 files changed

+56
-320
lines changed

app/src/main/java/com/x8bit/bitwarden/data/auth/repository/model/Organization.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,4 @@ data class Organization(
1818
val shouldManageResetPassword: Boolean,
1919
val shouldUseKeyConnector: Boolean,
2020
val role: OrganizationType,
21-
val shouldUsersGetPremium: Boolean,
2221
)

app/src/main/java/com/x8bit/bitwarden/data/auth/repository/util/SyncResponseJsonExtensions.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ fun SyncResponseJson.Profile.Organization.toOrganization(): Organization =
2222
shouldUseKeyConnector = this.shouldUseKeyConnector,
2323
role = this.type,
2424
shouldManageResetPassword = this.permissions.shouldManageResetPassword,
25-
shouldUsersGetPremium = this.shouldUsersGetPremium,
2625
)
2726

2827
/**

app/src/main/java/com/x8bit/bitwarden/data/autofill/manager/AutofillTotpManagerImpl.kt

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import com.x8bit.bitwarden.data.platform.manager.clipboard.BitwardenClipboardMan
99
import com.x8bit.bitwarden.data.platform.repository.SettingsRepository
1010
import com.x8bit.bitwarden.data.vault.repository.VaultRepository
1111
import com.x8bit.bitwarden.data.vault.repository.model.GenerateTotpResult
12-
import com.x8bit.bitwarden.ui.vault.feature.vault.util.getOrganizationPremiumStatusMap
1312
import java.time.Clock
1413

1514
/**
@@ -25,15 +24,8 @@ class AutofillTotpManagerImpl(
2524
) : AutofillTotpManager {
2625
override suspend fun tryCopyTotpToClipboard(cipherView: CipherView) {
2726
if (settingsRepository.isAutoCopyTotpDisabled) return
28-
val organizationPremiumStatusMap = authRepository
29-
.userStateFlow
30-
.value
31-
?.activeAccount
32-
?.getOrganizationPremiumStatusMap()
33-
.orEmpty()
3427
val isPremium = authRepository.userStateFlow.value?.activeAccount?.isPremium == true
35-
val premiumStatus = organizationPremiumStatusMap[cipherView.organizationId] ?: isPremium
36-
if (!premiumStatus && !cipherView.organizationUseTotp) return
28+
if (!isPremium && !cipherView.organizationUseTotp) return
3729
val totpCode = cipherView.login?.totp ?: return
3830

3931
val totpResult = vaultRepository.generateTotp(

app/src/main/java/com/x8bit/bitwarden/data/vault/manager/TotpCodeManagerImpl.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,6 @@ class TotpCodeManagerImpl(
122122
CipherRepromptType.NONE -> false
123123
},
124124
orgUsesTotp = cipher.organizationUseTotp,
125-
orgId = cipher.organizationId,
126125
)
127126
}
128127
.onFailure {

app/src/main/java/com/x8bit/bitwarden/data/vault/manager/model/VerificationCodeItem.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,5 +29,4 @@ data class VerificationCodeItem(
2929
val username: String?,
3030
val hasPasswordReprompt: Boolean,
3131
val orgUsesTotp: Boolean,
32-
val orgId: String?,
3332
)

app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/search/SearchViewModel.kt

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ import com.x8bit.bitwarden.ui.platform.feature.search.util.updateWithAdditionalD
4646
import com.x8bit.bitwarden.ui.vault.feature.itemlisting.model.ListingItemOverflowAction
4747
import com.x8bit.bitwarden.ui.vault.feature.vault.model.VaultFilterData
4848
import com.x8bit.bitwarden.ui.vault.feature.vault.model.VaultFilterType
49-
import com.x8bit.bitwarden.ui.vault.feature.vault.util.getOrganizationPremiumStatusMap
5049
import com.x8bit.bitwarden.ui.vault.feature.vault.util.toFilteredList
5150
import com.x8bit.bitwarden.ui.vault.feature.vault.util.toVaultFilterData
5251
import com.x8bit.bitwarden.ui.vault.model.TotpData
@@ -108,9 +107,6 @@ class SearchViewModel @Inject constructor(
108107
totpData = specialCircumstance?.toTotpDataOrNull(),
109108
hasMasterPassword = userState.activeAccount.hasMasterPassword,
110109
isPremium = userState.activeAccount.isPremium,
111-
organizationPremiumStatusMap = userState
112-
.activeAccount
113-
.getOrganizationPremiumStatusMap(),
114110
)
115111
},
116112
) {
@@ -691,7 +687,6 @@ class SearchViewModel @Inject constructor(
691687
isAutofill = state.isAutofill,
692688
isTotp = state.isTotp,
693689
isPremiumUser = state.isPremium,
694-
organizationPremiumStatusMap = state.organizationPremiumStatusMap,
695690
)
696691
}
697692

@@ -738,7 +733,6 @@ data class SearchState(
738733
val totpData: TotpData?,
739734
val hasMasterPassword: Boolean,
740735
val isPremium: Boolean,
741-
val organizationPremiumStatusMap: Map<String, Boolean>,
742736
) : Parcelable {
743737

744738
/**

app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/search/util/SearchTypeDataExtensions.kt

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,6 @@ fun List<CipherView>.toViewState(
153153
isAutofill: Boolean,
154154
isTotp: Boolean,
155155
isPremiumUser: Boolean,
156-
organizationPremiumStatusMap: Map<String, Boolean>,
157156
): SearchState.ViewState =
158157
when {
159158
searchTerm.isEmpty() -> SearchState.ViewState.Empty(message = null)
@@ -166,7 +165,6 @@ fun List<CipherView>.toViewState(
166165
isAutofill = isAutofill,
167166
isTotp = isTotp,
168167
isPremiumUser = isPremiumUser,
169-
organizationPremiumStatusMap = organizationPremiumStatusMap,
170168
)
171169
.sortAlphabetically(),
172170
)
@@ -187,17 +185,15 @@ private fun List<CipherView>.toDisplayItemList(
187185
isAutofill: Boolean,
188186
isTotp: Boolean,
189187
isPremiumUser: Boolean,
190-
organizationPremiumStatusMap: Map<String, Boolean>,
191188
): List<SearchState.DisplayItem> =
192189
this.map {
193-
val premiumStatus = organizationPremiumStatusMap[it.organizationId] ?: isPremiumUser
194190
it.toDisplayItem(
195191
baseIconUrl = baseIconUrl,
196192
hasMasterPassword = hasMasterPassword,
197193
isIconLoadingDisabled = isIconLoadingDisabled,
198194
isAutofill = isAutofill,
199195
isTotp = isTotp,
200-
isPremiumUser = premiumStatus,
196+
isPremiumUser = isPremiumUser,
201197
)
202198
}
203199

app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemViewModel.kt

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import com.bitwarden.vault.CipherView
88
import com.x8bit.bitwarden.R
99
import com.x8bit.bitwarden.data.auth.repository.AuthRepository
1010
import com.x8bit.bitwarden.data.auth.repository.model.BreachCountResult
11-
import com.x8bit.bitwarden.data.auth.repository.model.Organization
1211
import com.x8bit.bitwarden.data.auth.repository.model.UserState
1312
import com.x8bit.bitwarden.data.auth.repository.model.ValidatePasswordResult
1413
import com.x8bit.bitwarden.data.platform.manager.clipboard.BitwardenClipboardManager
@@ -1059,20 +1058,16 @@ class VaultItemViewModel @Inject constructor(
10591058
): VaultItemState.ViewState = this
10601059
.data
10611060
?.cipher
1062-
?.let { cipher ->
1063-
val ownerOrg: Organization? = account.organizations.find {
1064-
cipher.organizationId == it.id
1065-
}
1066-
cipher.toViewState(
1067-
previousState = state.viewState.asContentOrNull(),
1068-
isPremiumUser = ownerOrg?.shouldUsersGetPremium ?: account.isPremium,
1069-
hasMasterPassword = account.hasMasterPassword,
1070-
totpCodeItemData = this.data?.totpCodeItemData,
1071-
canDelete = this.data?.canDelete == true,
1072-
canAssignToCollections = this.data?.canAssociateToCollections == true,
1073-
canEdit = this.data?.canEdit == true,
1074-
)
1075-
}
1061+
?.toViewState(
1062+
previousState = state.viewState.asContentOrNull(),
1063+
isPremiumUser = account.isPremium,
1064+
hasMasterPassword = account.hasMasterPassword,
1065+
totpCodeItemData = this.data?.totpCodeItemData,
1066+
canDelete = this.data?.canDelete == true,
1067+
canAssignToCollections = this.data?.canAssociateToCollections == true,
1068+
canEdit = this.data?.canEdit == true,
1069+
)
1070+
10761071
?: VaultItemState.ViewState.Error(message = errorText)
10771072

10781073
private fun handleValidatePasswordReceive(

app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/itemlisting/VaultItemListingViewModel.kt

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,6 @@ import com.x8bit.bitwarden.ui.vault.feature.itemlisting.util.toVaultItemCipherTy
7171
import com.x8bit.bitwarden.ui.vault.feature.itemlisting.util.toViewState
7272
import com.x8bit.bitwarden.ui.vault.feature.itemlisting.util.updateWithAdditionalDataIfNecessary
7373
import com.x8bit.bitwarden.ui.vault.feature.vault.model.VaultFilterType
74-
import com.x8bit.bitwarden.ui.vault.feature.vault.util.getOrganizationPremiumStatusMap
7574
import com.x8bit.bitwarden.ui.vault.feature.vault.util.toAccountSummaries
7675
import com.x8bit.bitwarden.ui.vault.feature.vault.util.toActiveAccountSummary
7776
import com.x8bit.bitwarden.ui.vault.feature.vault.util.toFilteredList
@@ -106,8 +105,8 @@ class VaultItemListingViewModel @Inject constructor(
106105
private val cipherMatchingManager: CipherMatchingManager,
107106
private val specialCircumstanceManager: SpecialCircumstanceManager,
108107
private val policyManager: PolicyManager,
109-
private val fido2CredentialManager: Fido2CredentialManager,
110108
private val fido2OriginManager: Fido2OriginManager,
109+
private val fido2CredentialManager: Fido2CredentialManager,
111110
private val organizationEventManager: OrganizationEventManager,
112111
) : BaseViewModel<VaultItemListingState, VaultItemListingEvent, VaultItemListingsAction>(
113112
initialState = run {
@@ -141,9 +140,6 @@ class VaultItemListingViewModel @Inject constructor(
141140
fido2GetCredentialsRequest = specialCircumstance?.toFido2GetCredentialsRequestOrNull(),
142141
isPremium = userState.activeAccount.isPremium,
143142
isRefreshing = false,
144-
organizationPremiumStatusMap = userState
145-
.activeAccount
146-
.getOrganizationPremiumStatusMap(),
147143
)
148144
},
149145
) {
@@ -1586,7 +1582,6 @@ class VaultItemListingViewModel @Inject constructor(
15861582
.fido2CredentialAutofillViewList,
15871583
totpData = state.totpData,
15881584
isPremiumUser = state.isPremium,
1589-
organizationPremiumStatusMap = state.organizationPremiumStatusMap,
15901585
)
15911586
}
15921587

@@ -1752,7 +1747,6 @@ data class VaultItemListingState(
17521747
val hasMasterPassword: Boolean,
17531748
val isPremium: Boolean,
17541749
val isRefreshing: Boolean,
1755-
val organizationPremiumStatusMap: Map<String, Boolean>,
17561750
) {
17571751
/**
17581752
* Whether or not the add FAB should be shown.

app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/itemlisting/util/VaultItemListingDataExtensions.kt

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,6 @@ fun VaultData.toViewState(
111111
fido2CredentialAutofillViews: List<Fido2CredentialAutofillView>?,
112112
totpData: TotpData?,
113113
isPremiumUser: Boolean,
114-
organizationPremiumStatusMap: Map<String, Boolean>,
115114
): VaultItemListingState.ViewState {
116115
val filteredCipherViewList = cipherViewList
117116
.filter { cipherView ->
@@ -143,7 +142,6 @@ fun VaultData.toViewState(
143142
fido2CredentialAutofillViews = fido2CredentialAutofillViews,
144143
isPremiumUser = isPremiumUser,
145144
isTotp = totpData != null,
146-
organizationPremiumStatusMap = organizationPremiumStatusMap,
147145
),
148146
displayFolderList = folderList.map { folderView ->
149147
VaultItemListingState.FolderDisplayItem(
@@ -292,10 +290,8 @@ private fun List<CipherView>.toDisplayItemList(
292290
fido2CredentialAutofillViews: List<Fido2CredentialAutofillView>?,
293291
isPremiumUser: Boolean,
294292
isTotp: Boolean,
295-
organizationPremiumStatusMap: Map<String, Boolean>,
296293
): List<VaultItemListingState.DisplayItem> =
297294
this.map {
298-
val premiumStatus = organizationPremiumStatusMap[it.organizationId] ?: isPremiumUser
299295
it.toDisplayItem(
300296
baseIconUrl = baseIconUrl,
301297
hasMasterPassword = hasMasterPassword,
@@ -306,7 +302,7 @@ private fun List<CipherView>.toDisplayItemList(
306302
?.firstOrNull { fido2CredentialAutofillView ->
307303
fido2CredentialAutofillView.cipherId == it.id
308304
},
309-
isPremiumUser = premiumStatus,
305+
isPremiumUser = isPremiumUser,
310306
isTotp = isTotp,
311307
)
312308
}

app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/vault/VaultViewModel.kt

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ import com.x8bit.bitwarden.ui.platform.manager.snackbar.SnackbarRelayManager
3838
import com.x8bit.bitwarden.ui.vault.feature.itemlisting.model.ListingItemOverflowAction
3939
import com.x8bit.bitwarden.ui.vault.feature.vault.model.VaultFilterData
4040
import com.x8bit.bitwarden.ui.vault.feature.vault.model.VaultFilterType
41-
import com.x8bit.bitwarden.ui.vault.feature.vault.util.getOrganizationPremiumStatusMap
4241
import com.x8bit.bitwarden.ui.vault.feature.vault.util.initials
4342
import com.x8bit.bitwarden.ui.vault.feature.vault.util.toAccountSummaries
4443
import com.x8bit.bitwarden.ui.vault.feature.vault.util.toActiveAccountSummary
@@ -105,9 +104,6 @@ class VaultViewModel @Inject constructor(
105104
isRefreshing = false,
106105
showImportActionCard = false,
107106
showSshKeys = showSshKeys,
108-
organizationPremiumStatusMap = userState
109-
.activeAccount
110-
.getOrganizationPremiumStatusMap(),
111107
)
112108
},
113109
) {
@@ -634,7 +630,6 @@ class VaultViewModel @Inject constructor(
634630
hasMasterPassword = state.hasMasterPassword,
635631
vaultFilterType = vaultFilterTypeOrDefault,
636632
showSshKeys = showSshKeys,
637-
organizationPremiumStatusMap = state.organizationPremiumStatusMap,
638633
),
639634
dialog = null,
640635
isRefreshing = false,
@@ -673,7 +668,6 @@ class VaultViewModel @Inject constructor(
673668
hasMasterPassword = state.hasMasterPassword,
674669
vaultFilterType = vaultFilterTypeOrDefault,
675670
showSshKeys = state.showSshKeys,
676-
organizationPremiumStatusMap = state.organizationPremiumStatusMap,
677671
),
678672
)
679673
}
@@ -745,7 +739,6 @@ data class VaultState(
745739
val isRefreshing: Boolean,
746740
val showImportActionCard: Boolean,
747741
val showSshKeys: Boolean,
748-
val organizationPremiumStatusMap: Map<String, Boolean>,
749742
) : Parcelable {
750743

751744
/**
@@ -1375,7 +1368,6 @@ private fun MutableStateFlow<VaultState>.updateToErrorStateOrDialog(
13751368
vaultFilterType = vaultFilterType,
13761369
isIconLoadingDisabled = isIconLoadingDisabled,
13771370
showSshKeys = it.showSshKeys,
1378-
organizationPremiumStatusMap = it.organizationPremiumStatusMap,
13791371
),
13801372
dialog = VaultState.DialogState.Error(
13811373
title = errorTitle,

app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/vault/util/UserStateExtensions.kt

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -71,11 +71,3 @@ fun UserState.Account.toVaultFilterData(
7171
),
7272
)
7373
}
74-
75-
/**
76-
* Returns a map of organization IDs and if they provide a premium status to the user for
77-
* items owned by that organization.
78-
*/
79-
fun UserState.Account.getOrganizationPremiumStatusMap(): Map<String, Boolean> {
80-
return organizations.associate { it.id to it.shouldUsersGetPremium }
81-
}

app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/vault/util/VaultDataExtensions.kt

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ fun VaultData.toViewState(
4040
baseIconUrl: String,
4141
vaultFilterType: VaultFilterType,
4242
showSshKeys: Boolean,
43-
organizationPremiumStatusMap: Map<String, Boolean>,
4443
): VaultState.ViewState {
4544

4645
val filteredCipherViewListWithDeletedItems =
@@ -74,22 +73,14 @@ fun VaultData.toViewState(
7473
return if (filteredCipherViewListWithDeletedItems.isEmpty()) {
7574
VaultState.ViewState.NoItems
7675
} else {
77-
val totpItemsGroupedByOwnership = filteredCipherViewList.groupBy {
78-
!it.organizationId.isNullOrBlank()
79-
}
80-
val userOwnedTotpItems = totpItemsGroupedByOwnership[false]
81-
?.filter {
82-
it.login?.totp != null && isPremium
83-
}.orEmpty()
84-
val organizationOwnedTotpItems = totpItemsGroupedByOwnership[true]
85-
?.filter {
86-
it.login?.totp != null &&
87-
(organizationPremiumStatusMap[it.id] == true || it.organizationUseTotp)
88-
}.orEmpty()
76+
val totpItems = filteredCipherViewList.filter { it.login?.totp != null }
8977
VaultState.ViewState.Content(
9078
itemTypesCount = itemTypesCount,
91-
totpItemsCount = userOwnedTotpItems.count() +
92-
organizationOwnedTotpItems.count(),
79+
totpItemsCount = if (isPremium) {
80+
totpItems.count()
81+
} else {
82+
totpItems.count { it.organizationUseTotp }
83+
},
9384
loginItemsCount = filteredCipherViewList.count { it.type == CipherType.LOGIN },
9485
cardItemsCount = filteredCipherViewList.count { it.type == CipherType.CARD },
9586
identityItemsCount = filteredCipherViewList.count { it.type == CipherType.IDENTITY },
@@ -103,8 +94,7 @@ fun VaultData.toViewState(
10394
hasMasterPassword = hasMasterPassword,
10495
isIconLoadingDisabled = isIconLoadingDisabled,
10596
baseIconUrl = baseIconUrl,
106-
isPremiumUser = organizationPremiumStatusMap[it.organizationId]
107-
?: isPremium,
97+
isPremiumUser = isPremium,
10898
)
10999
},
110100
folderItems = filteredFolderViewList
@@ -138,8 +128,7 @@ fun VaultData.toViewState(
138128
hasMasterPassword = hasMasterPassword,
139129
isIconLoadingDisabled = isIconLoadingDisabled,
140130
baseIconUrl = baseIconUrl,
141-
isPremiumUser = organizationPremiumStatusMap[it.organizationId]
142-
?: isPremium,
131+
isPremiumUser = isPremium,
143132
)
144133
}
145134
.takeIf { it.size < NO_FOLDER_ITEM_THRESHOLD }

app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/verificationcode/VerificationCodeViewModel.kt

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import com.x8bit.bitwarden.ui.platform.base.util.asText
1818
import com.x8bit.bitwarden.ui.platform.base.util.concat
1919
import com.x8bit.bitwarden.ui.platform.components.model.IconData
2020
import com.x8bit.bitwarden.ui.vault.feature.vault.model.VaultFilterType
21-
import com.x8bit.bitwarden.ui.vault.feature.vault.util.getOrganizationPremiumStatusMap
2221
import com.x8bit.bitwarden.ui.vault.feature.vault.util.toLoginIconData
2322
import dagger.hilt.android.lifecycle.HiltViewModel
2423
import kotlinx.coroutines.flow.combine
@@ -320,11 +319,8 @@ class VerificationCodeViewModel @Inject constructor(
320319
authCodes: List<VerificationCodeItem>,
321320
userAccount: UserState.Account?,
322321
): DataState<List<VerificationCodeItem>> {
323-
val orgPremiumStatusMap = userAccount?.getOrganizationPremiumStatusMap().orEmpty()
324322
val filteredAuthCodes = authCodes.mapNotNull { authCode ->
325-
val premiumStatus =
326-
(authCode.orgId?.let { orgPremiumStatusMap[it] } ?: userAccount?.isPremium) == true
327-
if (premiumStatus) {
323+
if (userAccount?.isPremium == true) {
328324
authCode
329325
} else {
330326
authCode.takeIf { it.orgUsesTotp }

0 commit comments

Comments
 (0)