From 35d124cb5bb74e70ce8e8674975a67cd95f7cd3e Mon Sep 17 00:00:00 2001 From: Fahim Salam Chowdhury Date: Tue, 24 May 2022 13:00:35 +0600 Subject: [PATCH 1/6] Revert "5491-Disable_openPGP_support_by_default" This reverts commit 882c5625b84da25bb8f162705bfa76d3a07baaf6. --- .../fsck/k9/activity/setup/AccountSetupBasics.java | 3 +++ .../setup/accountmanager/EeloAccountCreator.java | 2 ++ .../openintents/openpgp/util/OpenPgpProviderUtil.java | 11 +++++++++++ 3 files changed, 16 insertions(+) diff --git a/app/ui/legacy/src/main/java/com/fsck/k9/activity/setup/AccountSetupBasics.java b/app/ui/legacy/src/main/java/com/fsck/k9/activity/setup/AccountSetupBasics.java index 03a4ec4c30..184e402bc9 100644 --- a/app/ui/legacy/src/main/java/com/fsck/k9/activity/setup/AccountSetupBasics.java +++ b/app/ui/legacy/src/main/java/com/fsck/k9/activity/setup/AccountSetupBasics.java @@ -43,6 +43,7 @@ import com.fsck.k9.view.ClientCertificateSpinner; import com.fsck.k9.view.ClientCertificateSpinner.OnClientCertificateChangedListener; import com.google.android.material.textfield.TextInputEditText; import com.google.android.material.textfield.TextInputLayout; +import org.openintents.openpgp.util.OpenPgpProviderUtil; import timber.log.Timber; /** @@ -252,6 +253,7 @@ public class AccountSetupBasics extends K9Activity if (mAccount == null) { mAccount = Preferences.getPreferences(this).newAccount(); mAccount.setChipColor(accountCreator.pickColor()); + mAccount.setOpenPgpProvider(OpenPgpProviderUtil.getOpenPgpProviderPackage(getApplicationContext())); } mAccount.setSenderName(getOwnerName()); @@ -378,6 +380,7 @@ public class AccountSetupBasics extends K9Activity if (mAccount == null) { mAccount = Preferences.getPreferences(this).newAccount(); mAccount.setChipColor(accountCreator.pickColor()); + mAccount.setOpenPgpProvider(OpenPgpProviderUtil.getOpenPgpProviderPackage(getApplicationContext())); } mAccount.setSenderName(getOwnerName()); mAccount.setEmail(email); diff --git a/app/ui/legacy/src/main/java/com/fsck/k9/activity/setup/accountmanager/EeloAccountCreator.java b/app/ui/legacy/src/main/java/com/fsck/k9/activity/setup/accountmanager/EeloAccountCreator.java index 25f1fbcf30..d139c1cd19 100644 --- a/app/ui/legacy/src/main/java/com/fsck/k9/activity/setup/accountmanager/EeloAccountCreator.java +++ b/app/ui/legacy/src/main/java/com/fsck/k9/activity/setup/accountmanager/EeloAccountCreator.java @@ -19,6 +19,7 @@ import com.fsck.k9.mail.ServerSettings; import com.fsck.k9.mailstore.SpecialLocalFoldersCreator; import com.fsck.k9.preferences.Protocols; import com.fsck.k9.ui.ConnectionSettings; +import org.openintents.openpgp.util.OpenPgpProviderUtil; import timber.log.Timber; @@ -34,6 +35,7 @@ public class EeloAccountCreator { account.setChipColor(accountCreator.pickColor()); account.setEmail(emailId); account.setName(emailId); + account.setOpenPgpProvider(OpenPgpProviderUtil.getOpenPgpProviderPackage(context.getApplicationContext())); ConnectionSettings connectionSettings = providersXmlDiscoveryDiscover(emailId); if (connectionSettings == null) { diff --git a/plugins/openpgp-api-lib/openpgp-api/src/main/java/org/openintents/openpgp/util/OpenPgpProviderUtil.java b/plugins/openpgp-api-lib/openpgp-api/src/main/java/org/openintents/openpgp/util/OpenPgpProviderUtil.java index b5e9b1e802..e2b3fd729c 100644 --- a/plugins/openpgp-api-lib/openpgp-api/src/main/java/org/openintents/openpgp/util/OpenPgpProviderUtil.java +++ b/plugins/openpgp-api-lib/openpgp-api/src/main/java/org/openintents/openpgp/util/OpenPgpProviderUtil.java @@ -9,6 +9,8 @@ import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; +import androidx.annotation.Nullable; + public class OpenPgpProviderUtil { private static final String PACKAGE_NAME_APG = "org.thialfihar.android.apg"; @@ -17,6 +19,15 @@ public class OpenPgpProviderUtil { DISALLOWED_PROVIDERS.add(PACKAGE_NAME_APG); } + @Nullable + public static String getOpenPgpProviderPackage(Context context) { + List openPgpProviderPackages = getOpenPgpProviderPackages(context); + if (openPgpProviderPackages.size() > 0) { + return openPgpProviderPackages.get(0); + } + return null; + } + public static List getOpenPgpProviderPackages(Context context) { ArrayList result = new ArrayList<>(); -- GitLab From 688afe2bdcc69390e29cf57abf0ab3d53d908464 Mon Sep 17 00:00:00 2001 From: Fahim Salam Chowdhury Date: Tue, 24 May 2022 15:44:10 +0600 Subject: [PATCH 2/6] 5445-Enable_openPGP_support_by_default issue: https://gitlab.e.foundation/e/backlog/-/issues/5445 As we enable openPgp encryption by default, on the first run it may not be configured. To configure it, user need to allow mail to access openPgp. & to encyption to work, the openPgpKey also needs to be set up. so if the encrptionStatus gives provider error & no openPgpKeyId set up, means user doesn't configure encryption; so the mail send should be done using no-encryption mode. This commit also add missing licences. --- .../com/fsck/k9/activity/MessageCompose.java | 37 ++++++++++++++----- .../k9/activity/setup/AccountSetupBasics.java | 28 ++++++++++---- .../accountmanager/EeloAccountCreator.java | 17 +++++++++ .../openpgp/util/OpenPgpProviderUtil.java | 17 +++++++++ 4 files changed, 82 insertions(+), 17 deletions(-) diff --git a/app/ui/legacy/src/main/java/com/fsck/k9/activity/MessageCompose.java b/app/ui/legacy/src/main/java/com/fsck/k9/activity/MessageCompose.java index 510b4e405c..ac466a5f8a 100644 --- a/app/ui/legacy/src/main/java/com/fsck/k9/activity/MessageCompose.java +++ b/app/ui/legacy/src/main/java/com/fsck/k9/activity/MessageCompose.java @@ -1,3 +1,20 @@ +/* + * Copyright ECORP SAS 2022 + * + * this program 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. + * + * 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 general public license for more details. + * + * you should have received a copy of the gnu general public license + * along with this program. if not, see . + */ + package com.fsck.k9.activity; @@ -25,9 +42,6 @@ import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.os.Parcelable; -import androidx.annotation.Nullable; -import androidx.annotation.StringRes; -import androidx.appcompat.app.ActionBar; import android.text.TextUtils; import android.text.TextWatcher; import android.util.TypedValue; @@ -46,6 +60,9 @@ import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; +import androidx.annotation.Nullable; +import androidx.annotation.StringRes; +import androidx.appcompat.app.ActionBar; import com.bumptech.glide.Glide; import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.fsck.k9.Account; @@ -115,7 +132,6 @@ import com.fsck.k9.ui.messagelist.DefaultFolderProvider; import com.fsck.k9.ui.permissions.K9PermissionUiHelper; import com.fsck.k9.ui.permissions.Permission; import com.fsck.k9.ui.permissions.PermissionUiHelper; - import org.jetbrains.annotations.NotNull; import org.openintents.openpgp.OpenPgpApiManager; import org.openintents.openpgp.util.OpenPgpApi; @@ -702,14 +718,17 @@ public class MessageCompose extends K9Activity implements OnClickListener, boolean shouldUsePgpMessageBuilder = cryptoStatus.isOpenPgpConfigured(); if (shouldUsePgpMessageBuilder) { SendErrorState maybeSendErrorState = cryptoStatus.getSendErrorStateOrNull(); - if (maybeSendErrorState != null) { + if (maybeSendErrorState == null) { + PgpMessageBuilder pgpBuilder = PgpMessageBuilder.newInstance(); + recipientPresenter.builderSetProperties(pgpBuilder, cryptoStatus); + builder = pgpBuilder; + } else if (SendErrorState.PROVIDER_ERROR.equals(maybeSendErrorState) && cryptoStatus.getOpenPgpKeyId() == null) { // found provider error with no openPgpKey set up, means user doesn't actually configured encryption + builder = SimpleMessageBuilder.newInstance(); + recipientPresenter.builderSetProperties(builder); + } else { recipientPresenter.showPgpSendError(maybeSendErrorState); return null; } - - PgpMessageBuilder pgpBuilder = PgpMessageBuilder.newInstance(); - recipientPresenter.builderSetProperties(pgpBuilder, cryptoStatus); - builder = pgpBuilder; } else { builder = SimpleMessageBuilder.newInstance(); recipientPresenter.builderSetProperties(builder); diff --git a/app/ui/legacy/src/main/java/com/fsck/k9/activity/setup/AccountSetupBasics.java b/app/ui/legacy/src/main/java/com/fsck/k9/activity/setup/AccountSetupBasics.java index 184e402bc9..cc447b3ee0 100644 --- a/app/ui/legacy/src/main/java/com/fsck/k9/activity/setup/AccountSetupBasics.java +++ b/app/ui/legacy/src/main/java/com/fsck/k9/activity/setup/AccountSetupBasics.java @@ -1,15 +1,28 @@ +/* + * Copyright ECORP SAS 2022 + * + * this program 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. + * + * 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 general public license for more details. + * + * you should have received a copy of the gnu general public license + * along with this program. if not, see . + */ + package com.fsck.k9.activity.setup; -import android.content.ComponentName; import android.content.Context; import android.content.Intent; -import android.content.pm.PackageManager.NameNotFoundException; -import android.net.Uri; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; -import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; @@ -24,9 +37,6 @@ import com.fsck.k9.DI; import com.fsck.k9.EmailAddressValidator; import com.fsck.k9.Preferences; import com.fsck.k9.account.AccountCreator; -import com.fsck.k9.mail.oauth.OAuth2Provider; -import com.fsck.k9.preferences.AccountManager; -import com.fsck.k9.ui.base.K9Activity; import com.fsck.k9.activity.setup.AccountSetupCheckSettings.CheckDirection; import com.fsck.k9.autodiscovery.api.DiscoveredServerSettings; import com.fsck.k9.autodiscovery.api.DiscoveryResults; @@ -35,9 +45,11 @@ import com.fsck.k9.autodiscovery.providersxml.ProvidersXmlDiscovery; import com.fsck.k9.helper.Utility; import com.fsck.k9.mail.AuthType; import com.fsck.k9.mail.ServerSettings; +import com.fsck.k9.mail.oauth.OAuth2Provider; import com.fsck.k9.mailstore.SpecialLocalFoldersCreator; -import com.fsck.k9.ui.R; import com.fsck.k9.ui.ConnectionSettings; +import com.fsck.k9.ui.R; +import com.fsck.k9.ui.base.K9Activity; import com.fsck.k9.ui.settings.ExtraAccountDiscovery; import com.fsck.k9.view.ClientCertificateSpinner; import com.fsck.k9.view.ClientCertificateSpinner.OnClientCertificateChangedListener; diff --git a/app/ui/legacy/src/main/java/com/fsck/k9/activity/setup/accountmanager/EeloAccountCreator.java b/app/ui/legacy/src/main/java/com/fsck/k9/activity/setup/accountmanager/EeloAccountCreator.java index d139c1cd19..3cc0207af9 100644 --- a/app/ui/legacy/src/main/java/com/fsck/k9/activity/setup/accountmanager/EeloAccountCreator.java +++ b/app/ui/legacy/src/main/java/com/fsck/k9/activity/setup/accountmanager/EeloAccountCreator.java @@ -1,3 +1,20 @@ +/* + * Copyright ECORP SAS 2022 + * + * this program 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. + * + * 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 general public license for more details. + * + * you should have received a copy of the gnu general public license + * along with this program. if not, see . + */ + package com.fsck.k9.activity.setup.accountmanager; diff --git a/plugins/openpgp-api-lib/openpgp-api/src/main/java/org/openintents/openpgp/util/OpenPgpProviderUtil.java b/plugins/openpgp-api-lib/openpgp-api/src/main/java/org/openintents/openpgp/util/OpenPgpProviderUtil.java index e2b3fd729c..c87d3eede4 100644 --- a/plugins/openpgp-api-lib/openpgp-api/src/main/java/org/openintents/openpgp/util/OpenPgpProviderUtil.java +++ b/plugins/openpgp-api-lib/openpgp-api/src/main/java/org/openintents/openpgp/util/OpenPgpProviderUtil.java @@ -1,3 +1,20 @@ +/* + * Copyright ECORP SAS 2022 + * + * this program 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. + * + * 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 general public license for more details. + * + * you should have received a copy of the gnu general public license + * along with this program. if not, see . + */ + package org.openintents.openpgp.util; -- GitLab From cf5ef30cbb8249da2d409392fbd2d15215c4f512 Mon Sep 17 00:00:00 2001 From: Fahim Salam Chowdhury Date: Tue, 31 May 2022 11:44:52 +0600 Subject: [PATCH 3/6] Add abstraction on openPgpProvider method on `AccountSetupBasics` class issue: https://gitlab.e.foundation/e/backlog/-/issues/5445 `mAccount.setOpenPgpProvider(OpenPgpProviderUtil.getOpenPgpProviderPackage(getApplicationContext()));` is replicated in 2 different places. It should be called from single place. --- .../com/fsck/k9/activity/setup/AccountSetupBasics.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/ui/legacy/src/main/java/com/fsck/k9/activity/setup/AccountSetupBasics.java b/app/ui/legacy/src/main/java/com/fsck/k9/activity/setup/AccountSetupBasics.java index cc447b3ee0..2a0a95c208 100644 --- a/app/ui/legacy/src/main/java/com/fsck/k9/activity/setup/AccountSetupBasics.java +++ b/app/ui/legacy/src/main/java/com/fsck/k9/activity/setup/AccountSetupBasics.java @@ -265,7 +265,7 @@ public class AccountSetupBasics extends K9Activity if (mAccount == null) { mAccount = Preferences.getPreferences(this).newAccount(); mAccount.setChipColor(accountCreator.pickColor()); - mAccount.setOpenPgpProvider(OpenPgpProviderUtil.getOpenPgpProviderPackage(getApplicationContext())); + setOpenPgpProvider(); } mAccount.setSenderName(getOwnerName()); @@ -392,7 +392,7 @@ public class AccountSetupBasics extends K9Activity if (mAccount == null) { mAccount = Preferences.getPreferences(this).newAccount(); mAccount.setChipColor(accountCreator.pickColor()); - mAccount.setOpenPgpProvider(OpenPgpProviderUtil.getOpenPgpProviderPackage(getApplicationContext())); + setOpenPgpProvider(); } mAccount.setSenderName(getOwnerName()); mAccount.setEmail(email); @@ -403,6 +403,10 @@ public class AccountSetupBasics extends K9Activity AccountSetupAccountType.actionSelectAccountType(this, mAccount, false, initialAccountSettings); } + private void setOpenPgpProvider() { + mAccount.setOpenPgpProvider(OpenPgpProviderUtil.getOpenPgpProviderPackage(getApplicationContext())); + } + public void onClick(View v) { int id = v.getId(); if (id == R.id.next) { -- GitLab From 271daf15ee8856983e0ad2bd7faf503b28d2ddcf Mon Sep 17 00:00:00 2001 From: Fahim Salam Chowdhury Date: Tue, 31 May 2022 15:30:31 +0600 Subject: [PATCH 4/6] let user send non-encrypted email on --- .../com/fsck/k9/activity/MessageCompose.java | 2 +- .../activity/compose/ComposeCryptoStatus.kt | 30 ++++++++++++++++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/app/ui/legacy/src/main/java/com/fsck/k9/activity/MessageCompose.java b/app/ui/legacy/src/main/java/com/fsck/k9/activity/MessageCompose.java index ac466a5f8a..3525680fa3 100644 --- a/app/ui/legacy/src/main/java/com/fsck/k9/activity/MessageCompose.java +++ b/app/ui/legacy/src/main/java/com/fsck/k9/activity/MessageCompose.java @@ -722,7 +722,7 @@ public class MessageCompose extends K9Activity implements OnClickListener, PgpMessageBuilder pgpBuilder = PgpMessageBuilder.newInstance(); recipientPresenter.builderSetProperties(pgpBuilder, cryptoStatus); builder = pgpBuilder; - } else if (SendErrorState.PROVIDER_ERROR.equals(maybeSendErrorState) && cryptoStatus.getOpenPgpKeyId() == null) { // found provider error with no openPgpKey set up, means user doesn't actually configured encryption + } else if (maybeSendErrorState.isIgnorableError(cryptoStatus.getOpenPgpKeyId())) { builder = SimpleMessageBuilder.newInstance(); recipientPresenter.builderSetProperties(builder); } else { diff --git a/app/ui/legacy/src/main/java/com/fsck/k9/activity/compose/ComposeCryptoStatus.kt b/app/ui/legacy/src/main/java/com/fsck/k9/activity/compose/ComposeCryptoStatus.kt index 5fcb1c64ac..36fb97a79f 100644 --- a/app/ui/legacy/src/main/java/com/fsck/k9/activity/compose/ComposeCryptoStatus.kt +++ b/app/ui/legacy/src/main/java/com/fsck/k9/activity/compose/ComposeCryptoStatus.kt @@ -1,3 +1,20 @@ +/* + * Copyright ECORP SAS 2022 + * + * this program 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. + * + * 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 general public license for more details. + * + * you should have received a copy of the gnu general public license + * along with this program. if not, see . + */ + package com.fsck.k9.activity.compose import com.fsck.k9.activity.compose.RecipientMvpView.CryptoSpecialModeDisplayType @@ -156,7 +173,18 @@ data class ComposeCryptoStatus( enum class SendErrorState { PROVIDER_ERROR, KEY_CONFIG_ERROR, - ENABLED_ERROR + ENABLED_ERROR; + + /** + * We want to ignore encryptionSendError on message send operation for some specific conditions. + * These conditions are: + * + * - found PROVIDER_ERROR error with no openPgpKey set up, means user doesn't actually configured encryption. + * - on ENABLED_ERROR; it means encryption is enabled but not all recipient have key setup. + */ + fun isIgnorableError(openPgpKeyId: Long?) : Boolean { + return ((equals(PROVIDER_ERROR) && openPgpKeyId == null) || equals(ENABLED_ERROR)) + } } enum class AttachErrorState { -- GitLab From 3bde91c91e89356065ff18e495e8e1cab8a7faa3 Mon Sep 17 00:00:00 2001 From: Fahim Salam Chowdhury Date: Thu, 2 Jun 2022 13:55:07 +0600 Subject: [PATCH 5/6] on encrptionError in mailSend stage, send mail without encryption issue: - https://gitlab.e.foundation/e/backlog/-/issues/5445 - https://gitlab.e.foundation/e/backlog/-/issues/5492 If errorState found on message send state, send mail without encryption & don't show any message. It is done to improve UX. User still can view the encryption state by checking lock icon. --- .../com/fsck/k9/activity/MessageCompose.java | 5 +--- .../activity/compose/ComposeCryptoStatus.kt | 30 +------------------ 2 files changed, 2 insertions(+), 33 deletions(-) diff --git a/app/ui/legacy/src/main/java/com/fsck/k9/activity/MessageCompose.java b/app/ui/legacy/src/main/java/com/fsck/k9/activity/MessageCompose.java index 3525680fa3..83be6b1298 100644 --- a/app/ui/legacy/src/main/java/com/fsck/k9/activity/MessageCompose.java +++ b/app/ui/legacy/src/main/java/com/fsck/k9/activity/MessageCompose.java @@ -722,12 +722,9 @@ public class MessageCompose extends K9Activity implements OnClickListener, PgpMessageBuilder pgpBuilder = PgpMessageBuilder.newInstance(); recipientPresenter.builderSetProperties(pgpBuilder, cryptoStatus); builder = pgpBuilder; - } else if (maybeSendErrorState.isIgnorableError(cryptoStatus.getOpenPgpKeyId())) { + } else { builder = SimpleMessageBuilder.newInstance(); recipientPresenter.builderSetProperties(builder); - } else { - recipientPresenter.showPgpSendError(maybeSendErrorState); - return null; } } else { builder = SimpleMessageBuilder.newInstance(); diff --git a/app/ui/legacy/src/main/java/com/fsck/k9/activity/compose/ComposeCryptoStatus.kt b/app/ui/legacy/src/main/java/com/fsck/k9/activity/compose/ComposeCryptoStatus.kt index 36fb97a79f..5fcb1c64ac 100644 --- a/app/ui/legacy/src/main/java/com/fsck/k9/activity/compose/ComposeCryptoStatus.kt +++ b/app/ui/legacy/src/main/java/com/fsck/k9/activity/compose/ComposeCryptoStatus.kt @@ -1,20 +1,3 @@ -/* - * Copyright ECORP SAS 2022 - * - * this program 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. - * - * 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 general public license for more details. - * - * you should have received a copy of the gnu general public license - * along with this program. if not, see . - */ - package com.fsck.k9.activity.compose import com.fsck.k9.activity.compose.RecipientMvpView.CryptoSpecialModeDisplayType @@ -173,18 +156,7 @@ data class ComposeCryptoStatus( enum class SendErrorState { PROVIDER_ERROR, KEY_CONFIG_ERROR, - ENABLED_ERROR; - - /** - * We want to ignore encryptionSendError on message send operation for some specific conditions. - * These conditions are: - * - * - found PROVIDER_ERROR error with no openPgpKey set up, means user doesn't actually configured encryption. - * - on ENABLED_ERROR; it means encryption is enabled but not all recipient have key setup. - */ - fun isIgnorableError(openPgpKeyId: Long?) : Boolean { - return ((equals(PROVIDER_ERROR) && openPgpKeyId == null) || equals(ENABLED_ERROR)) - } + ENABLED_ERROR } enum class AttachErrorState { -- GitLab From 2387ddfe85c3a5475de83078a4d5f8d51d783640 Mon Sep 17 00:00:00 2001 From: Fahim Salam Chowdhury Date: Mon, 6 Jun 2022 04:09:06 +0000 Subject: [PATCH 6/6] remove unwanted character from copyright text --- .../java/com/fsck/k9/activity/setup/AccountSetupBasics.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/ui/legacy/src/main/java/com/fsck/k9/activity/setup/AccountSetupBasics.java b/app/ui/legacy/src/main/java/com/fsck/k9/activity/setup/AccountSetupBasics.java index d3e1b809a0..44a6b1984d 100644 --- a/app/ui/legacy/src/main/java/com/fsck/k9/activity/setup/AccountSetupBasics.java +++ b/app/ui/legacy/src/main/java/com/fsck/k9/activity/setup/AccountSetupBasics.java @@ -1,5 +1,5 @@ /* - * Copyright ECORP SAS 2022d + * Copyright ECORP SAS 2022 * This program 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 -- GitLab