[PM-19841] Migrate Event API and models to network module (#4976)

This commit is contained in:
Patrick Honkonen
2025-04-03 14:22:53 -04:00
committed by GitHub
parent 321a764f20
commit 4676f4bf8c
12 changed files with 20 additions and 19 deletions

View File

@@ -1,6 +1,6 @@
package com.x8bit.bitwarden.data.platform.datasource.disk
import com.x8bit.bitwarden.data.platform.datasource.network.model.OrganizationEventJson
import com.bitwarden.network.model.OrganizationEventJson
/**
* Primary access point for disk information related to event data.

View File

@@ -1,10 +1,10 @@
package com.x8bit.bitwarden.data.platform.datasource.disk
import com.bitwarden.network.model.OrganizationEventJson
import com.bitwarden.network.model.OrganizationEventType
import com.x8bit.bitwarden.data.platform.datasource.disk.dao.OrganizationEventDao
import com.x8bit.bitwarden.data.platform.datasource.disk.entity.OrganizationEventEntity
import com.x8bit.bitwarden.data.platform.datasource.network.model.OrganizationEventJson
import com.x8bit.bitwarden.data.platform.manager.dispatcher.DispatcherManager
import com.x8bit.bitwarden.data.platform.manager.model.OrganizationEventType
import kotlinx.coroutines.withContext
import kotlinx.serialization.json.Json

View File

@@ -1,16 +0,0 @@
package com.x8bit.bitwarden.data.platform.datasource.network.api
import com.bitwarden.network.model.NetworkResult
import com.x8bit.bitwarden.data.platform.datasource.network.model.OrganizationEventJson
import retrofit2.http.Body
import retrofit2.http.POST
/**
* This interface defines the API service for posting event data.
*/
interface EventApi {
@POST("/collect")
suspend fun collectOrganizationEvents(
@Body events: List<OrganizationEventJson>,
): NetworkResult<Unit>
}

View File

@@ -1,17 +0,0 @@
package com.x8bit.bitwarden.data.platform.datasource.network.model
import com.x8bit.bitwarden.data.platform.manager.model.OrganizationEventType
import kotlinx.serialization.Contextual
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import java.time.ZonedDateTime
/**
* Represents an individual organization event including the type and time.
*/
@Serializable
data class OrganizationEventJson(
@SerialName("type") val type: OrganizationEventType,
@SerialName("cipherId") val cipherId: String?,
@SerialName("date") @Contextual val date: ZonedDateTime,
)

View File

@@ -1,6 +1,6 @@
package com.x8bit.bitwarden.data.platform.datasource.network.service
import com.x8bit.bitwarden.data.platform.datasource.network.model.OrganizationEventJson
import com.bitwarden.network.model.OrganizationEventJson
/**
* Provides an API for submitting events.

View File

@@ -1,8 +1,8 @@
package com.x8bit.bitwarden.data.platform.datasource.network.service
import com.bitwarden.network.api.EventApi
import com.bitwarden.network.model.OrganizationEventJson
import com.bitwarden.network.util.toResult
import com.x8bit.bitwarden.data.platform.datasource.network.api.EventApi
import com.x8bit.bitwarden.data.platform.datasource.network.model.OrganizationEventJson
/**
* The default implementation of the [EventService].

View File

@@ -3,10 +3,10 @@ package com.x8bit.bitwarden.data.platform.manager.event
import androidx.lifecycle.DefaultLifecycleObserver
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.ProcessLifecycleOwner
import com.bitwarden.network.model.OrganizationEventJson
import com.x8bit.bitwarden.data.auth.repository.AuthRepository
import com.x8bit.bitwarden.data.auth.repository.model.AuthState
import com.x8bit.bitwarden.data.platform.datasource.disk.EventDiskSource
import com.x8bit.bitwarden.data.platform.datasource.network.model.OrganizationEventJson
import com.x8bit.bitwarden.data.platform.datasource.network.service.EventService
import com.x8bit.bitwarden.data.platform.manager.dispatcher.DispatcherManager
import com.x8bit.bitwarden.data.platform.manager.model.OrganizationEvent

View File

@@ -1,5 +1,7 @@
package com.x8bit.bitwarden.data.platform.manager.model
import com.bitwarden.network.model.OrganizationEventType
/**
* A representation of events used for organization tracking.
*/

View File

@@ -1,135 +0,0 @@
package com.x8bit.bitwarden.data.platform.manager.model
import androidx.annotation.Keep
import com.bitwarden.core.data.serializer.BaseEnumeratedIntSerializer
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
/**
* Representation of events used for organization tracking.
*/
@Serializable(OrganizationEventTypeSerializer::class)
enum class OrganizationEventType {
@SerialName("1000")
USER_LOGGED_IN,
@SerialName("1001")
USER_CHANGED_PASSWORD,
@SerialName("1002")
USER_UPDATED_2FA,
@SerialName("1003")
USER_DISABLED_2FA,
@SerialName("1004")
USER_RECOVERED_2FA,
@SerialName("1005")
USER_FAILED_LOGIN,
@SerialName("1006")
USER_FAILED_LOGIN_2FA,
@SerialName("1007")
USER_CLIENT_EXPORTED_VAULT,
@SerialName("1100")
CIPHER_CREATED,
@SerialName("1101")
CIPHER_UPDATED,
@SerialName("1102")
CIPHER_DELETED,
@SerialName("1103")
CIPHER_ATTACHMENT_CREATED,
@SerialName("1104")
CIPHER_ATTACHMENT_DELETED,
@SerialName("1105")
CIPHER_SHARED,
@SerialName("1106")
CIPHER_UPDATED_COLLECTIONS,
@SerialName("1107")
CIPHER_CLIENT_VIEWED,
@SerialName("1108")
CIPHER_CLIENT_TOGGLED_PASSWORD_VISIBLE,
@SerialName("1109")
CIPHER_CLIENT_TOGGLED_HIDDEN_FIELD_VISIBLE,
@SerialName("1110")
CIPHER_CLIENT_TOGGLED_CARD_CODE_VISIBLE,
@SerialName("1111")
CIPHER_CLIENT_COPIED_PASSWORD,
@SerialName("1112")
CIPHER_CLIENT_COPIED_HIDDEN_FIELD,
@SerialName("1113")
CIPHER_CLIENT_COPIED_CARD_CODE,
@SerialName("1114")
CIPHER_CLIENT_AUTO_FILLED,
@SerialName("1115")
CIPHER_SOFT_DELETED,
@SerialName("1116")
CIPHER_RESTORED,
@SerialName("1117")
CIPHER_CLIENT_TOGGLED_CARD_NUMBER_VISIBLE,
@SerialName("1300")
COLLECTION_CREATED,
@SerialName("1301")
COLLECTION_UPDATED,
@SerialName("1302")
COLLECTION_DELETED,
@SerialName("1400")
GROUP_CREATED,
@SerialName("1401")
GROUP_UPDATED,
@SerialName("1402")
GROUP_DELETED,
@SerialName("1500")
ORGANIZATION_USER_INVITED,
@SerialName("1501")
ORGANIZATION_USER_CONFIRMED,
@SerialName("1502")
ORGANIZATION_USER_UPDATED,
@SerialName("1503")
ORGANIZATION_USER_REMOVED,
@SerialName("1504")
ORGANIZATION_USER_UPDATED_GROUPS,
@SerialName("1600")
ORGANIZATION_UPDATED,
@SerialName("1601")
ORGANIZATION_PURGED_VAULT,
}
@Keep
private class OrganizationEventTypeSerializer : BaseEnumeratedIntSerializer<OrganizationEventType>(
className = "OrganizationEventType",
values = OrganizationEventType.entries.toTypedArray(),
)

View File

@@ -1,11 +1,11 @@
package com.x8bit.bitwarden.data.platform.datasource.disk
import com.bitwarden.core.di.CoreModule
import com.bitwarden.network.model.OrganizationEventJson
import com.bitwarden.network.model.OrganizationEventType
import com.x8bit.bitwarden.data.platform.base.FakeDispatcherManager
import com.x8bit.bitwarden.data.platform.datasource.disk.dao.FakeOrganizationEventDao
import com.x8bit.bitwarden.data.platform.datasource.disk.entity.OrganizationEventEntity
import com.x8bit.bitwarden.data.platform.datasource.network.model.OrganizationEventJson
import com.x8bit.bitwarden.data.platform.manager.model.OrganizationEventType
import kotlinx.coroutines.test.runTest
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Assertions.assertFalse

View File

@@ -1,9 +1,9 @@
package com.x8bit.bitwarden.data.platform.datasource.network.service
import com.bitwarden.network.api.EventApi
import com.bitwarden.network.base.BaseServiceTest
import com.x8bit.bitwarden.data.platform.datasource.network.api.EventApi
import com.x8bit.bitwarden.data.platform.datasource.network.model.OrganizationEventJson
import com.x8bit.bitwarden.data.platform.manager.model.OrganizationEventType
import com.bitwarden.network.model.OrganizationEventJson
import com.bitwarden.network.model.OrganizationEventType
import kotlinx.coroutines.test.runTest
import okhttp3.mockwebserver.MockResponse
import org.junit.jupiter.api.Assertions.assertEquals

View File

@@ -2,15 +2,15 @@ package com.x8bit.bitwarden.data.platform.manager.event
import com.bitwarden.core.data.repository.model.DataState
import com.bitwarden.core.data.util.asSuccess
import com.bitwarden.network.model.OrganizationEventJson
import com.bitwarden.network.model.OrganizationEventType
import com.bitwarden.vault.CipherView
import com.x8bit.bitwarden.data.auth.repository.AuthRepository
import com.x8bit.bitwarden.data.auth.repository.model.AuthState
import com.x8bit.bitwarden.data.platform.base.FakeDispatcherManager
import com.x8bit.bitwarden.data.platform.datasource.disk.EventDiskSource
import com.x8bit.bitwarden.data.platform.datasource.network.model.OrganizationEventJson
import com.x8bit.bitwarden.data.platform.datasource.network.service.EventService
import com.x8bit.bitwarden.data.platform.manager.model.OrganizationEvent
import com.x8bit.bitwarden.data.platform.manager.model.OrganizationEventType
import com.x8bit.bitwarden.data.util.FakeLifecycleOwner
import com.x8bit.bitwarden.data.util.advanceTimeByAndRunCurrent
import com.x8bit.bitwarden.data.vault.datasource.network.model.createMockOrganization