4
Diagrammes client Android
Laurent PROVOT edited this page 1 year ago
Diagrammes client Android
Module data
@startuml
title Android - Diagramme module data
skinparam class {
BackgroundColor<<generated>> Wheat
BorderColor<<generated>> Tomato
}
package "data" {
package "api" {
interface AllInAPI {
register(body: RequestUser): ResponseUser
login(body: CheckUser): ResponseUser
login(token: String): ResponseUser
createBet(token: String, body: RequestBet)
getBet(token: String, id: String): ResponseBetDetail
participateToBet(token: String, body: RequestParticipation)
}
class MockAPI
class RetrofitAPI <<generated>>
package "apiModel" {
}
}
package "model" { }
package "repositories" {
abstract class UserRepository {
currentUser: User
login(username: String, password: String): String?
login(token: String): String?
register(username: String, email: String, password: String): String?
}
class UserRepositoryImpl
abstract class BetRepository {
void createBet(bet: Bet, token: String)
getHistory(): Flow<List<Bet>>
getCurrentBets(): Flow<List<Bet>>
getBet(id: String, token: String): BetDetail
participateToBet(participation: Participation, token: String)
getAllBets(): Flow<List<Bet>>
}
class BetRepositoryImpl
}
repositories -> AllInAPI
AllInAPI <|-- MockAPI
AllInAPI <|-- RetrofitAPI
UserRepository <|- UserRepositoryImpl
BetRepository <|- BetRepositoryImpl
AllInAPI ..> apiModel
model <..> apiModel
note on link
Mapping
end note
repositories ..> model
}
@enduml
Module app
@startuml
title Android - Diagramme module app
skinparam object {
BackgroundColor<<composable>> LightSteelBlue
BorderColor<<composable>> SteelBlue
}
skinparam rectangle {
BorderColor<<composable>> SteelBlue
}
package data {
package repositories { }
}
package "app" {
package "viewModels" { }
abstract class KeystoreManager {
masterKey: MasterKey
createKeystore()
putToken(token: String)
getToken(): String?
deleteToken()
}
class KeystoreManagerImpl
KeystoreManager <|- KeystoreManagerImpl
viewModels ..> KeystoreManager
package "ui" {
class MainActivity
rectangle AllInNavHost <<composable>> {
object MainScreen <<composable>>
object WelcomeScreen <<composable>>
object RegisterScreen <<composable>>
object LoginScreen <<composable>>
rectangle AllInDrawerNavHost <<composable>> {
object BetScreen <<composable>>
object CreateBetScreen <<composable>>
object BetHistoryScreen <<composable>>
}
}
MainActivity ..> AllInNavHost
MainScreen ..> AllInDrawerNavHost
}
}
viewModels ..> repositories
ui ..> viewModels
@enduml