/** * TrackerMap * Copyright (C) 2021-2022 Iván Ávalos , Henoch Ojeda * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ package mx.trackermap.TrackerMap.android import android.app.Application import kotlinx.coroutines.DelicateCoroutinesApi import mx.trackermap.TrackerMap.android.details.commands.UnitCommandsViewModel import mx.trackermap.TrackerMap.android.details.information.UnitInformationViewModel import mx.trackermap.TrackerMap.android.details.reports.UnitReportsViewModel import mx.trackermap.TrackerMap.android.session.LoginViewModel import mx.trackermap.TrackerMap.android.session.UserInformationViewModel import mx.trackermap.TrackerMap.android.units.UnitsViewModel import mx.trackermap.TrackerMap.client.apis.* import mx.trackermap.TrackerMap.client.infrastructure.SessionManager import mx.trackermap.TrackerMap.controllers.* import org.koin.android.ext.koin.androidContext import org.koin.android.ext.koin.androidLogger import org.koin.androidx.viewmodel.dsl.viewModel import org.koin.core.context.startKoin import org.koin.core.logger.Level import org.koin.dsl.module import kotlin.time.ExperimentalTime @DelicateCoroutinesApi @ExperimentalTime open class TrackerApp : Application() { override fun onCreate() { super.onCreate() val appModule = module { single { getString(R.string.default_server_url) } factory { SessionManager(get()) } factory { SessionApi(get()) } factory { UsersApi(get()) } factory { DevicesApi(get()) } factory { PositionsApi(get()) } factory { CommandsApi(get()) } factory { ReportsApi(get()) } factory { GeofencesApi(get()) } factory { SessionController(get(), get()) } factory { UnitsController(get(), get()) } factory { GeofencesController(get()) } factory { ReportController(get(), get()) } factory { CommandsController(get()) } viewModel { LoginViewModel() } viewModel { UnitInformationViewModel(get()) } viewModel { UnitCommandsViewModel() } viewModel { UnitsViewModel(get()) } viewModel { UnitReportsViewModel(get()) } viewModel { UserInformationViewModel() } } startKoin { androidLogger(Level.ERROR) androidContext(this@TrackerApp) modules(appModule) } } }