Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package net.thunderbird.app.common.appVersion

import android.content.Context
import android.content.pm.PackageManager
import net.thunderbird.core.common.provider.AppVersionProvider
import net.thunderbird.core.logging.Logger

private const val TAG = "DefaultAppVersionProvider"

class DefaultAppVersionProvider(
private val context: Context,
private var logger: Logger,
) : AppVersionProvider {
override fun getVersionNumber(): String {
try {
val packageInfo = context.packageManager.getPackageInfo(context.packageName, 0)
return packageInfo.versionName ?: "?"
} catch (e: PackageManager.NameNotFoundException) {
logger.error(TAG, e, { "Error getting PackageInfo" })
return "?"
}
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package net.thunderbird.app.common.core

import com.eygraber.uri.toAndroidUri
import net.thunderbird.app.common.appVersion.DefaultAppVersionProvider
import net.thunderbird.app.common.core.configstore.appCommonCoreConfigStoreModule
import net.thunderbird.app.common.core.logging.appCommonCoreLogger
import net.thunderbird.app.common.core.ui.appCommonCoreUiModule
import net.thunderbird.core.common.provider.AppVersionProvider
import net.thunderbird.core.file.AndroidDirectoryProvider
import net.thunderbird.core.file.AndroidFileSystemManager
import net.thunderbird.core.file.AndroidMimeTypeProvider
Expand Down Expand Up @@ -50,6 +52,8 @@ val appCommonCoreModule: Module = module {
}
}

single<AppVersionProvider> { DefaultAppVersionProvider(context = androidContext(), logger = get()) }

single<MimeTypeResolver> {
AndroidMimeTypeResolver(
mimeTypeProvider = get(),
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package net.thunderbird.core.common.provider
/**
* Provides the application version.
*/
interface AppVersionProvider {
fun getVersionNumber(): String
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package com.fsck.k9.ui.settings

import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.PreviewLightDark
import app.k9mail.core.ui.compose.designsystem.PreviewWithThemesLightDark
import app.k9mail.core.ui.compose.theme2.k9mail.R
import kotlinx.collections.immutable.persistentListOf

@Composable
@PreviewLightDark
internal fun AboutScreenPreview() {
PreviewWithThemesLightDark {
AboutScreen(
aboutTitle = "About K-9 Mail",
projectTitle = "Open Source Project",
librariesTitle = "Libraries",
versionNumber = "17.0a1",
appLogoResId = R.drawable.core_ui_theme2_k9mail_logo,
libraries = fakeLibraryList,
)
}
}

private val fakeLibraryList = persistentListOf(
Library(
"Android Jetpack libraries",
"https://developer.android.com/jetpack",
"Apache License, Version 2.0",
),
Library(
"AndroidX Preference extended",
"https://github.com/takisoft/preferencex-android",
"Apache License, Version 2.0",
),
Library("AppAuth for Android", "https://github.com/openid/AppAuth-Android", "Apache License, Version 2.0"),
Library("Apache HttpComponents", "https://hc.apache.org/", "Apache License, Version 2.0"),
Library("AutoValue", "https://github.com/google/auto", "Apache License, Version 2.0"),
Library("CircleImageView", "https://github.com/hdodenhof/CircleImageView", "Apache License, Version 2.0"),
Library("ckChangeLog", "https://github.com/cketti/ckChangeLog", "Apache License, Version 2.0"),
Library("Commons IO", "https://commons.apache.org/io/", "Apache License, Version 2.0"),
Library("ColorPicker", "https://github.com/gregkorossy/ColorPicker", "Apache License, Version 2.0"),
Library("DateTimePicker", "https://github.com/gregkorossy/DateTimePicker", "Apache License, Version 2.0"),
Library("Error Prone annotations", "https://github.com/google/error-prone", "Apache License, Version 2.0"),
)
3 changes: 3 additions & 0 deletions legacy/ui/legacy/src/main/java/com/fsck/k9/ui/KoinModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,10 @@ import com.fsck.k9.ui.helper.SizeFormatter
import com.fsck.k9.ui.messagelist.AbstractMessageListFragment
import com.fsck.k9.ui.messagelist.LegacyMessageListFragment
import com.fsck.k9.ui.messageview.LinkTextHandler
import com.fsck.k9.ui.settings.AboutViewModel
import com.fsck.k9.ui.share.ShareIntentBuilder
import net.thunderbird.core.common.inject.getList
import org.koin.core.module.dsl.viewModel
import org.koin.core.qualifier.named
import org.koin.dsl.module

Expand All @@ -23,6 +25,7 @@ val uiModule = module {
)
}
single<MessagingControllerMailChecker> { get<MessagingController>() }
viewModel { AboutViewModel(appVersionProvider = get()) }
factory(named("MessageView")) { get<DisplayHtmlUiFactory>().createForMessageView() }
factory { (context: Context) -> SizeFormatter(context.resources) }
factory { ShareIntentBuilder(resourceProvider = get(), textPartFinder = get(), quoteDateFormatter = get()) }
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.fsck.k9.ui.settings

import androidx.compose.runtime.Stable
import app.k9mail.core.ui.compose.common.mvi.UnidirectionalViewModel
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.persistentListOf

internal interface AboutContract {

interface ViewModel :
UnidirectionalViewModel<State, Event, Effect>

@Stable
data class State(
val version: String = "",
val libraries: ImmutableList<Library> = persistentListOf(),
)

sealed interface Event {
data object OnChangeLogClick : Event
data class OnSectionContentClick(val url: String) : Event
data class OnLibraryClick(val library: Library) : Event
}

sealed interface Effect {
data class OpenUrl(val url: String) : Effect
data object OpenChangeLog : Effect
}
}
Loading
Loading