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