diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/FlexibleKeyItemFactory.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/FlexibleKeyItemFactory.java index 3008dd4ac..139b7cb20 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/FlexibleKeyItemFactory.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/FlexibleKeyItemFactory.java @@ -58,6 +58,15 @@ public class FlexibleKeyItemFactory { @NonNull private String getHeaderText(UnifiedKeyInfo unifiedKeyInfo) { String headerText = unifiedKeyInfo.name(); - return headerText == null || headerText.isEmpty() ? "" : headerText.substring(0, 1).toUpperCase(); + if (headerText == null || headerText.isEmpty()) { + headerText = unifiedKeyInfo.email(); + } + if (headerText == null || headerText.isEmpty()) { + return ""; + } + if (!Character.isLetter(headerText.codePointAt(0))) { + return "#"; + } + return headerText.substring(0, 1).toUpperCase(); } } diff --git a/OpenKeychain/src/main/sqldelight/org/sufficientlysecure/keychain/Keys.sq b/OpenKeychain/src/main/sqldelight/org/sufficientlysecure/keychain/Keys.sq index be5b21b48..afa21ed90 100644 --- a/OpenKeychain/src/main/sqldelight/org/sufficientlysecure/keychain/Keys.sq +++ b/OpenKeychain/src/main/sqldelight/org/sufficientlysecure/keychain/Keys.sq @@ -42,7 +42,7 @@ CREATE VIEW unifiedKeyView AS selectAllUnifiedKeyInfo: SELECT * FROM unifiedKeyView - ORDER BY has_any_secret_int DESC, name COLLATE NOCASE ASC, creation DESC; + ORDER BY has_any_secret_int DESC, IFNULL(name, email) COLLATE NOCASE ASC, creation DESC; selectUnifiedKeyInfoByMasterKeyId: SELECT * FROM unifiedKeyView