# HG changeset patch # User Da Risk # Date 1746430620 14400 # Node ID 2474591aa2805f98c4b55c495a51ec25437686cc # Parent 79794afbbf95542d6e9634056ce5640d744eaeaf ui:common: add more kdocs diff -r 79794afbbf95 -r 2474591aa280 ui/common/src/androidMain/kotlin/com/geekorum/aboutoss/ui/common/AndroidBrowserLauncher.kt --- a/ui/common/src/androidMain/kotlin/com/geekorum/aboutoss/ui/common/AndroidBrowserLauncher.kt Mon May 05 02:56:41 2025 -0400 +++ b/ui/common/src/androidMain/kotlin/com/geekorum/aboutoss/ui/common/AndroidBrowserLauncher.kt Mon May 05 03:37:00 2025 -0400 @@ -30,10 +30,17 @@ import androidx.core.net.toUri import com.geekorum.geekdroid.network.BrowserLauncher as GeekdroidBrowserLauncher +/** + * A [BrowserLauncher] for the Android platform + */ class AndroidBrowserLauncher( private val activity: Activity, private val delegate: GeekdroidBrowserLauncher ) : BrowserLauncher { + + /** + * Warm up the [com.geekorum.aboutoss.ui.common.AndroidBrowserLauncher] before usage + */ fun warmUp() { delegate.warmUp(null) } @@ -47,11 +54,17 @@ delegate.mayLaunchUrl(*asUris) } + /** + * Free any resources used + */ fun shutdown() { delegate.shutdown() } } +/** + * Creates and [androidx.compose.runtime.remember] a [BrowserLauncher] + */ @Composable actual fun rememberBrowserLauncher(): BrowserLauncher { val activity = checkNotNull(LocalActivity.current) diff -r 79794afbbf95 -r 2474591aa280 ui/common/src/androidMain/kotlin/com/geekorum/aboutoss/ui/common/BaseOpensourceLicenseActivity.kt --- a/ui/common/src/androidMain/kotlin/com/geekorum/aboutoss/ui/common/BaseOpensourceLicenseActivity.kt Mon May 05 02:56:41 2025 -0400 +++ b/ui/common/src/androidMain/kotlin/com/geekorum/aboutoss/ui/common/BaseOpensourceLicenseActivity.kt Mon May 05 03:37:00 2025 -0400 @@ -23,6 +23,9 @@ import androidx.activity.ComponentActivity +/** + * An abstract Activity to display OpenSource licenses + */ abstract class BaseOpensourceLicenseActivity : ComponentActivity() { protected abstract val viewModel: OpenSourceLicensesViewModel diff -r 79794afbbf95 -r 2474591aa280 ui/common/src/androidMain/kotlin/com/geekorum/aboutoss/ui/common/OpenSourceLicensesViewModel.android.kt --- a/ui/common/src/androidMain/kotlin/com/geekorum/aboutoss/ui/common/OpenSourceLicensesViewModel.android.kt Mon May 05 02:56:41 2025 -0400 +++ b/ui/common/src/androidMain/kotlin/com/geekorum/aboutoss/ui/common/OpenSourceLicensesViewModel.android.kt Mon May 05 03:37:00 2025 -0400 @@ -21,12 +21,15 @@ */ package com.geekorum.aboutoss.ui.common -import androidx.lifecycle.ViewModelProvider.AndroidViewModelFactory.Companion.APPLICATION_KEY import androidx.lifecycle.viewmodel.initializer import androidx.lifecycle.viewmodel.viewModelFactory import com.geekorum.aboutoss.core.LicenseInfoRepository - +/** + * Create a [androidx.lifecycle.ViewModelProvider.Factory] to build an [OpenSourceLicensesViewModel] + * + * @param licenseInfoRepository the [LicenseInfoRepository] to use + */ fun OpenSourceLicensesViewModel.Companion.Factory(licenseInfoRepository: LicenseInfoRepository) = viewModelFactory { initializer { OpenSourceLicensesViewModel( diff -r 79794afbbf95 -r 2474591aa280 ui/common/src/commonMain/kotlin/BrowserLauncher.kt --- a/ui/common/src/commonMain/kotlin/BrowserLauncher.kt Mon May 05 02:56:41 2025 -0400 +++ b/ui/common/src/commonMain/kotlin/BrowserLauncher.kt Mon May 05 03:37:00 2025 -0400 @@ -29,11 +29,22 @@ */ interface BrowserLauncher { + /** + * Launch a browser to display [link] + */ fun launchUrl(link: String) + /** + * Signal that [uris] may be launched next + * + * A [BrowserLauncher] can preload these uris for faster display + */ fun mayLaunchUrl(vararg uris: String) } +/** + * Creates and [androidx.compose.runtime.remember] a [BrowserLauncher] + */ @Composable expect fun rememberBrowserLauncher(): BrowserLauncher \ No newline at end of file diff -r 79794afbbf95 -r 2474591aa280 ui/common/src/commonMain/kotlin/OpenSourceLicensesViewModel.kt --- a/ui/common/src/commonMain/kotlin/OpenSourceLicensesViewModel.kt Mon May 05 02:56:41 2025 -0400 +++ b/ui/common/src/commonMain/kotlin/OpenSourceLicensesViewModel.kt Mon May 05 03:37:00 2025 -0400 @@ -40,10 +40,16 @@ emit(licenseInfoRepository.getLicensesInfo()) }.stateIn(viewModelScope, SharingStarted.WhileSubscribed(5000), emptyMap()) + /** + * List of dependencies + */ val dependenciesList = licensesInfo.map { licensesInfo -> licensesInfo.keys.sortedBy { it.lowercase() } } + /** + * Obtain the license for [dependency] + */ fun getLicenseDependency(dependency: String) = flow { emit(licenseInfoRepository.getLicenseFor(dependency)) } diff -r 79794afbbf95 -r 2474591aa280 ui/common/src/desktopMain/kotlin/DesktopBrowserLauncher.kt --- a/ui/common/src/desktopMain/kotlin/DesktopBrowserLauncher.kt Mon May 05 02:56:41 2025 -0400 +++ b/ui/common/src/desktopMain/kotlin/DesktopBrowserLauncher.kt Mon May 05 03:37:00 2025 -0400 @@ -27,6 +27,9 @@ import java.net.URI import java.util.Locale +/** + * A [BrowserLauncher] for the desktop platform + */ class DesktopBrowserLauncher : BrowserLauncher { private val desktopLauncher = run { @@ -64,6 +67,9 @@ } +/** + * Creates and [androidx.compose.runtime.remember] a [BrowserLauncher] + */ @Composable actual fun rememberBrowserLauncher(): BrowserLauncher { return remember { DesktopBrowserLauncher() } diff -r 79794afbbf95 -r 2474591aa280 ui/common/src/desktopMain/kotlin/OpenSourceLicensesViewModel.desktop.kt --- a/ui/common/src/desktopMain/kotlin/OpenSourceLicensesViewModel.desktop.kt Mon May 05 02:56:41 2025 -0400 +++ b/ui/common/src/desktopMain/kotlin/OpenSourceLicensesViewModel.desktop.kt Mon May 05 03:37:00 2025 -0400 @@ -25,7 +25,11 @@ import androidx.lifecycle.viewmodel.viewModelFactory import com.geekorum.aboutoss.core.LicenseInfoRepository - +/** + * Create a [androidx.lifecycle.ViewModelProvider.Factory] to build an [OpenSourceLicensesViewModel] + * + * @param licenseInfoRepository the [LicenseInfoRepository] to use + */ fun OpenSourceLicensesViewModel.Companion.Factory(licenseInfoRepository: LicenseInfoRepository) = viewModelFactory { initializer { OpenSourceLicensesViewModel(licenseInfoRepository) diff -r 79794afbbf95 -r 2474591aa280 ui/common/src/iosMain/kotlin/IosBrowserLauncher.kt --- a/ui/common/src/iosMain/kotlin/IosBrowserLauncher.kt Mon May 05 02:56:41 2025 -0400 +++ b/ui/common/src/iosMain/kotlin/IosBrowserLauncher.kt Mon May 05 03:37:00 2025 -0400 @@ -27,6 +27,9 @@ import platform.UIKit.UIApplication +/** + * A [BrowserLauncher] for the iOS platform + */ class IosBrowserLauncher : BrowserLauncher { override fun launchUrl(link: String) { @@ -40,6 +43,9 @@ override fun mayLaunchUrl(vararg uris: String) {} } +/** + * Creates and [androidx.compose.runtime.remember] a [BrowserLauncher] + */ @Composable actual fun rememberBrowserLauncher(): BrowserLauncher { return remember { IosBrowserLauncher() } diff -r 79794afbbf95 -r 2474591aa280 ui/common/src/iosMain/kotlin/OpenSourceLicensesViewModel.ios.kt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ui/common/src/iosMain/kotlin/OpenSourceLicensesViewModel.ios.kt Mon May 05 03:37:00 2025 -0400 @@ -0,0 +1,37 @@ +/* + * AboutOss is an utility library to retrieve and display + * opensource licenses in Android applications. + * + * Copyright (C) 2023-2025 by Frederic-Charles Barthelery. + * + * This file is part of AboutOss. + * + * AboutOss is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * AboutOss 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with AboutOss. If not, see . + */ +package com.geekorum.aboutoss.ui.common + +import androidx.lifecycle.viewmodel.initializer +import androidx.lifecycle.viewmodel.viewModelFactory +import com.geekorum.aboutoss.core.LicenseInfoRepository + +/** + * Create a [androidx.lifecycle.ViewModelProvider.Factory] to build an [OpenSourceLicensesViewModel] + * + * @param licenseInfoRepository the [LicenseInfoRepository] to use + */ +fun OpenSourceLicensesViewModel.Companion.Factory(licenseInfoRepository: LicenseInfoRepository) = viewModelFactory { + initializer { + OpenSourceLicensesViewModel(licenseInfoRepository) + } +} \ No newline at end of file