File tree Expand file tree Collapse file tree 5 files changed +85
-0
lines changed
src/main/kotlin/net/thunderbird/android/feature/mail/message/reader/api/css
app-k9mail/src/main/kotlin/app/k9mail/feature
app-thunderbird/src/main/kotlin/net/thunderbird/android/feature
feature/mail/message/reader/api/src/commonMain/kotlin/net/thunderbird/feature/mail/message/reader/api/css Expand file tree Collapse file tree 5 files changed +85
-0
lines changed Original file line number Diff line number Diff line change @@ -49,6 +49,8 @@ dependencies {
4949
5050 implementation(projects.feature.mail.message.export.api)
5151 implementation(projects.feature.mail.message.export.implEml)
52+ implementation(projects.feature.mail.message.reader.api)
53+ implementation(projects.feature.mail.message.reader.impl)
5254
5355 implementation(projects.mail.protocols.imap)
5456 implementation(projects.backend.imap)
Original file line number Diff line number Diff line change 1+ package net.thunderbird.android.feature.mail.message.reader.api.css
2+
3+ import com.fsck.k9.message.html.EmailTextToHtml
4+ import net.thunderbird.core.featureflag.FeatureFlagProvider
5+ import net.thunderbird.feature.mail.message.reader.api.MessageReaderFeatureFlags
6+ import net.thunderbird.feature.mail.message.reader.api.css.CssClassNameProvider
7+
8+ class DefaultCssClassNameProvider (
9+ featureFlagProvider : FeatureFlagProvider ,
10+ override val defaultNamespaceClassName : String ,
11+ ) : CssClassNameProvider {
12+ override val rootClassName: String = " ${defaultNamespaceClassName} __message-viewer"
13+ override val mainContentClassName: String = " ${defaultNamespaceClassName} __main-content"
14+ override val plainTextMessagePreClassName: String =
15+ if (featureFlagProvider.provide(MessageReaderFeatureFlags .UseNewMessageReaderCssStyles ).isEnabled()) {
16+ EmailTextToHtml .K9MAIL_CSS_CLASS
17+ } else {
18+ " ${defaultNamespaceClassName} __plain-text-message-pre"
19+ }
20+ override val signatureClassName: String =
21+ if (featureFlagProvider.provide(MessageReaderFeatureFlags .UseNewMessageReaderCssStyles ).isEnabled()) {
22+ " ${defaultNamespaceClassName} __signature"
23+ } else {
24+ " k9mail-signature"
25+ }
26+ }
Original file line number Diff line number Diff line change @@ -5,8 +5,11 @@ import app.k9mail.feature.funding.featureFundingModule
55import app.k9mail.feature.migration.launcher.featureMigrationModule
66import app.k9mail.feature.onboarding.migration.onboardingMigrationModule
77import app.k9mail.feature.telemetry.telemetryModule
8+ import com.fsck.k9.BuildConfig
9+ import net.thunderbird.android.feature.mail.message.reader.api.css.DefaultCssClassNameProvider
810import net.thunderbird.feature.account.settings.featureAccountSettingsModule
911import net.thunderbird.feature.mail.message.list.featureMessageListModule
12+ import net.thunderbird.feature.mail.message.reader.api.css.CssClassNameProvider
1013import org.koin.dsl.module
1114
1215val featureModule = module {
@@ -18,4 +21,11 @@ val featureModule = module {
1821 includes(featureMessageListModule)
1922
2023 single<FundingSettings > { K9FundingSettings () }
24+
25+ single<CssClassNameProvider > {
26+ DefaultCssClassNameProvider (
27+ featureFlagProvider = get(),
28+ defaultNamespaceClassName = BuildConfig .APPLICATION_ID .replace(" ." , " -" ),
29+ )
30+ }
2131}
Original file line number Diff line number Diff line change @@ -5,8 +5,11 @@ import app.k9mail.feature.funding.featureFundingModule
55import app.k9mail.feature.migration.launcher.featureMigrationModule
66import app.k9mail.feature.onboarding.migration.onboardingMigrationModule
77import app.k9mail.feature.telemetry.telemetryModule
8+ import net.thunderbird.android.BuildConfig
9+ import net.thunderbird.android.feature.mail.message.reader.api.css.DefaultCssClassNameProvider
810import net.thunderbird.feature.account.settings.featureAccountSettingsModule
911import net.thunderbird.feature.mail.message.list.featureMessageListModule
12+ import net.thunderbird.feature.mail.message.reader.api.css.CssClassNameProvider
1013import org.koin.dsl.module
1114
1215internal val featureModule = module {
@@ -18,4 +21,11 @@ internal val featureModule = module {
1821 includes(featureMessageListModule)
1922
2023 single<FundingSettings > { TbFundingSettings () }
24+
25+ single<CssClassNameProvider > {
26+ DefaultCssClassNameProvider (
27+ featureFlagProvider = get(),
28+ defaultNamespaceClassName = BuildConfig .APPLICATION_ID .replace(" ." , " -" ),
29+ )
30+ }
2131}
Original file line number Diff line number Diff line change 1+ package net.thunderbird.feature.mail.message.reader.api.css
2+
3+ /* *
4+ * Provides CSS class names used for styling the message viewer.
5+ *
6+ * This allows for a consistent and centralized way to manage the class names
7+ * used in the HTML of the message display, making it easier to style and
8+ * maintain.
9+ */
10+ interface CssClassNameProvider {
11+ /* *
12+ * The class name used to namespace all CSS rules to avoid conflicts with message content.
13+ *
14+ * This class should be applied to a high-level container element wrapping the entire message view.
15+ */
16+ val defaultNamespaceClassName: String
17+
18+ /* *
19+ * The class name for the root element of the message content. This is typically the `<body>` tag.
20+ */
21+ val rootClassName: String
22+
23+ /* *
24+ * The class name for the main content block of the message viewer.
25+ */
26+ val mainContentClassName: String
27+
28+ /* *
29+ * The class name for the `<pre>` tag that wraps plain text messages to preserve formatting.
30+ */
31+ val plainTextMessagePreClassName: String
32+
33+ /* *
34+ * The class name used to style email signatures.
35+ */
36+ val signatureClassName: String
37+ }
You can’t perform that action at this time.
0 commit comments