Comment out service methods for consistency with stores and switch to left-to-right direction for a more vertical package arrangement.
164 lines
3.3 KiB
Plaintext
164 lines
3.3 KiB
Plaintext
@startuml "Frontend Klassendiagramm"
|
|
|
|
scale 0.9
|
|
skinparam dpi 600
|
|
skinparam backgroundColor #FFAB40
|
|
|
|
skinparam packageStyle rectangle
|
|
skinparam classAttributeIconSize 0
|
|
skinparam classFontSize 10
|
|
skinparam defaultFontSize 9
|
|
skinparam wrapWidth 100
|
|
skinparam nodesep 30
|
|
skinparam ranksep 30
|
|
|
|
left to right direction
|
|
|
|
title Frontend (Expo React Native)
|
|
|
|
' ===== COMPONENTS =====
|
|
package "Components" #FFA07A {
|
|
class AuthGuard
|
|
class BaseBackground
|
|
class Header
|
|
class BaseButton
|
|
class CardBase
|
|
class ModalBase
|
|
class EventCardBase
|
|
class EventCard
|
|
class ProposedEventCard
|
|
class DeleteEventModal
|
|
class ChatBubble
|
|
class TypingIndicator
|
|
}
|
|
|
|
' ===== SCREENS =====
|
|
package "Screens" #87CEEB {
|
|
class LoginScreen
|
|
class RegisterScreen
|
|
class CalendarScreen
|
|
class ChatScreen
|
|
class SettingsScreen
|
|
class EditEventScreen
|
|
class EventDetailScreen
|
|
class NoteScreen
|
|
}
|
|
|
|
' ===== SERVICES =====
|
|
package "Services" #90EE90 {
|
|
class ApiClient {
|
|
' +get()
|
|
' +post()
|
|
' +put()
|
|
' +delete()
|
|
}
|
|
class AuthService {
|
|
' +login()
|
|
' +register()
|
|
' +logout()
|
|
' +refresh()
|
|
}
|
|
class EventService {
|
|
' +getAll()
|
|
' +getById()
|
|
' +getByDateRange()
|
|
' +create()
|
|
' +update()
|
|
' +delete()
|
|
}
|
|
class ChatService {
|
|
' +sendMessage()
|
|
' +confirmEvent()
|
|
' +rejectEvent()
|
|
' +getConversations()
|
|
' +getConversation()
|
|
' +updateProposalEvent()
|
|
}
|
|
class CaldavConfigService {
|
|
' +getConfig()
|
|
' +saveConfig()
|
|
' +deleteConfig()
|
|
' +sync()
|
|
}
|
|
}
|
|
|
|
' ===== STORES =====
|
|
package "Stores" #FFD700 {
|
|
class AuthStore {
|
|
' +user
|
|
' +isAuthenticated
|
|
' +login()
|
|
' +logout()
|
|
' +loadStoredUser()
|
|
}
|
|
class EventsStore {
|
|
' +events
|
|
' +setEvents()
|
|
' +addEvent()
|
|
' +updateEvent()
|
|
' +deleteEvent()
|
|
}
|
|
class ChatStore {
|
|
' +messages
|
|
' +isWaitingForResponse
|
|
' +addMessage()
|
|
' +addMessages()
|
|
' +updateMessage()
|
|
' +clearMessages()
|
|
}
|
|
class ThemeStore {
|
|
' +theme
|
|
' +setTheme()
|
|
}
|
|
}
|
|
|
|
' ===== MODELS =====
|
|
package "Models (shared)" #D3D3D3 {
|
|
class User
|
|
class CalendarEvent
|
|
class ChatMessage
|
|
class CaldavConfig
|
|
}
|
|
|
|
' ===== RELATIONSHIPS =====
|
|
|
|
' Screens -> Components
|
|
CalendarScreen --> EventCard
|
|
ChatScreen --> ProposedEventCard
|
|
ChatScreen --> ChatBubble
|
|
ChatScreen --> TypingIndicator
|
|
EventCard --> EventCardBase
|
|
ProposedEventCard --> EventCardBase
|
|
EventCardBase --> CardBase
|
|
ModalBase --> CardBase
|
|
DeleteEventModal --> ModalBase
|
|
|
|
' Screens -> Services
|
|
LoginScreen --> AuthService
|
|
CalendarScreen --> EventService
|
|
CalendarScreen --> CaldavConfigService
|
|
ChatScreen --> ChatService
|
|
NoteScreen --> EventService
|
|
EditEventScreen --> EventService
|
|
EditEventScreen --> ChatService
|
|
SettingsScreen --> CaldavConfigService
|
|
|
|
' Auth
|
|
AuthGuard --> AuthStore
|
|
AuthGuard --> CaldavConfigService
|
|
LoginScreen --> CaldavConfigService
|
|
|
|
' Services -> ApiClient
|
|
AuthService --> ApiClient
|
|
EventService --> ApiClient
|
|
ChatService --> ApiClient
|
|
CaldavConfigService --> ApiClient
|
|
|
|
' Services/Screens -> Stores
|
|
AuthService --> AuthStore
|
|
CalendarScreen --> EventsStore
|
|
ChatScreen --> ChatStore
|
|
SettingsScreen --> ThemeStore
|
|
|
|
@enduml
|